From 290af6ed38dade0e910d71c8e16a1fd589bba42a Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Fri, 31 Jan 2025 17:01:56 +0100 Subject: [PATCH 1/6] init lp token --- packages/subgraph/src/mappings/swapFactory.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/subgraph/src/mappings/swapFactory.ts b/packages/subgraph/src/mappings/swapFactory.ts index 9546258..66286a0 100644 --- a/packages/subgraph/src/mappings/swapFactory.ts +++ b/packages/subgraph/src/mappings/swapFactory.ts @@ -1,15 +1,16 @@ import { SwapDeployed as SwapDeployedEvent } from '../types/SwapFactory/SwapFactory' -import { SwapPool as SwapPoolSource } from '../types/templates' +import { SwapPool as SwapPoolSource, SwapPoolToken } from '../types/templates' import { SwapPool } from '../types/schema' import { BD_ZERO, BI_ZERO } from './helpers' import { TenderSwap } from '../types/templates/SwapPool/TenderSwap' export function handleNewSwapPool(event: SwapDeployedEvent): void { SwapPoolSource.create(event.params.swap) + let lpTokenAddr = TenderSwap.bind(event.params.swap).lpToken() let pool = new SwapPool(event.params.swap.toHex()) pool.asset = event.params.underlying.toHex() pool.createdAtTimestamp = event.block.timestamp.toI32() - pool.lpToken = TenderSwap.bind(event.params.swap).lpToken().toHex() + pool.lpToken = lpTokenAddr.toHex() pool.totalSupply = BI_ZERO pool.liabilities = BI_ZERO pool.unlocking = BI_ZERO @@ -23,4 +24,6 @@ export function handleNewSwapPool(event: SwapDeployedEvent): void { pool.treasuryCutUSD = BD_ZERO pool.save() + + SwapPoolToken.create(lpTokenAddr) } \ No newline at end of file From 481be0f44eec0e3b96f112dba92850780c4e4ca4 Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Tue, 18 Feb 2025 10:45:52 +0100 Subject: [PATCH 2/6] subgraph fixes for hats counting --- bun.lockb | Bin 0 -> 530472 bytes packages/graph-client/.graphclient/index.ts | 319 +- .../graph-client/.graphclient/schema.graphql | 297 +- .../sources/Tenderize/introspectionSchema.ts | 2745 +++++++++++++++-- .../sources/Tenderize/schema.graphql | 297 +- .../.graphclient/sources/Tenderize/types.ts | 292 +- packages/graph-client/.graphclientrc.yaml | 7 +- packages/subgraph/package.json | 4 +- packages/subgraph/schema.graphql | 19 + packages/subgraph/src/mappings/swapFactory.ts | 6 +- packages/subgraph/src/mappings/tenderswap.ts | 125 +- packages/subgraph/src/types/schema.ts | 191 ++ packages/subgraph/subgraph.template.yaml | 1 + 13 files changed, 3825 insertions(+), 478 deletions(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..c1ec0b97734308c1bd72c52e34a81dbd939ef109 GIT binary patch literal 530472 zcmbrH2SAPA|M+i_*)}30LK106r7cNCQM6Fp>ZaT7-X=w4BqN*5kWfZaMpkAeBP*1Z zEoATYf4_U4_ebCUKYDJ??|(n&dNBX#ur(yqc!9g2&`||H(wAn78jPTcI}JhQ~`B1>aCc#)ZdWVJj*4U|y^p z8s;b9WkOkN$h$P*@nk_h19Q57{0RAuSPvTP1kwwn3dn2lye-JnAQeI8vvLb7m$PyX zNO^dk021|yS;_Ye6NQ3KKcT-r+QS!3Lcxo}LP+5vL1d&*APVP424FraQW%U<7#biD z2_wbfqA*{9Sj-C)Ysc|Jf{_pBi^KvR>({fEJRbbN#F#LVUyO(!eit&Rznm=(5rzsw zgyKklv9=&KQpEQK=h5##aabsJj0fZ~9@U_;JxGB#SQr|~bg_8mzF$UQ4VWGYP ztQRDRi$hS}k(LCM&2qqLIs)58f z*g<1xPn1Zg9SAWCj|z?Rg#ql&mYaaYxb_E$cBr%RC=6zdTRup%Lj}q)KC-M7inVJ) z_!>GD>q)WYk!p;-5|B`oh~rTkf)^7Y^u>WG6boW8pr1e)axYnF+nvcjVDpb4kMRo@ zM2DhZmF)9kR$c~)cKHbe;o3qm?fUl{7A9TmhFQ?C=2^D>(@4rXlJ4hkEaY$3=;jTKQ5L*Jse-Dz~j8@t;g5_3pZaBCkPD=3&m;5 zi-8ZeCqID4>jSa|WE+r^V15Ne1oNsOkL}lh&8RPuFG7rGGLVS_t~=p;u{e$&91P13 z5A%~DbW|P^1RjR-pr68GLILH+3d6*}H#1_!&n>py8<0mk-HjRj!$9KrdIu8w%NQii z6Ph1BQDUDk=#LI2%)FrfItA^Z-+Mr!AM06}ZOZt+2_*IdUmU7eJKv(2{$2p(uyiEG zvhp0*h583sFn)eFXY^=89)@tDv?U|eATJO379i3745){kt`(1`1o9o^QC~D4MtdaA zFKr=&gC`8v76~T7ToZ}3alW5{`miJ=Dq1t`jt7bJ?JN&DiqC zpa=VDiVedHBeh{9Me;!U3q|6{Tkss)+dGue6Rzzi@P~m-dQxqf=hr}DyOAOTLokyU z$`1__`tf*MfkVG*hB5u%Y{&RLgq2S~;(QASb^c*I-Xo}oe)~lEqZ*!2AP^W0G~ivf zXUf5@+VyF=0~0UE!wACoglR{Kf_ZB}AGWs;B*s?|3Q-b}mvgK<3{nyDJ6O4vm5V{5zN4&NZljs@_JdS_@_5jX{X+Jyf_fO|6p-k* zuTNO*P9mPoAJu2dYc~ndKQymx+!(tygG7Dx=Xox0*zR$6rrt>pW*jUBiGI3(>;O`O zl|G^UaeDA9AdmAY3nb3N1ok=XQ^W!M0lYxSV|*5jW7<)KJdR_n@r<4@DDMjS3y|*y zGR})B_XgPs@+#iU`w-Uc0MwWVd2EmNMFLn>!Xt&g3nwu8XMwC8SE4WxKh%#$b`FE~ zaQ^KF|1h5Je8!IBAmt!$2NL5g3JwRacszd}#$G#Lrr%6JV!UY_zh(0wegkU*u@B|| z>Kz9h#uuEgEjJP{$Jy<=HP{x)Tw ze*=BB{)z`0quoAyu|PW(WH3KS0Pza<3G(xYz6}!i`tpN#JZfhoaH!V|^rGAm$oSb5 z>R=owZoT0-+8Y(=U)z2rJ5ELfGh74?0!Xkwh3%z)#~0(Q;qi>&IgX1=_>O*6LLS>O z4`urAH006$dyvO+S~p_D7%mv3ER+kye36I`?{V-e7&gF{fkS^Uf)=#1X9N?U(~!q@ zLSQy)`}u$!aiP9J!pOsHeX?T*YKMo3BG-U_Xm4altsA^W zZ2mf|%{cB(u`&-NwzCB!+TjjT79{QSRKDFmoI|lj~^@&_zB`*pN#uUVF;hMXfhL*`saqbQQ7q#sUI`pIrh_u zX$%(`APS3`6u=XQ2g8!<%ct`J>?5@O!IX+brhaUs0A@3fH*`9~4FZYr?gtY6@5bg+ zXE1S#2Z{aV1HNIZzt0GdVmg@4U9kTM68iB){$fG2AT&}uc_!0e!K}2K#jNKd0pAaI zEd0{0{S1?ts?8;-zwD;Q3meSQh@>hQb>B*x(=NQ}dNXb0cpH=tcC zzrad5hn`~dzG1;(A{ehA^u+ka2>sv+19p%6sNhJkFB~LrA)$4J z{0`*D!Oa7Y*K{+(ecHtM8^bI=ylOVzF@v!;6WTz#Y5lkX&(ZITtn?EE!&?IGP1tb? zi(qX_)E=!Xbnig^(>=mvP=M`If6)1a);-E=f)3nAY~IeiKR&b4Pb`3yna5k1#rP2o zvOCmU1kZ6D8oiC#&m7&sjPC@tyco*ydG1c8UDaL8ypaVd59M@j83WI|Kz`hACf+@u z9kfF~hq0pzNZhB9UCkhm&!hG*?RkR4eQ-7KC{2J@2Pq2@`|naNGd|#cPQZtgz8^oX z_D#?pp5r)-6o$rW2aBRS!S0@r-;~GW^#ExK`K}=6 zDV}>FkM?#uz}V9UBWw+Y*pIz~15K%j$>*G5_@9u+ z_?{_d{PVoX;~7AH7vynV|2OYo)(r%Hk{}efK0NbFOx$!pqF+5gVw}!hX2xq<$fJI` z$I>Zb^39x*u|*$AXFNYtNkn;Fk>AhEtJlw;h;FF1?`iXmuypd81w8c3WsD$u?v$X;x`-(G+_ zJjfS<)Cc*lipSFeDfNKKU%Sua^@IFwkQyMDg6s@373%AOoc4$*Z}XUm{{$%4g>pTR z{XxorM84uYV`mOXY=1T@RnIcxVLY4HXJt!}eW2dGbBsIyQWNrvSQ)^|cQ2T6Z^h<2 zu<}hQ6R)$Z%m9h@Pi3ViNF09#tW;oSHP}--EJ%lB=YgB91ar4-}4VVo;k>! zAhF$vARR&W1~~}iE9eJfkOyI1kpmf_BvmU@p}aNZ-IS$j_e-=-5y7?ww#Pi}Hd3|y z&=X`!s5czyVSO`@*bg>sndjj_leA%f{oj2r-Sg7DZ~gn;aP3IA<%Rt{oL3N}buJt) z>mjXxc2S=RNE{C?DvZ5Bc%K~R&l>`H)DQPcK7j(?$Z(+uZj;5lo?ur8C^tLH^xL?O zQnm5C-GM1rhUd!goCo6*+dXxP*^k7*4>P#&(CWm*p%X}K-#1toC4}-gJ!2S!Jl+@R z9~{4_XBc^d&8LCHexq^e4DDl_@5B1u8DuLp#*X)0rE2d{$|0`=AkmHzkg_1f%yEh*r_SW1L1KRh;3qn~5B$`f$#?3(){o>zM!^~{2YH-Neu8j6 z^y3g)FBfFX+HyEIz{RUSOvnIuj^}Z#Cy3-vLRtHx6rDiT!pC%2Ds@ zK8!zAATd6zK%%~4EvedlS%?7K0lV>>%7<}GzpJ(G$JGDOm+6N)AXR|#hW0Vu(ZLbu zE-%anW)-CK@ErZ>rOmV(DS)9W;_)WvFnkU?NBwDRJI6p`oMYhU3#@lnmx(XjO9W$k zGvGPexkQgCF9(Tv2Ysp9aWViT+9N+es`mY)0eKup1&~KOR3VRX8D_xP<15sLpU%Q~ z>7WPO@u{_r$Fm*C^veR!hxKDYV%*@=8wFwK`9mJ#xzdm+r*`hGb;yx#Pz#9NPMq<1N%CGtOBVD@*K!^AX6-uxV-_{7V?gk%)D9) z661A`eQs*S#6uS(mectv9G;_Jacn($-z|prasO{&&D0NtJoXRWBlU$m`q>R6w%3l8 zA7Q=0elWL@sf`u0VaxD2kjH+^0EzngviVMSOg$Np z?VYAbWxA3ljZl#^xu19<;YL=*4+L@0m5uOnw1KoG*zkj2|!A^_b3y{7_~< z*WQmB8t@FZG2_5`3={WYp#Y~9uK@DcPo3a-N02{V8N2GA*XUf=(7BDyOE;k%^eZ?F zZ*6$IJT|`wWKSq>H;$RN+d$%YY)D@!)I%%g2N{9c)!A!as3J;>UjVX{hY*)nuH^Acm$)z3MBe%2on9} z!-cyKAAWy>-v+fO#f5JXG5$D$>#Cg$^m2)DQyb9#ee)#>XcK<}bGqz&O zpGPsg82)ev_cJr18M|UZqJFwRru)c3sE_3pEO!3_DeQn@yJtw=#kMIP>4%$~ze^EcZo67h@{ZwDiau`>*o=r<++VKR5 z>tEhhAA-bwTAL(Qd#>{b*$48LAd$Zg&#|BUeVB{+qqCTPpx;~eKpvlG zg2cF$LVX-RbT3c)(ZzF^b)N1`r$8R#ItwJ$r~N67XWFOI{gw&XkMB*&F9biZzfPqv z?HmG${hI?4?MMfS{l63>+Bch(Z|5@4pRkhdx7I;>xV|TX#PPaj0n^?ckf>(~o1X&` z+uyg4(VGpjcD$rAG6^K|dSEZwLw1wBVS!9P{HZ^veto-I1BdS;o286&fIP0}8X$4~ z{wQSP`*0Z(Prc=g|FAB>-@(D}DZh?2`u!np z6|>G)uVmWa0rjvSlGCJW-<$Lvqx-O>@EqR@bRU=qd0gM=e(W&l#qmb_D!O;7zy8&~ z52brMS_kR(6pfC%M$C+>tSCM*<)7n!5L#n!Kv|(EH}653hYt@V2O;rJ;wTj&OKT zJDnwS6T2U7`()%}%k-O{QvC|jAHI1S8+~=bh`Fk=r`4}JuXI)~JyY<}(Q5bLTi&`Z zxqS~VxOH#*>HY$_X*%l$bTnCHFivT8wMvJ(S109Lt12p29xh&ZbDqMN%{!!}6>6@z zow##G`)-G~x5}kvb}FB&>mFy&Z*;3R1MS<~_J8=IK((;jk4s+HE5g>=NX4byUbfG9 z_G4YIgsg#{Q)Sh^Uw4omI_5(1@RQrF8Q+V(W9)FYMt_ZJ>;|6~FZi~Xcn8NMPT8%v z?X#Pz-6gd*drM68hL2I5es_oXuxs`%X@xgWcEv4rzaR0*+$lV+%d8V-7Rk<=zDx*? zSChW)?Oan6?s=?6X6>Dqnk5V3IRXDDb7u2YFIt@KtTAe?2!iWf&C(8{(SM8E*x24~S=l9F5o?3hJLhtzKZ^b#* zX{%!St$sdLfBz}6U0O(=u0C1Id`2GYx2D3>wS&WXS;wnm^I!Fu)4b1m$IZE0P1WqY zCogdrKF@F2p2HO-ccbq+T+ww};HA)W=ori8{l*KXK8q1~R&5=*^HR*q>m3K)*_W;0 z>#`;N#b=+}6WX*e$nNg3>FcatJ)g^V>)3imFa7>U5A?Uz*SvgO+4RGN5lc#|UCxx; z5M%~sstgTme>hox)iSG7R}Xk}_%L#rywxp-!80wdc5)~y9(FTXA?Sw*8RLjG5{Gxc|tgfvwh6Rm^Pu zV8E!U!G~|{*}KE4-Q86t$66$`dgk86GJXEn%i?1{ueq4DJQuR?)8>(HZMXGvuNbXd zecknDRbOSb;gh?lSM?}tseW**)Y?khPaDF!MLXn(+By`*9{gY=V`85@phYi7`w`<( zj8|wc>wZ$XWN*o|CDxO6^eU8pvVGWIzc)8~obNT$?uAu*8P6_GU6M*pdFp;@HGf}f zifbQR?Xr_Kv0C>!#TT9mm47UhSIu`84~uWJ(Z{=LtDAGF6JIf}=z0&c=Ck7F%>Ljt zYW@%LSuLHd7KM*z`6QGN`0!M2ucqMQgXy{>+K<06^rWxv`QGnDOK$}f$az$rb<#Pp zspHv`ZG9qonp?G2FuvrGRc8Nw!z2HjmbtFl#*emlxm|oMcj!myTeIU=%^eWBxYAxK z_tL~UYXqk1x4yU?wcT(#Ym>^M&+Y6Vxydc*`C#FViPO4-{$u`YgQup=tx&WrWYhqZ;5WkmJI#pnHRg52x_x_8-A zvwyTqyvzfqVFP^%!R0{59MA@~z8j&h5?VGG$bXe)AP8z82b_ z35oG;-N{Du)mOc+%ghtQGEDtrvK6Q0zLkFb>&7;dG=DGaOG}@>T)8ahQ?RtS*`fsB zRVJ}-SLT$f#&>_aw#N97lxwvnl^^@&Ul4tCL$>AV>k(E>v^N>&{8&^}lJ=>SdXo*# z=?0I!mL=*MWldb{dhl!34*9Ia!Rs}4Uwibp*P|PKg6^8FXrnkJdB?evo7#G)9&6g6 zYvNX#A6=I?2@^-SY>j?)VbQ{+d!AB%d2V}NWV7*HjH1Vt$?e)HXDm7KBl@mQqWjsn zbsujPwckFjz51;)$yap)FZYxlle#_aZ~rUZn7x1=^@1{nrb0E-IYJfmnv;-W^r3qYqP)Bik3@0zk0_vzBw&5Y3-F` z?L9xP%^zvrTkvuEx%?Aeaji}tyP9S=ac75LUBecA+>&0l$86@8qT{Xx&j^w&{shq(`aa>6IPIjLS2$?#zp_ z@8e+NUv(obf98-0Bh`AUpD3T#@3p4yn9&LkN?*!&4AwYixM@JS(}pcyj1FCX?6Xar zH>Z20j(2bG?oaN>w3t#cz@{Ln+)d*_l#SA9dz<;1laHs)bdCDyqGt2i-DNHB=c})0 z2diEl>-Zrsed!^Y<-hXz&+e*C+tcK!IC=XLmspuT*`7fM2PU5sja+Z_Lv{Y@XV;d` zT(Er1y;+M7mh84D@Ec>+?Tegxemkr5*Yd)OPit=mxGp?Dsvx0yL*hUO!PJ_MCZkmc zxIa6-uFpurvsnghoJVyjYQN}Xj${uB0gxZtt+WK+(}Gz~rg1uei^Ww=Fsqr%ciPs(z$bAG`apq1R-7y?dOJ z{9(w;hwld^&yIN++d3#ThX#IJ< zIsNC(+4k-#gN81-l(cx&n$vB}b%uA!wr(rCq-XQXv8&gP*?74m-9Fb>!}aX&xdmIh zzC3z)ukA(GUhP9aM1*V%xANOfo)n3&UbqB zv+JFfTd%A=^xfpd^5DgL&OClI=VxU~SwL`-irj~<*T(EIotmspVp+Vs0#c$F8VJ^4$wSqJX(7I|69R?hsCw;*ini_?m(^O)iJvua{ymp>f=y!H^K#+qjV(^9w3SUzlPyiX zeZchQ_dY$Enl0FDQB>M?)z+O;T%uL)TuryE9$fW(ysAt}vgygz%M>p9uRioW>0OWV zl;ayS;$u2I{n>wbYSbC>w@J;A(B7?-ZT#n{xazFb8UDm6>c|9PAG;o%I`h}R5_s_} zy^3_*M{AlNSmCD-U3q6+Onb|sv9C{3J5Lg>*bKSGf4kSaOWp%-=v^fzlCP3gFMw%Vo9 z$zEiK_snO>+6n1;XeUaTX61yzzFzl7NaaZ|vAD#O4I&R{hC0^Rw zJCOEyhG&Q5b#DJdoAw><*^_!-8u!3`zjl)?3Kvhl{Shpc6RvJku_H_`FSy2c{R_Xb zuD8t!Z4NwZX{L3faFtBOx1k|9=W{M-PI;Ho@#D-EbB8p)yLpqj>y;NhCx-wkNx5Yl~q)P`wthJ5@A8^^J zo_$kefYZ~R9vb~D-ft`#-quYtE3%+ZTnn>)2dF=3{il8mU!m|+Hh5-MqR;-}4$ZTs z8ZMN-J?l}Y=eY;oO-Pum6GP{NnqpgFr}Tj0;mc>=IxltYw84$kJ0Gvu_S&}F>1Lwp znrA5!dyn~4ZXn-VD#LbizQxyfU%JK+PZdxlPV(>muv1#c%#T zH{q@IHR@_BJ9bfbnfE#B%S_kjOY+-%c$X{lEp26|qjKgi-%mZEX|mTi+I9Sq^nr_a z=3SJXs-b>AqcGEars5Evi`lB{_PqWUv%z>)n47_Uah6Q_)M7IVX1jrml1}u zcBXf#8DU@6t81yvw&WKBdiM38{a@+0J#%i3YFnN(-P5Yy%jcTQdEfLLWG5XG4;}qg zN%z3JcE*)T&w2-TF?7woxVuVa*yixIMbUHS>5u7S+wtDYOWn_2pWl4dfGJ1MoxH#C zVd;*_F)erZQF71k+&y%;e76Pt$J{k59~+$PdZc@|kizMC(dy573bs_~wz4vxROS~y zC$Q%n8B)xI5_go*3n%uBKp^Fa1{>SDE*U&JC|mC4{fNe(p+wr)QUm@0WHC zcfIKG#9cIP%Zl|cWV%fp9PO^(WkI~t+0quzG#s4Ho;&IyJSqM2$|B7-cV3BAUhgk= zvfcVTwaUQVBzwXFC8?FWy=;24Ub(hfws&a{g$eO?ukxkJ$kh6=quxtm3CP{GrYCbCn)tM-2Kl*2Z$h$l&Hp?Gp|xG%NjDl63#+ z4;g{mp1grAN+Wb={igM!Tz*ifa=YR7n@d;4Z3w(9++X$HZ|}LQ`ZP|z9Y}fSJ~l_0 z+M{)a?j6W~x<{C$I6gRdrqo*M4?3UFx<`3qC!dGyZTMGpQ#}@ry819$ZOxTaOC~7a zIX|oG)4cqNV5 zmf~sm)pE+m+jJ8@80Vbq!PTldK5t+BSA zTi|g@UvA_6_urMjY-lnlVcu4!7iG&fezsn`e@D>W^3)tNaq=|vXPG@Hp5_bJ-_(nL z_5JKHzm-*9M@OtVkla!#v`M5?|hYktw2c+h?8PfDxI?+JBS^ zA0i(zUsYe`pjYLDq$ww7?`Zv4S#5cJ{z;2q1Lep(W2px(q#be;c3$w_;xp;ko;P%! zG**3UdM3D8=O^njAK3Nyd_2c!hQ}=*n~f{?WfpBdwPwbP%^AAu9KUa#c;!&hh{HKo zX}r?-Q}m9Qf22%)%jtf-j=k|8F34OV{mO1nw9I~k*xh@^E-6%=@_72MB`06k_cJET za*bm<{Y$Ifcs^gTq+KbElVlCG$`8A*nYY#u?R(w3$0W_Htsg$*?g?J>&h@1|epslnTF-G}6T=~}TUas2_B zcP1hqZ}Se>F%wls8m)C}eg65=)vHJAoE%}4ZnV%_@ODxAHjhVWCfgnFbvko&?@obD zRX>Nk+&)}Ah3>JeN4k!5T(I=0!Vud^1@o82&jY8-ZfRn;;kk>0#q)v#!q*-&x<~hl3rxH#LvfjP}_5(jK?QrTqx4FD5|s`LVjIOvQ9fDTPB-% z;>?S&F`HgQe-GCCwKHsa!r{@0rpM>p{^ab{VQOWI`+h@J$DOX|JgI!!lOy}jFPbdh z^4{pKHHW;m)O3HgCS}X3awqR&9nXhmjvtUTH-FWyGP{;JFQ*r7>Djq`AD=t-&dt55 zvaDCd(I|n=Kmi z;`5vzhORsB9Bj&)zU98cqy^&hH>uu+o{6eF11Gl~jdszG~?NRxS0f+Wq4(KXfm=r$m^xb=_dfat) z9~Tj3x$B+h(pwf=#}3wuS+}fAZA|H2H3!Q;`=q-A-@pE%)brJ_H49uue!D$q`8L(` zgWc5o+7|5oWc=>c&TBc>;a=IAw6m%aAqQG7usnRuZrzDzh3nLQ1r47zM0(2?gBiLlw3DL__mZ}2 z9%2~KWA&Famq*+)>YL)Q-#4X;>%RSmhL^+~U3?{O!kF~MN8|kS_GS&aF_51+%cp#8 z2bm$Iy3;qDPtDnIa5OJ>?)EEZrtxBrwtMoOr=9iX#jrQWA9PLMHGImo-9IDSyD14} zryFTodF$sG&aN~%tEqI&XeEDvz>TfH+aeMMVr5Mf7tTrV*}sfy)p`8(seAF1hz02ZmyOIbbq-xxyk5lX$Q5I zcX@SSS#FT2;`+lOM!oMJoKo=DxP0nKH5lxj&%lV{j z^y$1`G~$l%LeK5fCzP!iec{c~2i9`Ej+xn9(h<-;W$g)pq3OPK!C5J#ijmn*zvk53 znLDTXxS{q+OKrmLeeW__{N%8Q*PzR~s#f_EZY*^@|Kt3)Q?{QU(0wo6^U}R<{rleO z?tN7<^S%6+{)nnJD0?15>)e3hk3a59>eJkHHeWt)-`*ro|Iuz^heciOwcyT(rF++{ z(TG)Pt)_aXu$$*uaogZ=rrFPRZG>&wW=*Sk9%tszenY!Sig!k7IqZK@d}oEowR^9i zPx}lk-dfN3G$Qqt-oqXN_R)LyZrwR8poikvpygR%`^M-k-BVssoR<3hewI;U&9{fQ zor{DoyLj&wW?wtk=4ks4y=U^Trt6Qgc`Nny(b334d5xvZ)7Lj0)^BH*F0Cp%yoq0C z9ML=^t;#X4DD$4&qCgs#nTr*V&)~(!e~zqieU@@yR?6d?FJ51TeIGTsv_B?gRp$IV z0-KfkOKpx?8nhkc@9?YsK1b21`h(P+ACY;*0ZPAA^a43c^i zWARE*7`&*z!NMHt!^XkkC6*QEjwY|k%iDH;vVzgB_X|T8UpN)_VBohxL+7Iup_$Y0#EY;Kuu*C~B&^>{h5Y|w^d zu`->fEqtw|=vGx@u+z5x^1yLAV~<>E+LP=gdlq^=Pm9&mUSslWcKd9Z+tRe(tGS#M zt-buvyVNmjPfyyv^25W_Ruivhym!I9p1mj-QQ?U8MW?VwmWjd_o?TdqETuk+Jp zeKN|!y^X&GU)`H{uf@_8Q>LGrbYq9j!f&Ir zD!PeVs03*yo62cEe?C8YP>`T7o;1b@4DD2{vHYOPHO9@m{g9+}f;XiDKis zIwuD=Y5hI$#V+~XCpX!T>D}$d%Vsk?H?+I9H#hT;YuKpfWg!a^7 z;!5QY?{8?>o%uPmZ0zVyrkB7sQW8};u>i_v`Dk}SV{nY@=4-{8?{Y8e^x{XUkBShjvwM-Zd3^O&t3;0@i8@(Dcg_Xf%|2|n z{Oj!uSJ^Foeb&hqQ(pC;?uj0~2#G<^H!XH)5YSJEeMk8j_vU0d~UJI&61bo~77 zJvDb8?`S~xNHrA;ALs1Rn@P*rcg*E*(&E;s=_K|D)m~QdV82@2u>e_C%zb6h{ zv^Bh4&I^vec z*d(_DQu)toM!7G1suVoBm6qptrSsYcmxV-KP)UoJ?46~cUehh6?b6=U_^vfhpPhU6 z?~%WHT*p?5hPpbfl5Wv^#%6{8fgMA6-A1)`kG{2~+uX46Ay&D8G43u8GJ}@+>~^Db zVoT|Z0i6f^3QykdJMfslxyiIK%QSkOnM#4lG|S}5Z`!Tv8-l5 zL|*cqL*v@!%F9ce#^oiL47PTAv3u?Khf8eMZ7p~D;N&Q5y0Gai_i^?KJ}*Zs-h1K0 z#n*Ws%nNf$cT{NI<++--UU@~U?YScd9`0M6s;*Q1ZS30#$~}2Q>3nD1|M9ErV6Arp zw@%L_c?SQkR@CG^Vg7T1|5}^gU9qxxLT;%tJ$Fm6Yp({`x!PMz0=_JSxcU` zZ+CeX-N)9y7oq!I&ohQD)ec`?(ETp0dso#ipIx0Xb5!cqX$CX(r#zi>S!dtFSxQl| z-fO!(?&qeqxg(_g%Qvo66mO|$EjLuz^bmlqrvv9EJWClwi` zh1OGZR+X81UJn`{xk9Qe;9joE?j-u1QQE>o-Ndnj#jQ@!=HI7>Z#f`7-(EFlbhX7j zr@q4rzRppUui3a~osu)%AJcuL;77JemqF7$WcW=;*fb(+w7$v?jmdiPb7=kV<)S+6X z{Od*+s*~QX(0W;|b$!*I*6tIje!PM9!vL#6$H{K;Bj8JXVpGffVYIKL{-S=e&+b1e zIya#k^;3O4O=pWYw7R|ZRAP0-XjsuSY3Orm>v+K+aq+IH;mv1~QEH!U&z zwXwgSVBq!Evy-x_HYw5ml*TjdQ|W%|?x`NbJhE56r+iS#g_6TFmA)jMwR9d{Abm~d z=acqk0drjvBkt>1=ymFN*0J444Wqa3wc8!kKl9?_vbZDKHxGJ!`mjH{=Ue?Y_jVOq zG>crkC)kJXxAdD$;RTuBZ1MbM^@E|`JcnGj+IBN6HK0Yjr;XS02gjC6k6t8>Hs7D; z9~)>f@0ZYG$H3E;CztR0wR%U@&7boHH~VdRvh?-0gii17sq`~^&bKW7cH`zjk!g4?7+}W-9 zU-PoG56?2yJ2h|d<;MeT@~;fvlh(=QS`crVrOR}K1@!wv%ve8xWu>B0!BJyjN2z|c zuYYtttiRi@|FKgsnZKT^eZ&w@tjy5V}~)|l88?Q-UWEni+#W~5nlzo1MsLD z+o1A>+M#-VLFp)#M@CZrrvQ)tK9M*uhf^Z`2kY_Z2bVW85qasT}U-V}I@8@@jzjo%;$7~0R(ZctI1$o>f6(S9t%xzDv7 z;&%d%?@!DlPv!9SuZikCsbfEu!EoS|h*yI_GYItK*x?#GR6u+ffL5&iST3pmyMf2} zOA@?6Id+5a4P+`j;d|GtTHBHmq*$8!dr z@{;P`20YF`y|1oZ4Q*A>H{DIKgk5unZl6aMNO#H}hD*qEl15f8KER%HqVcQ=5wKY-N_Q;~BbeY=3i`A_}E zbqo>z5O^!rer!When^Mk?|VFNq4)C~cSzWF@Bgw`z4(}hH8xe*ngPF z4<`5L|C0VB;Bov?{?Ek!KB4;Mz*_^))o*Hr_zvBe`Gk$$xv%=&?K zu??<15bp~7K+uopjzMf2AR0`>rvOj(bJdNF6MqVLe1A4+P~-nrApSe>xPDTeYdch5 zzbC_UjXPOE{8Zra{UM3(*aq>3S)S{-udn|r@EE_w+OOY>@gL*Hb?nx)Ukp6@k7bSF z_pthrl_UlfzbC-s`i=3&HmDrF{xwlOeGO*+MEjS&LUkSz9}PUlAN5O;h~EV~jUTRK z7xfVT1$b-FPkF9=K=p_AX4XIC@Wa&);->?T>$eQB;0NbKd@oHN&-)+vO~8-&2mT}Q zw*SDJ^e*r&5aGpcNn`trU7aYI%k+lEAfyeb9@7=kwQ1!p@ zcMy0Szi3Zm_)oy&`vc=gA8fy&ME;xhWyUX!+ZGLh>~rE1fk*wANBvxVAie;21J-_Q z8r$HKi2uymPkkq;e(QeB`i1iklcanq@aRA4mn4z>CBUQqsF&7YF6|Ki19%)iXg{_= z+?^6cVqo;%=&53|KIrAz~lW( zW7ltOxIFro^>Yc!)A&=M05u>f{x^Wf`#a>(2TA9D8~E|SiuE7Ij-=yfH1K$S!0{u= z7$EyofyelxUP;Cv@ppl@10Hbv-(%#Qh_}>Z`VT?8KX1jc1>z3^KOFQ6>T%nlToKB* zMPH0@%5D$2|4qa%ki=%dVVR`!XDIOhvVTYdp3aXr|IiLDiR?cFeBJvuE-cm|{tc_2e5dk; z+M#-VK>5F%--3XLF05TYP$$=UMEWND=M84{QyVB7N@RaF@VI`X|M;PDuDmQ< z+Kgp+WUvh`iS+mbkMD2N&-EQf{0`u8{34HiFRA{Az|;8U8hiAQ^!J3#n^hhA@fnvy zydUtmf5SYE9ZBt90sJW7F>dscME_&p@%=&Lmh5V%4XS4Vn;#q2f3EKyY@7Ilb@;~k z{{wh%p|<}Uv;G>v<_Y_s#vNB5$o?SUVF{|$k9|k&aE;$a;O*=1vJHXkbJAbU@|Z{6 zlI~vzm^1oe8ImZGej9js;`a_{x^P3usoGXy8g?<;%&vo zpV~m#P$K`GfT!_~zEe3@ehKhyb@WSW|5M;`{pLFE$S$&Tuobg^rExE5|IGs)&p)(p zmz2K+JkCE!)?W01>{lH8`~1sQcU|5Zczl0g+$D)2>7UH<#B#NP_*~$}fPUn#jM_mP z|CWgFY|V^ct{k;Vyg%@;gw&27Y=g?F-k&7Zy9hj)|0RA7 z@K(TMo~!NHD)B|Y)B6j{xz0o4e*jPWFXZVS1;76-5kGJ!^Z(Btt^M+UgX%mZz65xj zKNP<@RsQ;w_%5*dME@Jhj|Lv+54OkEcQlOjr?EV(zkfBl&O_p#0FUFB?B_ZLh#xTQ z_wU!(Jhf9t)&KdG_z2)>|AZ{(9>XuQx^{jr3Jtj%VPbKiQ{$QJu#!m?rf3lxqSZhcF{~`N_15f%9q4Eas z|LQFUelR=!kl{LyNzY~AasH6s6i2T5o59PM>~Bo`%z(%7hb(;>(v8o_{>i}8{Amg0 zo1rd(jCL;PsC{DC1< z>p#VSOB2Lz0N%C^Pvs4@LG>O1Z(WCPh@TL(U z?)ahdKXFt}^`6w>8x#LtF3kFcY-4!-Kl1D9@#Giz`6o&BZUPT?M~T#LRQ@N9%Bh~> z=-jA@0S{M5|E<5c260Km{{$X?e?i+@!H3ElYJ=+Oxia&w zISWX-eun{%>lflG@M(izI3&`a54_$#*#EeWe$;+?n$u+RnA_P!;hpz+18Lr!j!f z8%o4q0UqC*@m)Q6ydnR<^MQvWP_6xq(Vz8?{5#O@Xf)e{6$GqIgA2WcEMkw=8@l)t>?UFz}zokEHx_;A#KKb?ktd|GmFL`2YL+ z6F%dT$o~t#Y4G&UFt% zyoWFI{-be^^MFetJ`H#qHhxql3D5Im_J0^RY(r2W?iHvTw&DgKh$?+3gU@YHuQXat8udNP1V|1nQ(aKQiT|NAVDEPf=N|J^1r z{fB*zi6oQz^MA?y1HjvW{m9||QBwXp%VXRcM zB^^JnfXDGi{*Y|Q2dXz9koo$4Fcvr^;-x~F@q_;3_>nYzqk#XH^WS>lt-*d8yJS~GPEfsS)_$rlY5X<9 znE8wCq3;+6E{XKd2Oj&6^5_SbMD=e0Z^inLoTTyZ9RB0{z}wdGU()#NNBr;kK~nppfyet>^auN{2ge4;|GmH)vG&7zm~$e& z8hHHsH3ab;z%>!CE@IyQIPP1*N10;-#Jd5H{f}|SHN;v%J{5Ri5((>0UmB34{}S-_ zz|;JfbpEJ{fB*d-jy*}|zYEJFOExuNdhKJXn*uzZA86c@Y^V+5i-GUY#t+LRE^j<*`k!eP369G4Qm0ATMeB6#ko^jA|9gK!_BAAlcVu~rA6FZQp9eg?|GD0KkX^)|1|Hvk`0nDW8`~hh)#Ts% zM{1jkB;Esf)Q@@8&(#LvR|9YO5Bv|7r}-nP{sB{dpZ~BA$*zWCK=s0aHv;>Sm2ZUq znZOSMp6tdw1eZkmpRx86PvfwmHi+*P&+LCNPh}0U_?+tc0B^$fAC{3F4Yfi1THtlq z_#rE)|E0j|0goKc0cw}4{_nu!_$9k(9C76h5*Ys*d;by&eBJjK*}+wR9`O2X{Lptv z_b-oG`_b>l^k28Bzxy9!!1X;q{p1h4Rh{@_A96{=9|V3_9bTOa40VX-O=IGZ7>*$| z{K6p-ZwoxGUxY~7fAPSZvGzA+{V4?==O5}tUQ+!sU^%V7$V=LProh*oKa%Pf17COi za(xd{{I>ueT3xT%*|G9GH7}?)+*6-h68Z&-8fp-A?WIwgvkR<(^ zfyea|?dLjnux;Wi>+onl*EkU0X7=y<505(SqK>~M;?Dt(^G}AY%r%C@tIqko|KZA_ zD&i*skNuAK38jC#FM0_Oh^#0=7_o##T z9N_8w$#w5tmwyDj73+W9a{T_cMEWD<{{H)O<-Y;-o)Lc#c&mTV{{?tc;IVl;ztK3x z{NEDkH%MXTFV>Z03=$sYxkwf1l?Z08bTe1DmHFl_r z?485%nCI$yUA_o-Jb$Cz3iyCyBK;qM$M_+}_3VaqiPvAi?0>P0>)5Ny2Lq4qPb@

fK6Z_CM%5#z4~Xud(Rg_;BFuz<$zS$Hc#WCHoK5 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 U@OgK!`1xae-^N!{|3Cl#1!n_$(*OVf literal 0 HcmV?d00001 diff --git a/packages/graph-client/.graphclient/index.ts b/packages/graph-client/.graphclient/index.ts index 36ef91c..b1c735c 100644 --- a/packages/graph-client/.graphclient/index.ts +++ b/packages/graph-client/.graphclient/index.ts @@ -482,6 +482,8 @@ export type Query = { swapDepositEvents: Array; swapWithdrawEvent?: Maybe; swapWithdrawEvents: Array; + swapLPTokenTransferEvent?: Maybe; + swapLPTokenTransferEvents: Array; swapUnlockBuyEvent?: Maybe; swapUnlockBuyEvents: Array; swapUnlockRedeemedEvent?: Maybe; @@ -815,6 +817,24 @@ export type QueryswapWithdrawEventsArgs = { }; +export type QueryswapLPTokenTransferEventArgs = { + id: Scalars['ID']; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryswapLPTokenTransferEventsArgs = { + skip?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + where?: InputMaybe; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + export type QueryswapUnlockBuyEventArgs = { id: Scalars['ID']; block?: InputMaybe; @@ -1128,6 +1148,8 @@ export type Subscription = { swapDepositEvents: Array; swapWithdrawEvent?: Maybe; swapWithdrawEvents: Array; + swapLPTokenTransferEvent?: Maybe; + swapLPTokenTransferEvents: Array; swapUnlockBuyEvent?: Maybe; swapUnlockBuyEvents: Array; swapUnlockRedeemedEvent?: Maybe; @@ -1461,6 +1483,24 @@ export type SubscriptionswapWithdrawEventsArgs = { }; +export type SubscriptionswapLPTokenTransferEventArgs = { + id: Scalars['ID']; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionswapLPTokenTransferEventsArgs = { + skip?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + where?: InputMaybe; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + export type SubscriptionswapUnlockBuyEventArgs = { id: Scalars['ID']; block?: InputMaybe; @@ -1504,7 +1544,7 @@ export type Subscription_metaArgs = { export type SwapDepositEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; sharesMinted: Scalars['BigInt']; @@ -1528,14 +1568,14 @@ export type SwapDepositEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -1626,7 +1666,7 @@ export type SwapDepositEvent_orderBy = export type SwapEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; fee: Scalars['BigInt']; @@ -1650,14 +1690,14 @@ export type SwapEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -1745,6 +1785,140 @@ export type SwapEvent_orderBy = | 'SwapPool__treasuryCut' | 'SwapPool__treasuryCutUSD'; +export type SwapLPTokenTransferEvent = { + id: Scalars['ID']; + timestamp: Scalars['Int']; + blockNumber: Scalars['BigInt']; + from: Scalars['String']; + to: Scalars['String']; + amount: Scalars['BigInt']; + SwapPool: SwapPool; +}; + +export type SwapLPTokenTransferEvent_filter = { + id?: InputMaybe; + id_not?: InputMaybe; + id_gt?: InputMaybe; + id_lt?: InputMaybe; + id_gte?: InputMaybe; + id_lte?: InputMaybe; + id_in?: InputMaybe>; + id_not_in?: InputMaybe>; + timestamp?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; + from?: InputMaybe; + from_not?: InputMaybe; + from_gt?: InputMaybe; + from_lt?: InputMaybe; + from_gte?: InputMaybe; + from_lte?: InputMaybe; + from_in?: InputMaybe>; + from_not_in?: InputMaybe>; + from_contains?: InputMaybe; + from_contains_nocase?: InputMaybe; + from_not_contains?: InputMaybe; + from_not_contains_nocase?: InputMaybe; + from_starts_with?: InputMaybe; + from_starts_with_nocase?: InputMaybe; + from_not_starts_with?: InputMaybe; + from_not_starts_with_nocase?: InputMaybe; + from_ends_with?: InputMaybe; + from_ends_with_nocase?: InputMaybe; + from_not_ends_with?: InputMaybe; + from_not_ends_with_nocase?: InputMaybe; + to?: InputMaybe; + to_not?: InputMaybe; + to_gt?: InputMaybe; + to_lt?: InputMaybe; + to_gte?: InputMaybe; + to_lte?: InputMaybe; + to_in?: InputMaybe>; + to_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_contains_nocase?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_contains_nocase?: InputMaybe; + to_starts_with?: InputMaybe; + to_starts_with_nocase?: InputMaybe; + to_not_starts_with?: InputMaybe; + to_not_starts_with_nocase?: InputMaybe; + to_ends_with?: InputMaybe; + to_ends_with_nocase?: InputMaybe; + to_not_ends_with?: InputMaybe; + to_not_ends_with_nocase?: InputMaybe; + amount?: InputMaybe; + amount_not?: InputMaybe; + amount_gt?: InputMaybe; + amount_lt?: InputMaybe; + amount_gte?: InputMaybe; + amount_lte?: InputMaybe; + amount_in?: InputMaybe>; + amount_not_in?: InputMaybe>; + SwapPool?: InputMaybe; + SwapPool_not?: InputMaybe; + SwapPool_gt?: InputMaybe; + SwapPool_lt?: InputMaybe; + SwapPool_gte?: InputMaybe; + SwapPool_lte?: InputMaybe; + SwapPool_in?: InputMaybe>; + SwapPool_not_in?: InputMaybe>; + SwapPool_contains?: InputMaybe; + SwapPool_contains_nocase?: InputMaybe; + SwapPool_not_contains?: InputMaybe; + SwapPool_not_contains_nocase?: InputMaybe; + SwapPool_starts_with?: InputMaybe; + SwapPool_starts_with_nocase?: InputMaybe; + SwapPool_not_starts_with?: InputMaybe; + SwapPool_not_starts_with_nocase?: InputMaybe; + SwapPool_ends_with?: InputMaybe; + SwapPool_ends_with_nocase?: InputMaybe; + SwapPool_not_ends_with?: InputMaybe; + SwapPool_not_ends_with_nocase?: InputMaybe; + SwapPool_?: InputMaybe; + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + or?: InputMaybe>>; +}; + +export type SwapLPTokenTransferEvent_orderBy = + | 'id' + | 'timestamp' + | 'blockNumber' + | 'from' + | 'to' + | 'amount' + | 'SwapPool' + | 'SwapPool__id' + | 'SwapPool__createdAtTimestamp' + | 'SwapPool__asset' + | 'SwapPool__lpToken' + | 'SwapPool__totalSupply' + | 'SwapPool__liabilities' + | 'SwapPool__unlocking' + | 'SwapPool__volume' + | 'SwapPool__volumeUSD' + | 'SwapPool__fees' + | 'SwapPool__feesUSD' + | 'SwapPool__lpRewards' + | 'SwapPool__lpRewardsUSD' + | 'SwapPool__treasuryCut' + | 'SwapPool__treasuryCutUSD'; + export type SwapPool = { id: Scalars['ID']; createdAtTimestamp: Scalars['Int']; @@ -2126,7 +2300,7 @@ export type SwapPool_orderBy = export type SwapUnlockBuyEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; unlock: Unlock; asset: Scalars['String']; @@ -2153,14 +2327,14 @@ export type SwapUnlockBuyEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2308,7 +2482,7 @@ export type SwapUnlockBuyEvent_orderBy = export type SwapUnlockRedeemedEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; unlock: Unlock; asset: Scalars['String']; @@ -2335,14 +2509,14 @@ export type SwapUnlockRedeemedEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2490,10 +2664,10 @@ export type SwapUnlockRedeemedEvent_orderBy = export type SwapWithdrawEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; - sharesBurned: Scalars['BigInt']; + sharesBurnt: Scalars['BigInt']; SwapPool: SwapPool; }; @@ -2514,14 +2688,14 @@ export type SwapWithdrawEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2550,14 +2724,14 @@ export type SwapWithdrawEvent_filter = { amount_lte?: InputMaybe; amount_in?: InputMaybe>; amount_not_in?: InputMaybe>; - sharesBurned?: InputMaybe; - sharesBurned_not?: InputMaybe; - sharesBurned_gt?: InputMaybe; - sharesBurned_lt?: InputMaybe; - sharesBurned_gte?: InputMaybe; - sharesBurned_lte?: InputMaybe; - sharesBurned_in?: InputMaybe>; - sharesBurned_not_in?: InputMaybe>; + sharesBurnt?: InputMaybe; + sharesBurnt_not?: InputMaybe; + sharesBurnt_gt?: InputMaybe; + sharesBurnt_lt?: InputMaybe; + sharesBurnt_gte?: InputMaybe; + sharesBurnt_lte?: InputMaybe; + sharesBurnt_in?: InputMaybe>; + sharesBurnt_not_in?: InputMaybe>; SwapPool?: InputMaybe; SwapPool_not?: InputMaybe; SwapPool_gt?: InputMaybe; @@ -2591,7 +2765,7 @@ export type SwapWithdrawEvent_orderBy = | 'blockNumber' | 'account' | 'amount' - | 'sharesBurned' + | 'sharesBurnt' | 'SwapPool' | 'SwapPool__id' | 'SwapPool__createdAtTimestamp' @@ -3824,6 +3998,9 @@ export type ResolversTypes = ResolversObject<{ SwapEvent: ResolverTypeWrapper; SwapEvent_filter: SwapEvent_filter; SwapEvent_orderBy: SwapEvent_orderBy; + SwapLPTokenTransferEvent: ResolverTypeWrapper; + SwapLPTokenTransferEvent_filter: SwapLPTokenTransferEvent_filter; + SwapLPTokenTransferEvent_orderBy: SwapLPTokenTransferEvent_orderBy; SwapPool: ResolverTypeWrapper; SwapPoolDay: ResolverTypeWrapper; SwapPoolDay_filter: SwapPoolDay_filter; @@ -3897,6 +4074,8 @@ export type ResolversParentTypes = ResolversObject<{ SwapDepositEvent_filter: SwapDepositEvent_filter; SwapEvent: SwapEvent; SwapEvent_filter: SwapEvent_filter; + SwapLPTokenTransferEvent: SwapLPTokenTransferEvent; + SwapLPTokenTransferEvent_filter: SwapLPTokenTransferEvent_filter; SwapPool: SwapPool; SwapPoolDay: SwapPoolDay; SwapPoolDay_filter: SwapPoolDay_filter; @@ -4033,6 +4212,8 @@ export type QueryResolvers, ParentType, ContextType, RequireFields>; swapWithdrawEvent?: Resolver, ParentType, ContextType, RequireFields>; swapWithdrawEvents?: Resolver, ParentType, ContextType, RequireFields>; + swapLPTokenTransferEvent?: Resolver, ParentType, ContextType, RequireFields>; + swapLPTokenTransferEvents?: Resolver, ParentType, ContextType, RequireFields>; swapUnlockBuyEvent?: Resolver, ParentType, ContextType, RequireFields>; swapUnlockBuyEvents?: Resolver, ParentType, ContextType, RequireFields>; swapUnlockRedeemedEvent?: Resolver, ParentType, ContextType, RequireFields>; @@ -4097,6 +4278,8 @@ export type SubscriptionResolvers, "swapDepositEvents", ParentType, ContextType, RequireFields>; swapWithdrawEvent?: SubscriptionResolver, "swapWithdrawEvent", ParentType, ContextType, RequireFields>; swapWithdrawEvents?: SubscriptionResolver, "swapWithdrawEvents", ParentType, ContextType, RequireFields>; + swapLPTokenTransferEvent?: SubscriptionResolver, "swapLPTokenTransferEvent", ParentType, ContextType, RequireFields>; + swapLPTokenTransferEvents?: SubscriptionResolver, "swapLPTokenTransferEvents", ParentType, ContextType, RequireFields>; swapUnlockBuyEvent?: SubscriptionResolver, "swapUnlockBuyEvent", ParentType, ContextType, RequireFields>; swapUnlockBuyEvents?: SubscriptionResolver, "swapUnlockBuyEvents", ParentType, ContextType, RequireFields>; swapUnlockRedeemedEvent?: SubscriptionResolver, "swapUnlockRedeemedEvent", ParentType, ContextType, RequireFields>; @@ -4107,7 +4290,7 @@ export type SubscriptionResolvers = ResolversObject<{ id?: Resolver; timestamp?: Resolver; - blockNumber?: Resolver; + blockNumber?: Resolver; account?: Resolver; amount?: Resolver; sharesMinted?: Resolver; @@ -4118,7 +4301,7 @@ export type SwapDepositEventResolvers = ResolversObject<{ id?: Resolver; timestamp?: Resolver; - blockNumber?: Resolver; + blockNumber?: Resolver; account?: Resolver; amount?: Resolver; fee?: Resolver; @@ -4126,6 +4309,17 @@ export type SwapEventResolvers; }>; +export type SwapLPTokenTransferEventResolvers = ResolversObject<{ + id?: Resolver; + timestamp?: Resolver; + blockNumber?: Resolver; + from?: Resolver; + to?: Resolver; + amount?: Resolver; + SwapPool?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + export type SwapPoolResolvers = ResolversObject<{ id?: Resolver; createdAtTimestamp?: Resolver; @@ -4167,7 +4361,7 @@ export type SwapPoolDayResolvers = ResolversObject<{ id?: Resolver; timestamp?: Resolver; - blockNumber?: Resolver; + blockNumber?: Resolver; account?: Resolver; unlock?: Resolver; asset?: Resolver; @@ -4181,7 +4375,7 @@ export type SwapUnlockBuyEventResolvers = ResolversObject<{ id?: Resolver; timestamp?: Resolver; - blockNumber?: Resolver; + blockNumber?: Resolver; account?: Resolver; unlock?: Resolver; asset?: Resolver; @@ -4195,10 +4389,10 @@ export type SwapUnlockRedeemedEventResolvers = ResolversObject<{ id?: Resolver; timestamp?: Resolver; - blockNumber?: Resolver; + blockNumber?: Resolver; account?: Resolver; amount?: Resolver; - sharesBurned?: Resolver; + sharesBurnt?: Resolver; SwapPool?: Resolver; __isTypeOf?: IsTypeOfResolverFn; }>; @@ -4327,6 +4521,7 @@ export type Resolvers = ResolversObject<{ Subscription?: SubscriptionResolvers; SwapDepositEvent?: SwapDepositEventResolvers; SwapEvent?: SwapEventResolvers; + SwapLPTokenTransferEvent?: SwapLPTokenTransferEventResolvers; SwapPool?: SwapPoolResolvers; SwapPoolDay?: SwapPoolDayResolvers; SwapUnlockBuyEvent?: SwapUnlockBuyEventResolvers; @@ -4395,7 +4590,7 @@ const tenderizeTransforms = []; const additionalTypeDefs = [] as any[]; const tenderizeHandler = new GraphqlHandler({ name: "Tenderize", - config: {"endpoint":"https://api.studio.thegraph.com/query/45970/tenderize-v2-mainnet/version/latest"}, + config: {"endpoint":"https://api.studio.thegraph.com/query/93675/tenderize-v2-arbitrum/version/latest"}, baseDir, cache, pubsub, diff --git a/packages/graph-client/.graphclient/schema.graphql b/packages/graph-client/.graphclient/schema.graphql index a9d5613..fe2ab62 100644 --- a/packages/graph-client/.graphclient/schema.graphql +++ b/packages/graph-client/.graphclient/schema.graphql @@ -890,6 +890,32 @@ type Query { """ subgraphError: _SubgraphErrorPolicy_! = deny ): [SwapWithdrawEvent!]! + swapLPTokenTransferEvent( + id: ID! + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): SwapLPTokenTransferEvent + swapLPTokenTransferEvents( + skip: Int = 0 + first: Int = 100 + orderBy: SwapLPTokenTransferEvent_orderBy + orderDirection: OrderDirection + where: SwapLPTokenTransferEvent_filter + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): [SwapLPTokenTransferEvent!]! swapUnlockBuyEvent( id: ID! """ @@ -1653,6 +1679,32 @@ type Subscription { """ subgraphError: _SubgraphErrorPolicy_! = deny ): [SwapWithdrawEvent!]! + swapLPTokenTransferEvent( + id: ID! + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): SwapLPTokenTransferEvent + swapLPTokenTransferEvents( + skip: Int = 0 + first: Int = 100 + orderBy: SwapLPTokenTransferEvent_orderBy + orderDirection: OrderDirection + where: SwapLPTokenTransferEvent_filter + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): [SwapLPTokenTransferEvent!]! swapUnlockBuyEvent( id: ID! """ @@ -1712,7 +1764,7 @@ type Subscription { type SwapDepositEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! sharesMinted: BigInt! @@ -1736,14 +1788,14 @@ input SwapDepositEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -1835,7 +1887,7 @@ enum SwapDepositEvent_orderBy { type SwapEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! fee: BigInt! @@ -1859,14 +1911,14 @@ input SwapEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -1955,6 +2007,141 @@ enum SwapEvent_orderBy { SwapPool__treasuryCutUSD } +type SwapLPTokenTransferEvent { + id: ID! + timestamp: Int! + blockNumber: BigInt! + from: String! + to: String! + amount: BigInt! + SwapPool: SwapPool! +} + +input SwapLPTokenTransferEvent_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + timestamp: Int + timestamp_not: Int + timestamp_gt: Int + timestamp_lt: Int + timestamp_gte: Int + timestamp_lte: Int + timestamp_in: [Int!] + timestamp_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] + from: String + from_not: String + from_gt: String + from_lt: String + from_gte: String + from_lte: String + from_in: [String!] + from_not_in: [String!] + from_contains: String + from_contains_nocase: String + from_not_contains: String + from_not_contains_nocase: String + from_starts_with: String + from_starts_with_nocase: String + from_not_starts_with: String + from_not_starts_with_nocase: String + from_ends_with: String + from_ends_with_nocase: String + from_not_ends_with: String + from_not_ends_with_nocase: String + to: String + to_not: String + to_gt: String + to_lt: String + to_gte: String + to_lte: String + to_in: [String!] + to_not_in: [String!] + to_contains: String + to_contains_nocase: String + to_not_contains: String + to_not_contains_nocase: String + to_starts_with: String + to_starts_with_nocase: String + to_not_starts_with: String + to_not_starts_with_nocase: String + to_ends_with: String + to_ends_with_nocase: String + to_not_ends_with: String + to_not_ends_with_nocase: String + amount: BigInt + amount_not: BigInt + amount_gt: BigInt + amount_lt: BigInt + amount_gte: BigInt + amount_lte: BigInt + amount_in: [BigInt!] + amount_not_in: [BigInt!] + SwapPool: String + SwapPool_not: String + SwapPool_gt: String + SwapPool_lt: String + SwapPool_gte: String + SwapPool_lte: String + SwapPool_in: [String!] + SwapPool_not_in: [String!] + SwapPool_contains: String + SwapPool_contains_nocase: String + SwapPool_not_contains: String + SwapPool_not_contains_nocase: String + SwapPool_starts_with: String + SwapPool_starts_with_nocase: String + SwapPool_not_starts_with: String + SwapPool_not_starts_with_nocase: String + SwapPool_ends_with: String + SwapPool_ends_with_nocase: String + SwapPool_not_ends_with: String + SwapPool_not_ends_with_nocase: String + SwapPool_: SwapPool_filter + """Filter for the block changed event.""" + _change_block: BlockChangedFilter + and: [SwapLPTokenTransferEvent_filter] + or: [SwapLPTokenTransferEvent_filter] +} + +enum SwapLPTokenTransferEvent_orderBy { + id + timestamp + blockNumber + from + to + amount + SwapPool + SwapPool__id + SwapPool__createdAtTimestamp + SwapPool__asset + SwapPool__lpToken + SwapPool__totalSupply + SwapPool__liabilities + SwapPool__unlocking + SwapPool__volume + SwapPool__volumeUSD + SwapPool__fees + SwapPool__feesUSD + SwapPool__lpRewards + SwapPool__lpRewardsUSD + SwapPool__treasuryCut + SwapPool__treasuryCutUSD +} + type SwapPool { id: ID! createdAtTimestamp: Int! @@ -2329,7 +2516,7 @@ enum SwapPool_orderBy { type SwapUnlockBuyEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! unlock: Unlock! asset: String! @@ -2356,14 +2543,14 @@ input SwapUnlockBuyEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2512,7 +2699,7 @@ enum SwapUnlockBuyEvent_orderBy { type SwapUnlockRedeemedEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! unlock: Unlock! asset: String! @@ -2539,14 +2726,14 @@ input SwapUnlockRedeemedEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2695,10 +2882,10 @@ enum SwapUnlockRedeemedEvent_orderBy { type SwapWithdrawEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! - sharesBurned: BigInt! + sharesBurnt: BigInt! SwapPool: SwapPool! } @@ -2719,14 +2906,14 @@ input SwapWithdrawEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2755,14 +2942,14 @@ input SwapWithdrawEvent_filter { amount_lte: BigInt amount_in: [BigInt!] amount_not_in: [BigInt!] - sharesBurned: BigInt - sharesBurned_not: BigInt - sharesBurned_gt: BigInt - sharesBurned_lt: BigInt - sharesBurned_gte: BigInt - sharesBurned_lte: BigInt - sharesBurned_in: [BigInt!] - sharesBurned_not_in: [BigInt!] + sharesBurnt: BigInt + sharesBurnt_not: BigInt + sharesBurnt_gt: BigInt + sharesBurnt_lt: BigInt + sharesBurnt_gte: BigInt + sharesBurnt_lte: BigInt + sharesBurnt_in: [BigInt!] + sharesBurnt_not_in: [BigInt!] SwapPool: String SwapPool_not: String SwapPool_gt: String @@ -2796,7 +2983,7 @@ enum SwapWithdrawEvent_orderBy { blockNumber account amount - sharesBurned + sharesBurnt SwapPool SwapPool__id SwapPool__createdAtTimestamp diff --git a/packages/graph-client/.graphclient/sources/Tenderize/introspectionSchema.ts b/packages/graph-client/.graphclient/sources/Tenderize/introspectionSchema.ts index 4f64a7c..6dd9912 100644 --- a/packages/graph-client/.graphclient/sources/Tenderize/introspectionSchema.ts +++ b/packages/graph-client/.graphclient/sources/Tenderize/introspectionSchema.ts @@ -9848,6 +9848,244 @@ const schemaAST = { }, "directives": [] }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "swapLPTokenTransferEvent" + }, + "arguments": [ + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.", + "block": true + }, + "name": { + "kind": "Name", + "value": "block" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Block_height" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.", + "block": true + }, + "name": { + "kind": "Name", + "value": "subgraphError" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "_SubgraphErrorPolicy_" + } + } + }, + "defaultValue": { + "kind": "EnumValue", + "value": "deny" + }, + "directives": [] + } + ], + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapLPTokenTransferEvent" + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "swapLPTokenTransferEvents" + }, + "arguments": [ + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "skip" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "defaultValue": { + "kind": "IntValue", + "value": "0" + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "first" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "defaultValue": { + "kind": "IntValue", + "value": "100" + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "orderBy" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapLPTokenTransferEvent_orderBy" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "orderDirection" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "OrderDirection" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "where" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapLPTokenTransferEvent_filter" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.", + "block": true + }, + "name": { + "kind": "Name", + "value": "block" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Block_height" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.", + "block": true + }, + "name": { + "kind": "Name", + "value": "subgraphError" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "_SubgraphErrorPolicy_" + } + } + }, + "defaultValue": { + "kind": "EnumValue", + "value": "deny" + }, + "directives": [] + } + ], + "type": { + "kind": "NonNullType", + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapLPTokenTransferEvent" + } + } + } + } + }, + "directives": [] + }, { "kind": "FieldDefinition", "name": { @@ -17933,7 +18171,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "swapUnlockBuyEvent" + "value": "swapLPTokenTransferEvent" }, "arguments": [ { @@ -18006,7 +18244,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockBuyEvent" + "value": "SwapLPTokenTransferEvent" } }, "directives": [] @@ -18015,7 +18253,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "swapUnlockBuyEvents" + "value": "swapLPTokenTransferEvents" }, "arguments": [ { @@ -18066,7 +18304,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockBuyEvent_orderBy" + "value": "SwapLPTokenTransferEvent_orderBy" } }, "directives": [] @@ -18096,7 +18334,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockBuyEvent_filter" + "value": "SwapLPTokenTransferEvent_filter" } }, "directives": [] @@ -18159,7 +18397,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockBuyEvent" + "value": "SwapLPTokenTransferEvent" } } } @@ -18171,7 +18409,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "swapUnlockRedeemedEvent" + "value": "swapUnlockBuyEvent" }, "arguments": [ { @@ -18244,7 +18482,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockRedeemedEvent" + "value": "SwapUnlockBuyEvent" } }, "directives": [] @@ -18253,7 +18491,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "swapUnlockRedeemedEvents" + "value": "swapUnlockBuyEvents" }, "arguments": [ { @@ -18304,7 +18542,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockRedeemedEvent_orderBy" + "value": "SwapUnlockBuyEvent_orderBy" } }, "directives": [] @@ -18334,7 +18572,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockRedeemedEvent_filter" + "value": "SwapUnlockBuyEvent_filter" } }, "directives": [] @@ -18397,7 +18635,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapUnlockRedeemedEvent" + "value": "SwapUnlockBuyEvent" } } } @@ -18407,14 +18645,252 @@ const schemaAST = { }, { "kind": "FieldDefinition", - "description": { - "kind": "StringValue", - "value": "Access to subgraph metadata", - "block": true - }, "name": { "kind": "Name", - "value": "_meta" + "value": "swapUnlockRedeemedEvent" + }, + "arguments": [ + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.", + "block": true + }, + "name": { + "kind": "Name", + "value": "block" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Block_height" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.", + "block": true + }, + "name": { + "kind": "Name", + "value": "subgraphError" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "_SubgraphErrorPolicy_" + } + } + }, + "defaultValue": { + "kind": "EnumValue", + "value": "deny" + }, + "directives": [] + } + ], + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapUnlockRedeemedEvent" + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "swapUnlockRedeemedEvents" + }, + "arguments": [ + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "skip" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "defaultValue": { + "kind": "IntValue", + "value": "0" + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "first" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "defaultValue": { + "kind": "IntValue", + "value": "100" + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "orderBy" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapUnlockRedeemedEvent_orderBy" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "orderDirection" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "OrderDirection" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "where" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapUnlockRedeemedEvent_filter" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.", + "block": true + }, + "name": { + "kind": "Name", + "value": "block" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Block_height" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.", + "block": true + }, + "name": { + "kind": "Name", + "value": "subgraphError" + }, + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "_SubgraphErrorPolicy_" + } + } + }, + "defaultValue": { + "kind": "EnumValue", + "value": "deny" + }, + "directives": [] + } + ], + "type": { + "kind": "NonNullType", + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapUnlockRedeemedEvent" + } + } + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "description": { + "kind": "StringValue", + "value": "Access to subgraph metadata", + "block": true + }, + "name": { + "kind": "Name", + "value": "_meta" }, "arguments": [ { @@ -18443,14 +18919,1709 @@ const schemaAST = { "directives": [] } ], - "interfaces": [], + "interfaces": [], + "directives": [] + }, + { + "kind": "ObjectTypeDefinition", + "name": { + "kind": "Name", + "value": "SwapDepositEvent" + }, + "fields": [ + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "id" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "timestamp" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "blockNumber" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "account" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "amount" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + }, + "directives": [] + }, + { + "kind": "FieldDefinition", + "name": { + "kind": "Name", + "value": "SwapPool" + }, + "arguments": [], + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapPool" + } + } + }, + "directives": [] + } + ], + "interfaces": [], + "directives": [] + }, + { + "kind": "InputObjectTypeDefinition", + "name": { + "kind": "Name", + "value": "SwapDepositEvent_filter" + }, + "fields": [ + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "id_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "ID" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "Int" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_contains" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_contains_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_contains" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_contains_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_starts_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_starts_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_starts_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_starts_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_ends_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_ends_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_ends_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "account_not_ends_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "amount_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_contains" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_contains_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_contains" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_contains_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_starts_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_starts_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_starts_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_starts_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_ends_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_ends_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_ends_with" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_not_ends_with_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool_" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapPool_filter" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "description": { + "kind": "StringValue", + "value": "Filter for the block changed event.", + "block": true + }, + "name": { + "kind": "Name", + "value": "_change_block" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BlockChangedFilter" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "and" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapDepositEvent_filter" + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "or" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "SwapDepositEvent_filter" + } + } + }, + "directives": [] + } + ], + "directives": [] + }, + { + "kind": "EnumTypeDefinition", + "name": { + "kind": "Name", + "value": "SwapDepositEvent_orderBy" + }, + "values": [ + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "id" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "timestamp" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "account" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "amount" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "sharesMinted" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__id" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__createdAtTimestamp" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__asset" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__lpToken" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__totalSupply" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__liabilities" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__unlocking" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__volume" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__volumeUSD" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__fees" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__feesUSD" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__lpRewards" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__lpRewardsUSD" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__treasuryCut" + }, + "directives": [] + }, + { + "kind": "EnumValueDefinition", + "name": { + "kind": "Name", + "value": "SwapPool__treasuryCutUSD" + }, + "directives": [] + } + ], "directives": [] }, { "kind": "ObjectTypeDefinition", "name": { "kind": "Name", - "value": "SwapDepositEvent" + "value": "SwapEvent" }, "fields": [ { @@ -18504,7 +20675,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } }, @@ -18552,7 +20723,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "sharesMinted" + "value": "fee" }, "arguments": [], "type": { @@ -18594,7 +20765,7 @@ const schemaAST = { "kind": "InputObjectTypeDefinition", "name": { "kind": "Name", - "value": "SwapDepositEvent_filter" + "value": "SwapEvent_filter" }, "fields": [ { @@ -18871,7 +21042,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18886,7 +21057,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18901,7 +21072,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18916,7 +21087,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18931,7 +21102,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18946,7 +21117,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -18965,7 +21136,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -18986,7 +21157,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -19441,7 +21612,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted" + "value": "fee" }, "type": { "kind": "NamedType", @@ -19456,7 +21627,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_not" + "value": "fee_not" }, "type": { "kind": "NamedType", @@ -19471,7 +21642,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_gt" + "value": "fee_gt" }, "type": { "kind": "NamedType", @@ -19486,7 +21657,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_lt" + "value": "fee_lt" }, "type": { "kind": "NamedType", @@ -19501,7 +21672,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_gte" + "value": "fee_gte" }, "type": { "kind": "NamedType", @@ -19516,7 +21687,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_lte" + "value": "fee_lte" }, "type": { "kind": "NamedType", @@ -19531,7 +21702,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_in" + "value": "fee_in" }, "type": { "kind": "ListType", @@ -19552,7 +21723,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted_not_in" + "value": "fee_not_in" }, "type": { "kind": "ListType", @@ -19928,7 +22099,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapDepositEvent_filter" + "value": "SwapEvent_filter" } } }, @@ -19946,7 +22117,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapDepositEvent_filter" + "value": "SwapEvent_filter" } } }, @@ -19959,7 +22130,7 @@ const schemaAST = { "kind": "EnumTypeDefinition", "name": { "kind": "Name", - "value": "SwapDepositEvent_orderBy" + "value": "SwapEvent_orderBy" }, "values": [ { @@ -20006,7 +22177,7 @@ const schemaAST = { "kind": "EnumValueDefinition", "name": { "kind": "Name", - "value": "sharesMinted" + "value": "fee" }, "directives": [] }, @@ -20145,7 +22316,7 @@ const schemaAST = { "kind": "ObjectTypeDefinition", "name": { "kind": "Name", - "value": "SwapEvent" + "value": "SwapLPTokenTransferEvent" }, "fields": [ { @@ -20199,7 +22370,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } }, @@ -20209,7 +22380,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "account" + "value": "from" }, "arguments": [], "type": { @@ -20228,7 +22399,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "amount" + "value": "to" }, "arguments": [], "type": { @@ -20237,7 +22408,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } } }, @@ -20247,7 +22418,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "fee" + "value": "amount" }, "arguments": [], "type": { @@ -20289,7 +22460,7 @@ const schemaAST = { "kind": "InputObjectTypeDefinition", "name": { "kind": "Name", - "value": "SwapEvent_filter" + "value": "SwapLPTokenTransferEvent_filter" }, "fields": [ { @@ -20566,7 +22737,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20581,7 +22752,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20596,7 +22767,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20611,7 +22782,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20626,7 +22797,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20641,7 +22812,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -20660,7 +22831,160 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "blockNumber_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "BigInt" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_not" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_gt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_lt" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_gte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_lte" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } } } @@ -20671,19 +22995,43 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "blockNumber_not_in" + "value": "from_contains" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_contains_nocase" + }, + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "from_not_contains" }, "type": { - "kind": "ListType", - "type": { - "kind": "NonNullType", - "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "Int" - } - } + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } }, "directives": [] @@ -20692,7 +23040,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account" + "value": "from_not_contains_nocase" }, "type": { "kind": "NamedType", @@ -20707,7 +23055,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not" + "value": "from_starts_with" }, "type": { "kind": "NamedType", @@ -20722,7 +23070,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_gt" + "value": "from_starts_with_nocase" }, "type": { "kind": "NamedType", @@ -20737,7 +23085,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_lt" + "value": "from_not_starts_with" }, "type": { "kind": "NamedType", @@ -20752,7 +23100,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_gte" + "value": "from_not_starts_with_nocase" }, "type": { "kind": "NamedType", @@ -20767,7 +23115,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_lte" + "value": "from_ends_with" }, "type": { "kind": "NamedType", @@ -20782,19 +23130,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_in" + "value": "from_ends_with_nocase" }, "type": { - "kind": "ListType", - "type": { - "kind": "NonNullType", - "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "String" - } - } + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } }, "directives": [] @@ -20803,19 +23145,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_in" + "value": "from_not_ends_with" }, "type": { - "kind": "ListType", - "type": { - "kind": "NonNullType", - "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "String" - } - } + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } }, "directives": [] @@ -20824,7 +23160,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_contains" + "value": "from_not_ends_with_nocase" }, "type": { "kind": "NamedType", @@ -20839,7 +23175,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_contains_nocase" + "value": "to" }, "type": { "kind": "NamedType", @@ -20854,7 +23190,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_contains" + "value": "to_not" }, "type": { "kind": "NamedType", @@ -20869,7 +23205,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_contains_nocase" + "value": "to_gt" }, "type": { "kind": "NamedType", @@ -20884,7 +23220,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_starts_with" + "value": "to_lt" }, "type": { "kind": "NamedType", @@ -20899,7 +23235,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_starts_with_nocase" + "value": "to_gte" }, "type": { "kind": "NamedType", @@ -20914,7 +23250,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_starts_with" + "value": "to_lte" }, "type": { "kind": "NamedType", @@ -20929,13 +23265,19 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_starts_with_nocase" + "value": "to_in" }, "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "String" + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } } }, "directives": [] @@ -20944,7 +23286,28 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_ends_with" + "value": "to_not_in" + }, + "type": { + "kind": "ListType", + "type": { + "kind": "NonNullType", + "type": { + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" + } + } + } + }, + "directives": [] + }, + { + "kind": "InputValueDefinition", + "name": { + "kind": "Name", + "value": "to_contains" }, "type": { "kind": "NamedType", @@ -20959,7 +23322,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_ends_with_nocase" + "value": "to_contains_nocase" }, "type": { "kind": "NamedType", @@ -20974,7 +23337,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_ends_with" + "value": "to_not_contains" }, "type": { "kind": "NamedType", @@ -20989,7 +23352,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "account_not_ends_with_nocase" + "value": "to_not_contains_nocase" }, "type": { "kind": "NamedType", @@ -21004,13 +23367,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount" + "value": "to_starts_with" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21019,13 +23382,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_not" + "value": "to_starts_with_nocase" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21034,13 +23397,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_gt" + "value": "to_not_starts_with" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21049,13 +23412,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_lt" + "value": "to_not_starts_with_nocase" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21064,13 +23427,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_gte" + "value": "to_ends_with" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21079,13 +23442,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_lte" + "value": "to_ends_with_nocase" }, "type": { "kind": "NamedType", "name": { "kind": "Name", - "value": "BigInt" + "value": "String" } }, "directives": [] @@ -21094,19 +23457,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_in" + "value": "to_not_ends_with" }, "type": { - "kind": "ListType", - "type": { - "kind": "NonNullType", - "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "BigInt" - } - } + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } }, "directives": [] @@ -21115,19 +23472,13 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "amount_not_in" + "value": "to_not_ends_with_nocase" }, "type": { - "kind": "ListType", - "type": { - "kind": "NonNullType", - "type": { - "kind": "NamedType", - "name": { - "kind": "Name", - "value": "BigInt" - } - } + "kind": "NamedType", + "name": { + "kind": "Name", + "value": "String" } }, "directives": [] @@ -21136,7 +23487,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee" + "value": "amount" }, "type": { "kind": "NamedType", @@ -21151,7 +23502,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_not" + "value": "amount_not" }, "type": { "kind": "NamedType", @@ -21166,7 +23517,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_gt" + "value": "amount_gt" }, "type": { "kind": "NamedType", @@ -21181,7 +23532,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_lt" + "value": "amount_lt" }, "type": { "kind": "NamedType", @@ -21196,7 +23547,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_gte" + "value": "amount_gte" }, "type": { "kind": "NamedType", @@ -21211,7 +23562,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_lte" + "value": "amount_lte" }, "type": { "kind": "NamedType", @@ -21226,7 +23577,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_in" + "value": "amount_in" }, "type": { "kind": "ListType", @@ -21247,7 +23598,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "fee_not_in" + "value": "amount_not_in" }, "type": { "kind": "ListType", @@ -21623,7 +23974,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapEvent_filter" + "value": "SwapLPTokenTransferEvent_filter" } } }, @@ -21641,7 +23992,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "SwapEvent_filter" + "value": "SwapLPTokenTransferEvent_filter" } } }, @@ -21654,7 +24005,7 @@ const schemaAST = { "kind": "EnumTypeDefinition", "name": { "kind": "Name", - "value": "SwapEvent_orderBy" + "value": "SwapLPTokenTransferEvent_orderBy" }, "values": [ { @@ -21685,7 +24036,7 @@ const schemaAST = { "kind": "EnumValueDefinition", "name": { "kind": "Name", - "value": "account" + "value": "from" }, "directives": [] }, @@ -21693,7 +24044,7 @@ const schemaAST = { "kind": "EnumValueDefinition", "name": { "kind": "Name", - "value": "amount" + "value": "to" }, "directives": [] }, @@ -21701,7 +24052,7 @@ const schemaAST = { "kind": "EnumValueDefinition", "name": { "kind": "Name", - "value": "fee" + "value": "amount" }, "directives": [] }, @@ -27486,7 +29837,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } }, @@ -27910,7 +30261,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -27925,7 +30276,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -27940,7 +30291,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -27955,7 +30306,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -27970,7 +30321,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -27985,7 +30336,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -28004,7 +30355,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -28025,7 +30376,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -30073,7 +32424,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } }, @@ -30497,7 +32848,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30512,7 +32863,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30527,7 +32878,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30542,7 +32893,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30557,7 +32908,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30572,7 +32923,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -30591,7 +32942,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -30612,7 +32963,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -32660,7 +35011,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } }, @@ -32708,7 +35059,7 @@ const schemaAST = { "kind": "FieldDefinition", "name": { "kind": "Name", - "value": "sharesBurned" + "value": "sharesBurnt" }, "arguments": [], "type": { @@ -33027,7 +35378,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33042,7 +35393,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33057,7 +35408,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33072,7 +35423,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33087,7 +35438,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33102,7 +35453,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } }, "directives": [] @@ -33121,7 +35472,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -33142,7 +35493,7 @@ const schemaAST = { "kind": "NamedType", "name": { "kind": "Name", - "value": "Int" + "value": "BigInt" } } } @@ -33597,7 +35948,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned" + "value": "sharesBurnt" }, "type": { "kind": "NamedType", @@ -33612,7 +35963,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_not" + "value": "sharesBurnt_not" }, "type": { "kind": "NamedType", @@ -33627,7 +35978,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_gt" + "value": "sharesBurnt_gt" }, "type": { "kind": "NamedType", @@ -33642,7 +35993,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_lt" + "value": "sharesBurnt_lt" }, "type": { "kind": "NamedType", @@ -33657,7 +36008,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_gte" + "value": "sharesBurnt_gte" }, "type": { "kind": "NamedType", @@ -33672,7 +36023,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_lte" + "value": "sharesBurnt_lte" }, "type": { "kind": "NamedType", @@ -33687,7 +36038,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_in" + "value": "sharesBurnt_in" }, "type": { "kind": "ListType", @@ -33708,7 +36059,7 @@ const schemaAST = { "kind": "InputValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned_not_in" + "value": "sharesBurnt_not_in" }, "type": { "kind": "ListType", @@ -34162,7 +36513,7 @@ const schemaAST = { "kind": "EnumValueDefinition", "name": { "kind": "Name", - "value": "sharesBurned" + "value": "sharesBurnt" }, "directives": [] }, diff --git a/packages/graph-client/.graphclient/sources/Tenderize/schema.graphql b/packages/graph-client/.graphclient/sources/Tenderize/schema.graphql index a9d5613..fe2ab62 100644 --- a/packages/graph-client/.graphclient/sources/Tenderize/schema.graphql +++ b/packages/graph-client/.graphclient/sources/Tenderize/schema.graphql @@ -890,6 +890,32 @@ type Query { """ subgraphError: _SubgraphErrorPolicy_! = deny ): [SwapWithdrawEvent!]! + swapLPTokenTransferEvent( + id: ID! + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): SwapLPTokenTransferEvent + swapLPTokenTransferEvents( + skip: Int = 0 + first: Int = 100 + orderBy: SwapLPTokenTransferEvent_orderBy + orderDirection: OrderDirection + where: SwapLPTokenTransferEvent_filter + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): [SwapLPTokenTransferEvent!]! swapUnlockBuyEvent( id: ID! """ @@ -1653,6 +1679,32 @@ type Subscription { """ subgraphError: _SubgraphErrorPolicy_! = deny ): [SwapWithdrawEvent!]! + swapLPTokenTransferEvent( + id: ID! + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): SwapLPTokenTransferEvent + swapLPTokenTransferEvents( + skip: Int = 0 + first: Int = 100 + orderBy: SwapLPTokenTransferEvent_orderBy + orderDirection: OrderDirection + where: SwapLPTokenTransferEvent_filter + """ + The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted. + """ + block: Block_height + """ + Set to `allow` to receive data even if the subgraph has skipped over errors while syncing. + """ + subgraphError: _SubgraphErrorPolicy_! = deny + ): [SwapLPTokenTransferEvent!]! swapUnlockBuyEvent( id: ID! """ @@ -1712,7 +1764,7 @@ type Subscription { type SwapDepositEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! sharesMinted: BigInt! @@ -1736,14 +1788,14 @@ input SwapDepositEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -1835,7 +1887,7 @@ enum SwapDepositEvent_orderBy { type SwapEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! fee: BigInt! @@ -1859,14 +1911,14 @@ input SwapEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -1955,6 +2007,141 @@ enum SwapEvent_orderBy { SwapPool__treasuryCutUSD } +type SwapLPTokenTransferEvent { + id: ID! + timestamp: Int! + blockNumber: BigInt! + from: String! + to: String! + amount: BigInt! + SwapPool: SwapPool! +} + +input SwapLPTokenTransferEvent_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + timestamp: Int + timestamp_not: Int + timestamp_gt: Int + timestamp_lt: Int + timestamp_gte: Int + timestamp_lte: Int + timestamp_in: [Int!] + timestamp_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] + from: String + from_not: String + from_gt: String + from_lt: String + from_gte: String + from_lte: String + from_in: [String!] + from_not_in: [String!] + from_contains: String + from_contains_nocase: String + from_not_contains: String + from_not_contains_nocase: String + from_starts_with: String + from_starts_with_nocase: String + from_not_starts_with: String + from_not_starts_with_nocase: String + from_ends_with: String + from_ends_with_nocase: String + from_not_ends_with: String + from_not_ends_with_nocase: String + to: String + to_not: String + to_gt: String + to_lt: String + to_gte: String + to_lte: String + to_in: [String!] + to_not_in: [String!] + to_contains: String + to_contains_nocase: String + to_not_contains: String + to_not_contains_nocase: String + to_starts_with: String + to_starts_with_nocase: String + to_not_starts_with: String + to_not_starts_with_nocase: String + to_ends_with: String + to_ends_with_nocase: String + to_not_ends_with: String + to_not_ends_with_nocase: String + amount: BigInt + amount_not: BigInt + amount_gt: BigInt + amount_lt: BigInt + amount_gte: BigInt + amount_lte: BigInt + amount_in: [BigInt!] + amount_not_in: [BigInt!] + SwapPool: String + SwapPool_not: String + SwapPool_gt: String + SwapPool_lt: String + SwapPool_gte: String + SwapPool_lte: String + SwapPool_in: [String!] + SwapPool_not_in: [String!] + SwapPool_contains: String + SwapPool_contains_nocase: String + SwapPool_not_contains: String + SwapPool_not_contains_nocase: String + SwapPool_starts_with: String + SwapPool_starts_with_nocase: String + SwapPool_not_starts_with: String + SwapPool_not_starts_with_nocase: String + SwapPool_ends_with: String + SwapPool_ends_with_nocase: String + SwapPool_not_ends_with: String + SwapPool_not_ends_with_nocase: String + SwapPool_: SwapPool_filter + """Filter for the block changed event.""" + _change_block: BlockChangedFilter + and: [SwapLPTokenTransferEvent_filter] + or: [SwapLPTokenTransferEvent_filter] +} + +enum SwapLPTokenTransferEvent_orderBy { + id + timestamp + blockNumber + from + to + amount + SwapPool + SwapPool__id + SwapPool__createdAtTimestamp + SwapPool__asset + SwapPool__lpToken + SwapPool__totalSupply + SwapPool__liabilities + SwapPool__unlocking + SwapPool__volume + SwapPool__volumeUSD + SwapPool__fees + SwapPool__feesUSD + SwapPool__lpRewards + SwapPool__lpRewardsUSD + SwapPool__treasuryCut + SwapPool__treasuryCutUSD +} + type SwapPool { id: ID! createdAtTimestamp: Int! @@ -2329,7 +2516,7 @@ enum SwapPool_orderBy { type SwapUnlockBuyEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! unlock: Unlock! asset: String! @@ -2356,14 +2543,14 @@ input SwapUnlockBuyEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2512,7 +2699,7 @@ enum SwapUnlockBuyEvent_orderBy { type SwapUnlockRedeemedEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! unlock: Unlock! asset: String! @@ -2539,14 +2726,14 @@ input SwapUnlockRedeemedEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2695,10 +2882,10 @@ enum SwapUnlockRedeemedEvent_orderBy { type SwapWithdrawEvent { id: ID! timestamp: Int! - blockNumber: Int! + blockNumber: BigInt! account: String! amount: BigInt! - sharesBurned: BigInt! + sharesBurnt: BigInt! SwapPool: SwapPool! } @@ -2719,14 +2906,14 @@ input SwapWithdrawEvent_filter { timestamp_lte: Int timestamp_in: [Int!] timestamp_not_in: [Int!] - blockNumber: Int - blockNumber_not: Int - blockNumber_gt: Int - blockNumber_lt: Int - blockNumber_gte: Int - blockNumber_lte: Int - blockNumber_in: [Int!] - blockNumber_not_in: [Int!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] account: String account_not: String account_gt: String @@ -2755,14 +2942,14 @@ input SwapWithdrawEvent_filter { amount_lte: BigInt amount_in: [BigInt!] amount_not_in: [BigInt!] - sharesBurned: BigInt - sharesBurned_not: BigInt - sharesBurned_gt: BigInt - sharesBurned_lt: BigInt - sharesBurned_gte: BigInt - sharesBurned_lte: BigInt - sharesBurned_in: [BigInt!] - sharesBurned_not_in: [BigInt!] + sharesBurnt: BigInt + sharesBurnt_not: BigInt + sharesBurnt_gt: BigInt + sharesBurnt_lt: BigInt + sharesBurnt_gte: BigInt + sharesBurnt_lte: BigInt + sharesBurnt_in: [BigInt!] + sharesBurnt_not_in: [BigInt!] SwapPool: String SwapPool_not: String SwapPool_gt: String @@ -2796,7 +2983,7 @@ enum SwapWithdrawEvent_orderBy { blockNumber account amount - sharesBurned + sharesBurnt SwapPool SwapPool__id SwapPool__createdAtTimestamp diff --git a/packages/graph-client/.graphclient/sources/Tenderize/types.ts b/packages/graph-client/.graphclient/sources/Tenderize/types.ts index b7591e3..33608f3 100644 --- a/packages/graph-client/.graphclient/sources/Tenderize/types.ts +++ b/packages/graph-client/.graphclient/sources/Tenderize/types.ts @@ -460,6 +460,8 @@ export type Query = { swapDepositEvents: Array; swapWithdrawEvent?: Maybe; swapWithdrawEvents: Array; + swapLPTokenTransferEvent?: Maybe; + swapLPTokenTransferEvents: Array; swapUnlockBuyEvent?: Maybe; swapUnlockBuyEvents: Array; swapUnlockRedeemedEvent?: Maybe; @@ -793,6 +795,24 @@ export type QueryswapWithdrawEventsArgs = { }; +export type QueryswapLPTokenTransferEventArgs = { + id: Scalars['ID']; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryswapLPTokenTransferEventsArgs = { + skip?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + where?: InputMaybe; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + export type QueryswapUnlockBuyEventArgs = { id: Scalars['ID']; block?: InputMaybe; @@ -1106,6 +1126,8 @@ export type Subscription = { swapDepositEvents: Array; swapWithdrawEvent?: Maybe; swapWithdrawEvents: Array; + swapLPTokenTransferEvent?: Maybe; + swapLPTokenTransferEvents: Array; swapUnlockBuyEvent?: Maybe; swapUnlockBuyEvents: Array; swapUnlockRedeemedEvent?: Maybe; @@ -1439,6 +1461,24 @@ export type SubscriptionswapWithdrawEventsArgs = { }; +export type SubscriptionswapLPTokenTransferEventArgs = { + id: Scalars['ID']; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionswapLPTokenTransferEventsArgs = { + skip?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + where?: InputMaybe; + block?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; +}; + + export type SubscriptionswapUnlockBuyEventArgs = { id: Scalars['ID']; block?: InputMaybe; @@ -1482,7 +1522,7 @@ export type Subscription_metaArgs = { export type SwapDepositEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; sharesMinted: Scalars['BigInt']; @@ -1506,14 +1546,14 @@ export type SwapDepositEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -1604,7 +1644,7 @@ export type SwapDepositEvent_orderBy = export type SwapEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; fee: Scalars['BigInt']; @@ -1628,14 +1668,14 @@ export type SwapEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -1723,6 +1763,140 @@ export type SwapEvent_orderBy = | 'SwapPool__treasuryCut' | 'SwapPool__treasuryCutUSD'; +export type SwapLPTokenTransferEvent = { + id: Scalars['ID']; + timestamp: Scalars['Int']; + blockNumber: Scalars['BigInt']; + from: Scalars['String']; + to: Scalars['String']; + amount: Scalars['BigInt']; + SwapPool: SwapPool; +}; + +export type SwapLPTokenTransferEvent_filter = { + id?: InputMaybe; + id_not?: InputMaybe; + id_gt?: InputMaybe; + id_lt?: InputMaybe; + id_gte?: InputMaybe; + id_lte?: InputMaybe; + id_in?: InputMaybe>; + id_not_in?: InputMaybe>; + timestamp?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; + from?: InputMaybe; + from_not?: InputMaybe; + from_gt?: InputMaybe; + from_lt?: InputMaybe; + from_gte?: InputMaybe; + from_lte?: InputMaybe; + from_in?: InputMaybe>; + from_not_in?: InputMaybe>; + from_contains?: InputMaybe; + from_contains_nocase?: InputMaybe; + from_not_contains?: InputMaybe; + from_not_contains_nocase?: InputMaybe; + from_starts_with?: InputMaybe; + from_starts_with_nocase?: InputMaybe; + from_not_starts_with?: InputMaybe; + from_not_starts_with_nocase?: InputMaybe; + from_ends_with?: InputMaybe; + from_ends_with_nocase?: InputMaybe; + from_not_ends_with?: InputMaybe; + from_not_ends_with_nocase?: InputMaybe; + to?: InputMaybe; + to_not?: InputMaybe; + to_gt?: InputMaybe; + to_lt?: InputMaybe; + to_gte?: InputMaybe; + to_lte?: InputMaybe; + to_in?: InputMaybe>; + to_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_contains_nocase?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_contains_nocase?: InputMaybe; + to_starts_with?: InputMaybe; + to_starts_with_nocase?: InputMaybe; + to_not_starts_with?: InputMaybe; + to_not_starts_with_nocase?: InputMaybe; + to_ends_with?: InputMaybe; + to_ends_with_nocase?: InputMaybe; + to_not_ends_with?: InputMaybe; + to_not_ends_with_nocase?: InputMaybe; + amount?: InputMaybe; + amount_not?: InputMaybe; + amount_gt?: InputMaybe; + amount_lt?: InputMaybe; + amount_gte?: InputMaybe; + amount_lte?: InputMaybe; + amount_in?: InputMaybe>; + amount_not_in?: InputMaybe>; + SwapPool?: InputMaybe; + SwapPool_not?: InputMaybe; + SwapPool_gt?: InputMaybe; + SwapPool_lt?: InputMaybe; + SwapPool_gte?: InputMaybe; + SwapPool_lte?: InputMaybe; + SwapPool_in?: InputMaybe>; + SwapPool_not_in?: InputMaybe>; + SwapPool_contains?: InputMaybe; + SwapPool_contains_nocase?: InputMaybe; + SwapPool_not_contains?: InputMaybe; + SwapPool_not_contains_nocase?: InputMaybe; + SwapPool_starts_with?: InputMaybe; + SwapPool_starts_with_nocase?: InputMaybe; + SwapPool_not_starts_with?: InputMaybe; + SwapPool_not_starts_with_nocase?: InputMaybe; + SwapPool_ends_with?: InputMaybe; + SwapPool_ends_with_nocase?: InputMaybe; + SwapPool_not_ends_with?: InputMaybe; + SwapPool_not_ends_with_nocase?: InputMaybe; + SwapPool_?: InputMaybe; + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + or?: InputMaybe>>; +}; + +export type SwapLPTokenTransferEvent_orderBy = + | 'id' + | 'timestamp' + | 'blockNumber' + | 'from' + | 'to' + | 'amount' + | 'SwapPool' + | 'SwapPool__id' + | 'SwapPool__createdAtTimestamp' + | 'SwapPool__asset' + | 'SwapPool__lpToken' + | 'SwapPool__totalSupply' + | 'SwapPool__liabilities' + | 'SwapPool__unlocking' + | 'SwapPool__volume' + | 'SwapPool__volumeUSD' + | 'SwapPool__fees' + | 'SwapPool__feesUSD' + | 'SwapPool__lpRewards' + | 'SwapPool__lpRewardsUSD' + | 'SwapPool__treasuryCut' + | 'SwapPool__treasuryCutUSD'; + export type SwapPool = { id: Scalars['ID']; createdAtTimestamp: Scalars['Int']; @@ -2104,7 +2278,7 @@ export type SwapPool_orderBy = export type SwapUnlockBuyEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; unlock: Unlock; asset: Scalars['String']; @@ -2131,14 +2305,14 @@ export type SwapUnlockBuyEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2286,7 +2460,7 @@ export type SwapUnlockBuyEvent_orderBy = export type SwapUnlockRedeemedEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; unlock: Unlock; asset: Scalars['String']; @@ -2313,14 +2487,14 @@ export type SwapUnlockRedeemedEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2468,10 +2642,10 @@ export type SwapUnlockRedeemedEvent_orderBy = export type SwapWithdrawEvent = { id: Scalars['ID']; timestamp: Scalars['Int']; - blockNumber: Scalars['Int']; + blockNumber: Scalars['BigInt']; account: Scalars['String']; amount: Scalars['BigInt']; - sharesBurned: Scalars['BigInt']; + sharesBurnt: Scalars['BigInt']; SwapPool: SwapPool; }; @@ -2492,14 +2666,14 @@ export type SwapWithdrawEvent_filter = { timestamp_lte?: InputMaybe; timestamp_in?: InputMaybe>; timestamp_not_in?: InputMaybe>; - blockNumber?: InputMaybe; - blockNumber_not?: InputMaybe; - blockNumber_gt?: InputMaybe; - blockNumber_lt?: InputMaybe; - blockNumber_gte?: InputMaybe; - blockNumber_lte?: InputMaybe; - blockNumber_in?: InputMaybe>; - blockNumber_not_in?: InputMaybe>; + blockNumber?: InputMaybe; + blockNumber_not?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_not_in?: InputMaybe>; account?: InputMaybe; account_not?: InputMaybe; account_gt?: InputMaybe; @@ -2528,14 +2702,14 @@ export type SwapWithdrawEvent_filter = { amount_lte?: InputMaybe; amount_in?: InputMaybe>; amount_not_in?: InputMaybe>; - sharesBurned?: InputMaybe; - sharesBurned_not?: InputMaybe; - sharesBurned_gt?: InputMaybe; - sharesBurned_lt?: InputMaybe; - sharesBurned_gte?: InputMaybe; - sharesBurned_lte?: InputMaybe; - sharesBurned_in?: InputMaybe>; - sharesBurned_not_in?: InputMaybe>; + sharesBurnt?: InputMaybe; + sharesBurnt_not?: InputMaybe; + sharesBurnt_gt?: InputMaybe; + sharesBurnt_lt?: InputMaybe; + sharesBurnt_gte?: InputMaybe; + sharesBurnt_lte?: InputMaybe; + sharesBurnt_in?: InputMaybe>; + sharesBurnt_not_in?: InputMaybe>; SwapPool?: InputMaybe; SwapPool_not?: InputMaybe; SwapPool_gt?: InputMaybe; @@ -2569,7 +2743,7 @@ export type SwapWithdrawEvent_orderBy = | 'blockNumber' | 'account' | 'amount' - | 'sharesBurned' + | 'sharesBurnt' | 'SwapPool' | 'SwapPool__id' | 'SwapPool__createdAtTimestamp' @@ -3751,6 +3925,10 @@ export type _SubgraphErrorPolicy_ = /** null **/ swapWithdrawEvents: InContextSdkMethod, /** null **/ + swapLPTokenTransferEvent: InContextSdkMethod, + /** null **/ + swapLPTokenTransferEvents: InContextSdkMethod, + /** null **/ swapUnlockBuyEvent: InContextSdkMethod, /** null **/ swapUnlockBuyEvents: InContextSdkMethod, @@ -3840,6 +4018,10 @@ export type _SubgraphErrorPolicy_ = /** null **/ swapWithdrawEvents: InContextSdkMethod, /** null **/ + swapLPTokenTransferEvent: InContextSdkMethod, + /** null **/ + swapLPTokenTransferEvents: InContextSdkMethod, + /** null **/ swapUnlockBuyEvent: InContextSdkMethod, /** null **/ swapUnlockBuyEvents: InContextSdkMethod, diff --git a/packages/graph-client/.graphclientrc.yaml b/packages/graph-client/.graphclientrc.yaml index e09347f..6d8460d 100644 --- a/packages/graph-client/.graphclientrc.yaml +++ b/packages/graph-client/.graphclientrc.yaml @@ -2,12 +2,9 @@ sources: - name: Tenderize handler: graphql: - endpoint: "https://api.studio.thegraph.com/query/45970/tenderize-v2-mainnet/version/latest" + endpoint: "https://api.studio.thegraph.com/query/93675/tenderize-v2-arbitrum/version/latest" documents: - ./gql/**/*.gql - - - # 1bebc8cea3046e82264ffadc0e36e3f4 # mainnet https://gateway-arbitrum.network.thegraph.com/api/1bebc8cea3046e82264ffadc0e36e3f4/subgraphs/id/FNGU4YKPjuy5sayHT6c5xt3EXzZE5fnUwcjFXKLgudBi -# arbitrum https://gateway-arbitrum.network.thegraph.com/api/1bebc8cea3046e82264ffadc0e36e3f4/subgraphs/id/2ygWAHMhm9tKXm59DN8DdSJ7VNpxrKMkA39Krij4b4tu \ No newline at end of file +# arbitrum https://gateway-arbitrum.network.thegraph.com/api/1bebc8cea3046e82264ffadc0e36e3f4/subgraphs/id/2ygWAHMhm9tKXm59DN8DdSJ7VNpxrKMkA39Krij4b4tu diff --git a/packages/subgraph/package.json b/packages/subgraph/package.json index 424641b..9adecda 100644 --- a/packages/subgraph/package.json +++ b/packages/subgraph/package.json @@ -17,8 +17,8 @@ "auth": "graph auth --studio $GRAPH_ACCESS_TOKEN", "build": "graph build", "codegen": "graph codegen --output-dir src/types/", - "prettier:check": "prettier --check \"**/*.{ts,md,yaml,graphql}\"", - "prettier:write": "prettier --write \"**/*.{ts,md,yaml,graphql}\"", + "prettier:check": "prettier --check \"**/*.{ts,md,graphql}\"", + "prettier:write": "prettier --write \"**/*.{ts,md,graphql}\"", "deploy": "graph deploy --studio ${SUBGRAPH_NAME}" }, "devDependencies": { diff --git a/packages/subgraph/schema.graphql b/packages/subgraph/schema.graphql index 0883b1b..96be14c 100644 --- a/packages/subgraph/schema.graphql +++ b/packages/subgraph/schema.graphql @@ -258,6 +258,20 @@ type SwapWithdrawEvent @entity { SwapPool: SwapPool! } +type SwapLPTokenTransferEvent @entity { + id: ID! + timestamp: Int! + blockNumber: BigInt! + + from: String! + to: String! + shares: BigInt! + value: BigInt! + + # Relational fields + SwapPool: SwapPool! +} + type SwapUnlockBuyEvent @entity { id: ID! timestamp: Int! @@ -293,3 +307,8 @@ type SwapUnlockRedeemedEvent @entity { # Relational fields SwapPool: SwapPool! } + +type LPToken @entity { + id: ID! # LP token address + pool: SwapPool! +} diff --git a/packages/subgraph/src/mappings/swapFactory.ts b/packages/subgraph/src/mappings/swapFactory.ts index 66286a0..9ce9f99 100644 --- a/packages/subgraph/src/mappings/swapFactory.ts +++ b/packages/subgraph/src/mappings/swapFactory.ts @@ -1,6 +1,6 @@ import { SwapDeployed as SwapDeployedEvent } from '../types/SwapFactory/SwapFactory' import { SwapPool as SwapPoolSource, SwapPoolToken } from '../types/templates' -import { SwapPool } from '../types/schema' +import { LPToken, SwapPool } from '../types/schema' import { BD_ZERO, BI_ZERO } from './helpers' import { TenderSwap } from '../types/templates/SwapPool/TenderSwap' @@ -25,5 +25,9 @@ export function handleNewSwapPool(event: SwapDeployedEvent): void { pool.save() + let lpToken = new LPToken(lpTokenAddr.toHex()) + lpToken.pool = pool.id + lpToken.save() + SwapPoolToken.create(lpTokenAddr) } \ No newline at end of file diff --git a/packages/subgraph/src/mappings/tenderswap.ts b/packages/subgraph/src/mappings/tenderswap.ts index 51ad247..2dbc412 100644 --- a/packages/subgraph/src/mappings/tenderswap.ts +++ b/packages/subgraph/src/mappings/tenderswap.ts @@ -1,9 +1,9 @@ -import { SwapPool, SwapPoolDay, LiquidityPosition, User, SwapWithdrawEvent, SwapDepositEvent, SwapEvent, SwapUnlockBuyEvent } from '../types/schema' +import { SwapPool, SwapPoolDay, LiquidityPosition, User, SwapWithdrawEvent, SwapDepositEvent, SwapEvent, SwapUnlockBuyEvent, SwapLPTokenTransferEvent, LPToken } from '../types/schema' import { Deposit as DepositEmitted, Withdraw as WithdrawEmitted, Swap as SwapEmitted, UnlockBought as UnlockBoughtEmitted, UnlockRedeemed as UnlockRedeemedEmitted } from '../types/templates/SwapPool/TenderSwap' import {Transfer as SwapTokenTransferEmitted} from '../types/templates/SwapPoolToken/ERC20' import { Address, BigInt } from '@graphprotocol/graph-ts'; import { BI_ZERO, BD_ZERO, getUsdPrice, calculateDayID, TEN_18, convertToDecimal } from './helpers'; - +import { log } from '@graphprotocol/graph-ts'; const initiatePoolDay = (pool: SwapPool, dayID: BigInt): SwapPoolDay => { const poolDay = new SwapPoolDay(pool.id.concat('-').concat(dayID.toString())) @@ -171,15 +171,20 @@ export function handleSwapWithdraw(event: WithdrawEmitted): void { pool.liabilities = pool.liabilities.minus(event.params.amount) let user = event.params.to.toHex() let lp = LiquidityPosition.load(user.concat('-').concat(pool.id)) - if (lp == null) return; - let bal = lp.shares.times(pool.liabilities.times(TEN_18).div(totalSupply)).div(TEN_18) - let amount = event.params.amount - if (bal.minus(lp.netDeposits).lt(amount)) { - // if rewards less than amount, set net deposits - // to balance minus what wasnt subtracted from the rewards - lp.netDeposits = bal.minus(amount) + if (lp == null) { + log.debug("Liquidity Position not found with id: {}", [user.concat('-').concat(pool.id)]) + } else { + let bal = lp.shares.times(pool.liabilities).div(totalSupply) + let amount = event.params.amount + if (bal.minus(lp.netDeposits).lt(amount)) { + // if rewards less than amount, set net deposits + // to balance minus what wasnt subtracted from the rewards + lp.netDeposits = bal.minus(amount) + } + lp.shares = lp.shares.minus(event.params.lpSharesBurnt) + lp.save() } - lp.shares = lp.shares.minus(event.params.lpSharesBurnt) + let dayID = calculateDayID(event.block.timestamp) @@ -187,7 +192,6 @@ export function handleSwapWithdraw(event: WithdrawEmitted): void { if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); poolDay.save() - lp.save() pool.save() let withdrawEvent = new SwapWithdrawEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) @@ -201,39 +205,68 @@ export function handleSwapWithdraw(event: WithdrawEmitted): void { } export function handleSwapTokenTransfer(event: SwapTokenTransferEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - - let from = event.params.from.toHex(); - let to = event.params.to.toHex(); - let user = User.load(from) - if (user == null) { - user = new User(from) - user.save() - } - - let lp = LiquidityPosition.load(from.concat('-').concat(pool.id)) - if (lp == null) return; - - let totalSupply = pool.totalSupply - let bal = lp.shares.times(pool.liabilities.times(TEN_18).div(totalSupply)).div(TEN_18) - let amount = event.params.value - if (bal.minus(lp.netDeposits).lt(amount)) { - // if rewards less than amount, set net deposits - // to balance minus what wasnt subtracted from the rewards - lp.netDeposits = bal.minus(amount) - } - - let lpTo = LiquidityPosition.load(to.concat('-').concat(pool.id)) - if (lpTo == null) { - lpTo = new LiquidityPosition(to.concat('-').concat(pool.id)) - lpTo.user = to - lpTo.pool = pool.id - lpTo.shares = BI_ZERO - lpTo.netDeposits = BI_ZERO - } - lpTo.shares = lpTo.shares.plus(event.params.value) - lpTo.netDeposits = lpTo.netDeposits.plus(event.params.value) - lp.save() - lpTo.save() + log.debug("Swap Token Transfer Event: {}", [event.transaction.hash.toHex()]) + // burn + if (event.params.to.toHex() == "0x0000000000000000000000000000000000000000") return; + // mint + if (event.params.from.toHex() == "0x0000000000000000000000000000000000000000") return; + + let lpToken = LPToken.load(event.address.toHex()); + if (lpToken == null) return; + + let pool = SwapPool.load(lpToken.pool); + if (pool == null) return; + + let from = event.params.from.toHex(); + let to = event.params.to.toHex(); + let toUser = User.load(to); + if (toUser == null) { + toUser = new User(to); + toUser.save(); + } + + let lpTo = LiquidityPosition.load(to.concat("-").concat(pool.id)); + if (lpTo == null) { + lpTo = new LiquidityPosition(to.concat("-").concat(pool.id)); + lpTo.user = to; + lpTo.pool = pool.id; + lpTo.shares = BI_ZERO; + lpTo.netDeposits = BI_ZERO; + } + lpTo.shares = lpTo.shares.plus(event.params.value); + + let value = event.params.value.times(pool.liabilities).div(pool.totalSupply); + lpTo.netDeposits = value; + lpTo.save(); + + let transfer = new SwapLPTokenTransferEvent( + event.transaction.hash.toHex().concat("-").concat(event.logIndex.toString()) + ); + transfer.timestamp = event.block.timestamp.toI32(); + transfer.blockNumber = event.block.number; + transfer.from = from; + transfer.to = to; + transfer.value = value; + transfer.shares = event.params.value; + transfer.SwapPool = pool.id; + transfer.save(); + + let lp = LiquidityPosition.load(from.concat("-").concat(pool.id)); + if (lp != null) { + lp.shares = lp.shares.minus(event.params.value); + let totalSupply = pool.totalSupply; + let bal = lp.shares + .times(pool.liabilities).div(totalSupply); + if (bal.minus(lp.netDeposits).lt(value)) { + // if rewards less than amount, set net deposits + // to balance minus what wasnt subtracted from the rewards + let remainder = value.minus(bal.minus(lp.netDeposits)); + if (remainder.lt(lp.netDeposits)) { + lp.netDeposits = bal.minus(remainder); + } else { + lp.netDeposits = BI_ZERO; + } + } + lp.save(); + } } \ No newline at end of file diff --git a/packages/subgraph/src/types/schema.ts b/packages/subgraph/src/types/schema.ts index a21b5e2..413b930 100644 --- a/packages/subgraph/src/types/schema.ts +++ b/packages/subgraph/src/types/schema.ts @@ -2360,6 +2360,144 @@ export class SwapWithdrawEvent extends Entity { } } +export class SwapLPTokenTransferEvent extends Entity { + constructor(id: string) { + super(); + this.set("id", Value.fromString(id)); + } + + save(): void { + let id = this.get("id"); + assert( + id != null, + "Cannot save SwapLPTokenTransferEvent entity without an ID" + ); + if (id) { + assert( + id.kind == ValueKind.STRING, + `Entities of type SwapLPTokenTransferEvent must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}` + ); + store.set("SwapLPTokenTransferEvent", id.toString(), this); + } + } + + static loadInBlock(id: string): SwapLPTokenTransferEvent | null { + return changetype( + store.get_in_block("SwapLPTokenTransferEvent", id) + ); + } + + static load(id: string): SwapLPTokenTransferEvent | null { + return changetype( + store.get("SwapLPTokenTransferEvent", id) + ); + } + + get id(): string { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set id(value: string) { + this.set("id", Value.fromString(value)); + } + + get timestamp(): i32 { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } + } + + set timestamp(value: i32) { + this.set("timestamp", Value.fromI32(value)); + } + + get blockNumber(): BigInt { + let value = this.get("blockNumber"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set blockNumber(value: BigInt) { + this.set("blockNumber", Value.fromBigInt(value)); + } + + get from(): string { + let value = this.get("from"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set from(value: string) { + this.set("from", Value.fromString(value)); + } + + get to(): string { + let value = this.get("to"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set to(value: string) { + this.set("to", Value.fromString(value)); + } + + get shares(): BigInt { + let value = this.get("shares"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set shares(value: BigInt) { + this.set("shares", Value.fromBigInt(value)); + } + + get value(): BigInt { + let value = this.get("value"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set value(value: BigInt) { + this.set("value", Value.fromBigInt(value)); + } + + get SwapPool(): string { + let value = this.get("SwapPool"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set SwapPool(value: string) { + this.set("SwapPool", Value.fromString(value)); + } +} + export class SwapUnlockBuyEvent extends Entity { constructor(id: string) { super(); @@ -2685,6 +2823,59 @@ export class SwapUnlockRedeemedEvent extends Entity { } } +export class LPToken extends Entity { + constructor(id: string) { + super(); + this.set("id", Value.fromString(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save LPToken entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.STRING, + `Entities of type LPToken must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}` + ); + store.set("LPToken", id.toString(), this); + } + } + + static loadInBlock(id: string): LPToken | null { + return changetype(store.get_in_block("LPToken", id)); + } + + static load(id: string): LPToken | null { + return changetype(store.get("LPToken", id)); + } + + get id(): string { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set id(value: string) { + this.set("id", Value.fromString(value)); + } + + get pool(): string { + let value = this.get("pool"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } + } + + set pool(value: string) { + this.set("pool", Value.fromString(value)); + } +} + export class AssetDayLoader extends Entity { _entity: string; _field: string; diff --git a/packages/subgraph/subgraph.template.yaml b/packages/subgraph/subgraph.template.yaml index 1f31cda..133bc52 100644 --- a/packages/subgraph/subgraph.template.yaml +++ b/packages/subgraph/subgraph.template.yaml @@ -139,6 +139,7 @@ templates: file: ./src/mappings/tenderswap.ts entities: - SwapPool + - SwapLPTokenTransfer abis: - name: ERC20 file: ./abis/ERC20.json From 77c1cbd52fa0ab4f8c96d6f45a9b039fd6b72b2a Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Tue, 18 Feb 2025 10:46:38 +0100 Subject: [PATCH 3/6] chore: lint --- packages/subgraph/src/mappings/helpers.ts | 79 +-- packages/subgraph/src/mappings/swapFactory.ts | 46 +- packages/subgraph/src/mappings/tenderizer.ts | 2 +- packages/subgraph/src/mappings/tenderswap.ts | 507 +++++++++--------- packages/subgraph/src/mappings/unlocks.ts | 37 +- 5 files changed, 327 insertions(+), 344 deletions(-) diff --git a/packages/subgraph/src/mappings/helpers.ts b/packages/subgraph/src/mappings/helpers.ts index 7cdc0c1..0f8e1b6 100644 --- a/packages/subgraph/src/mappings/helpers.ts +++ b/packages/subgraph/src/mappings/helpers.ts @@ -22,7 +22,6 @@ export const WETH9_ARBITRUM = Address.fromString('0x82aF49447D8a07e3bd95BD0d56f3 export const USDC_ARBITRUM = Address.fromString('0xaf88d065e77c8cC2239327C5EDb3A432268e5831') export const USDC_MAINNET = Address.fromString('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48') - export function exponentToBigDecimal(decimals: BigInt): BigDecimal { let bd = BigDecimal.fromString('1') for (let i = BI_ZERO; i.lt(decimals as BigInt); i = i.plus(BI_ONE)) { @@ -41,13 +40,7 @@ export const calculateDayID = (timestamp: BigInt): BigInt => { export const maticUsd = (): BigDecimal => { const quoter = UniswapQuoter.bind(QUOTER) - const maticUsd = quoter.try_quoteExactInputSingle( - MATIC, - USDC_MAINNET, - 3000, - TEN_18, - BI_ZERO - ) + const maticUsd = quoter.try_quoteExactInputSingle(MATIC, USDC_MAINNET, 3000, TEN_18, BI_ZERO) if (maticUsd.reverted) return BD_ZERO return maticUsd.value.toBigDecimal().div(TEN_6.toBigDecimal()) @@ -55,44 +48,20 @@ export const maticUsd = (): BigDecimal => { export const grtUsd = (): BigDecimal => { const quoter = UniswapQuoter.bind(QUOTER) - const grtEth = quoter.try_quoteExactInputSingle( - GRT, - WETH9_ARBITRUM, - 3000, - TEN_18, - BI_ZERO - ) + const grtEth = quoter.try_quoteExactInputSingle(GRT, WETH9_ARBITRUM, 3000, TEN_18, BI_ZERO) if (grtEth.reverted) return BD_ZERO - const ethUsdc = quoter.try_quoteExactInputSingle( - WETH9_ARBITRUM, - USDC_ARBITRUM, - 500, - TEN_18, - BI_ZERO - ) + const ethUsdc = quoter.try_quoteExactInputSingle(WETH9_ARBITRUM, USDC_ARBITRUM, 500, TEN_18, BI_ZERO) return grtEth.value.toBigDecimal().times(ethUsdc.value.toBigDecimal()).div(TEN_24.toBigDecimal()) } export const lptUsd = (): BigDecimal => { const quoter = UniswapQuoter.bind(QUOTER) - const lptEth = quoter.try_quoteExactInputSingle( - LPT, - WETH9_ARBITRUM, - 3000, - TEN_18, - BI_ZERO - ) + const lptEth = quoter.try_quoteExactInputSingle(LPT, WETH9_ARBITRUM, 3000, TEN_18, BI_ZERO) if (lptEth.reverted) return BD_ZERO - const ethUsdc = quoter.try_quoteExactInputSingle( - WETH9_ARBITRUM, - USDC_ARBITRUM, - 500, - TEN_18, - BI_ZERO - ) + const ethUsdc = quoter.try_quoteExactInputSingle(WETH9_ARBITRUM, USDC_ARBITRUM, 500, TEN_18, BI_ZERO) return lptEth.value.toBigDecimal().times(ethUsdc.value.toBigDecimal()).div(TEN_24.toBigDecimal()) } @@ -105,47 +74,47 @@ export const getUsdPrice = (token: Address): BigDecimal => { } // Define the return type class DecodedTokenId { - tenderizer: string; - id: BigInt; + tenderizer: string + id: BigInt constructor(tenderizer: string, id: BigInt) { - this.tenderizer = tenderizer; - this.id = id; + this.tenderizer = tenderizer + this.id = id } } export const decodeTokenId = (tokenId: BigInt): DecodedTokenId => { let hexId = tokenId.toHexString() - let address = "0x" + hexId.substring(0, 20) + let address = '0x' + hexId.substring(0, 20) let uint96 = BigInt.fromUnsignedBytes(Bytes.fromHexString(hexId.substring(20, 32))) // Return the decoded values - return new DecodedTokenId(address, uint96); + return new DecodedTokenId(address, uint96) } -const REBASE_TOPIC = "0x11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511" +const REBASE_TOPIC = '0x11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511' export function findClosestRebaseEvent( receipt: ethereum.TransactionReceipt | null, contractAddress: Address, logIndex: BigInt ): BigDecimal | null { - if (receipt == null) return null; - if (logIndex == BI_ZERO) return null; + if (receipt == null) return null + if (logIndex == BI_ZERO) return null for (let i = receipt.logs.length - 1; i >= 0; i--) { - let log = receipt.logs[i]; - if (log.logIndex.ge(logIndex)) continue; + let log = receipt.logs[i] + if (log.logIndex.ge(logIndex)) continue // Check if the log is from the correct contract - if (log.address != contractAddress) continue; - if (log.topics.length == 0 || log.topics[0].toHexString() != REBASE_TOPIC) continue; + if (log.address != contractAddress) continue + if (log.topics.length == 0 || log.topics[0].toHexString() != REBASE_TOPIC) continue // Check if the log is a Rebase event - let decoded = ethereum.decode('(uint256,uint256)', log.data); - if (decoded == null) return null; - const t = decoded.toTuple(); - return convertToDecimal(t[0].toBigInt()); + let decoded = ethereum.decode('(uint256,uint256)', log.data) + if (decoded == null) return null + const t = decoded.toTuple() + return convertToDecimal(t[0].toBigInt()) } - return null; -} \ No newline at end of file + return null +} diff --git a/packages/subgraph/src/mappings/swapFactory.ts b/packages/subgraph/src/mappings/swapFactory.ts index 9ce9f99..ae4df7b 100644 --- a/packages/subgraph/src/mappings/swapFactory.ts +++ b/packages/subgraph/src/mappings/swapFactory.ts @@ -5,29 +5,29 @@ import { BD_ZERO, BI_ZERO } from './helpers' import { TenderSwap } from '../types/templates/SwapPool/TenderSwap' export function handleNewSwapPool(event: SwapDeployedEvent): void { - SwapPoolSource.create(event.params.swap) - let lpTokenAddr = TenderSwap.bind(event.params.swap).lpToken() - let pool = new SwapPool(event.params.swap.toHex()) - pool.asset = event.params.underlying.toHex() - pool.createdAtTimestamp = event.block.timestamp.toI32() - pool.lpToken = lpTokenAddr.toHex() - pool.totalSupply = BI_ZERO - pool.liabilities = BI_ZERO - pool.unlocking = BI_ZERO - pool.volume = BI_ZERO - pool.volumeUSD = BD_ZERO - pool.fees = BI_ZERO - pool.feesUSD = BD_ZERO - pool.lpRewards = BI_ZERO - pool.lpRewardsUSD = BD_ZERO - pool.treasuryCut = BI_ZERO - pool.treasuryCutUSD = BD_ZERO + SwapPoolSource.create(event.params.swap) + let lpTokenAddr = TenderSwap.bind(event.params.swap).lpToken() + let pool = new SwapPool(event.params.swap.toHex()) + pool.asset = event.params.underlying.toHex() + pool.createdAtTimestamp = event.block.timestamp.toI32() + pool.lpToken = lpTokenAddr.toHex() + pool.totalSupply = BI_ZERO + pool.liabilities = BI_ZERO + pool.unlocking = BI_ZERO + pool.volume = BI_ZERO + pool.volumeUSD = BD_ZERO + pool.fees = BI_ZERO + pool.feesUSD = BD_ZERO + pool.lpRewards = BI_ZERO + pool.lpRewardsUSD = BD_ZERO + pool.treasuryCut = BI_ZERO + pool.treasuryCutUSD = BD_ZERO - pool.save() + pool.save() - let lpToken = new LPToken(lpTokenAddr.toHex()) - lpToken.pool = pool.id - lpToken.save() + let lpToken = new LPToken(lpTokenAddr.toHex()) + lpToken.pool = pool.id + lpToken.save() - SwapPoolToken.create(lpTokenAddr) -} \ No newline at end of file + SwapPoolToken.create(lpTokenAddr) +} diff --git a/packages/subgraph/src/mappings/tenderizer.ts b/packages/subgraph/src/mappings/tenderizer.ts index f1edee3..8d1aad0 100644 --- a/packages/subgraph/src/mappings/tenderizer.ts +++ b/packages/subgraph/src/mappings/tenderizer.ts @@ -108,7 +108,7 @@ export function handleUnlock(event: EmitUnlock): void { unlock.tenderizer = tenderizer.id unlock.amount = amount let unlockMaturityResult = TenderizerContract.bind(event.address).try__unlockMaturity(event.params.unlockID) - unlockMaturityResult.reverted ? unlock.maturity = 0 : unlock.maturity = unlockMaturityResult.value.toI32() + unlockMaturityResult.reverted ? (unlock.maturity = 0) : (unlock.maturity = unlockMaturityResult.value.toI32()) unlock.save() let unlockEvent = new UnlockEvent(event.transaction.hash.toHex()) diff --git a/packages/subgraph/src/mappings/tenderswap.ts b/packages/subgraph/src/mappings/tenderswap.ts index 2dbc412..83f1df2 100644 --- a/packages/subgraph/src/mappings/tenderswap.ts +++ b/packages/subgraph/src/mappings/tenderswap.ts @@ -1,272 +1,287 @@ -import { SwapPool, SwapPoolDay, LiquidityPosition, User, SwapWithdrawEvent, SwapDepositEvent, SwapEvent, SwapUnlockBuyEvent, SwapLPTokenTransferEvent, LPToken } from '../types/schema' -import { Deposit as DepositEmitted, Withdraw as WithdrawEmitted, Swap as SwapEmitted, UnlockBought as UnlockBoughtEmitted, UnlockRedeemed as UnlockRedeemedEmitted } from '../types/templates/SwapPool/TenderSwap' -import {Transfer as SwapTokenTransferEmitted} from '../types/templates/SwapPoolToken/ERC20' -import { Address, BigInt } from '@graphprotocol/graph-ts'; -import { BI_ZERO, BD_ZERO, getUsdPrice, calculateDayID, TEN_18, convertToDecimal } from './helpers'; -import { log } from '@graphprotocol/graph-ts'; +import { + SwapPool, + SwapPoolDay, + LiquidityPosition, + User, + SwapWithdrawEvent, + SwapDepositEvent, + SwapEvent, + SwapUnlockBuyEvent, + SwapLPTokenTransferEvent, + LPToken, +} from '../types/schema' +import { + Deposit as DepositEmitted, + Withdraw as WithdrawEmitted, + Swap as SwapEmitted, + UnlockBought as UnlockBoughtEmitted, + UnlockRedeemed as UnlockRedeemedEmitted, +} from '../types/templates/SwapPool/TenderSwap' +import { Transfer as SwapTokenTransferEmitted } from '../types/templates/SwapPoolToken/ERC20' +import { Address, BigInt } from '@graphprotocol/graph-ts' +import { BI_ZERO, BD_ZERO, getUsdPrice, calculateDayID, TEN_18, convertToDecimal } from './helpers' +import { log } from '@graphprotocol/graph-ts' const initiatePoolDay = (pool: SwapPool, dayID: BigInt): SwapPoolDay => { - const poolDay = new SwapPoolDay(pool.id.concat('-').concat(dayID.toString())) + const poolDay = new SwapPoolDay(pool.id.concat('-').concat(dayID.toString())) - poolDay.date = dayID.toI32() - poolDay.pool = pool.id + poolDay.date = dayID.toI32() + poolDay.pool = pool.id - poolDay.totalSupply = pool.totalSupply - poolDay.liabilities = pool.liabilities - poolDay.unlocking = pool.unlocking + poolDay.totalSupply = pool.totalSupply + poolDay.liabilities = pool.liabilities + poolDay.unlocking = pool.unlocking - poolDay.volume = BI_ZERO - poolDay.volumeUSD = BD_ZERO - poolDay.fees = BI_ZERO - poolDay.feesUSD = BD_ZERO - poolDay.lpRewards = BI_ZERO - poolDay.lpRewardsUSD = BD_ZERO - poolDay.treasuryCut = BI_ZERO - poolDay.treasuryCutUSD = BD_ZERO + poolDay.volume = BI_ZERO + poolDay.volumeUSD = BD_ZERO + poolDay.fees = BI_ZERO + poolDay.feesUSD = BD_ZERO + poolDay.lpRewards = BI_ZERO + poolDay.lpRewardsUSD = BD_ZERO + poolDay.treasuryCut = BI_ZERO + poolDay.treasuryCutUSD = BD_ZERO - return poolDay + return poolDay } - export function handleSwap(event: SwapEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - - const usdPrice = getUsdPrice(Address.fromString(pool.asset)) - - const amountInUSD = usdPrice.times(convertToDecimal(event.params.amountIn)) - const feeInUSD = usdPrice.times(convertToDecimal(event.params.fee)) - - pool.unlocking = pool.unlocking.plus(event.params.amountIn) - pool.volume = pool.volume.plus(event.params.amountIn) - pool.volumeUSD = pool.volumeUSD.plus(amountInUSD) - pool.fees = pool.fees.plus(event.params.fee) - pool.feesUSD = pool.feesUSD.plus(feeInUSD) - - let dayID = calculateDayID(event.block.timestamp) - let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) - if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); - poolDay.volume = poolDay.volume.plus(event.params.amountIn) - poolDay.volumeUSD = poolDay.volumeUSD.plus(amountInUSD) - poolDay.fees = poolDay.fees.plus(event.params.fee) - poolDay.feesUSD = poolDay.feesUSD.plus(feeInUSD) - - poolDay.save() - pool.save() - - let swapEvent = new SwapEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) - swapEvent.timestamp = event.block.timestamp.toI32() - swapEvent.blockNumber = event.block.number - swapEvent.account = event.params.caller.toHex() - swapEvent.amount = event.params.amountIn - swapEvent.fee = event.params.fee - swapEvent.SwapPool = pool.id - swapEvent.save() + let pool = SwapPool.load(event.address.toHex()) + if (pool == null) return + + const usdPrice = getUsdPrice(Address.fromString(pool.asset)) + + const amountInUSD = usdPrice.times(convertToDecimal(event.params.amountIn)) + const feeInUSD = usdPrice.times(convertToDecimal(event.params.fee)) + + pool.unlocking = pool.unlocking.plus(event.params.amountIn) + pool.volume = pool.volume.plus(event.params.amountIn) + pool.volumeUSD = pool.volumeUSD.plus(amountInUSD) + pool.fees = pool.fees.plus(event.params.fee) + pool.feesUSD = pool.feesUSD.plus(feeInUSD) + + let dayID = calculateDayID(event.block.timestamp) + let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) + if (poolDay == null) poolDay = initiatePoolDay(pool, dayID) + poolDay.volume = poolDay.volume.plus(event.params.amountIn) + poolDay.volumeUSD = poolDay.volumeUSD.plus(amountInUSD) + poolDay.fees = poolDay.fees.plus(event.params.fee) + poolDay.feesUSD = poolDay.feesUSD.plus(feeInUSD) + + poolDay.save() + pool.save() + + let swapEvent = new SwapEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) + swapEvent.timestamp = event.block.timestamp.toI32() + swapEvent.blockNumber = event.block.number + swapEvent.account = event.params.caller.toHex() + swapEvent.amount = event.params.amountIn + swapEvent.fee = event.params.fee + swapEvent.SwapPool = pool.id + swapEvent.save() } export function handleSwapUnlockBought(event: UnlockBoughtEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - - const usdPrice = getUsdPrice(Address.fromString(pool.asset)) - const lpRewardsInUSD = usdPrice.times(convertToDecimal(event.params.lpFees)) - const treasuryCut = event.params.amount.minus(event.params.lpFees).minus(event.params.reward) - const treasuryCutInUSD = usdPrice.times(convertToDecimal(treasuryCut)) - - pool.unlocking = pool.unlocking.minus(event.params.amount) - pool.lpRewards = pool.lpRewards.plus(event.params.lpFees) - pool.lpRewardsUSD = pool.lpRewardsUSD.plus(lpRewardsInUSD) - pool.treasuryCut = pool.treasuryCut.plus(treasuryCut) - pool.treasuryCutUSD = pool.treasuryCutUSD.plus(treasuryCutInUSD) - pool.liabilities = pool.liabilities.plus(event.params.lpFees) - let dayID = calculateDayID(event.block.timestamp) - let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) - if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); - poolDay.lpRewards = poolDay.lpRewards.plus(event.params.lpFees) - poolDay.lpRewardsUSD = poolDay.lpRewardsUSD.plus(lpRewardsInUSD) - poolDay.treasuryCut = poolDay.treasuryCut.plus(treasuryCut) - poolDay.treasuryCutUSD = poolDay.treasuryCutUSD.plus(treasuryCutInUSD) - poolDay.liabilities = poolDay.liabilities.plus(event.params.lpFees) - poolDay.save() - pool.save() + let pool = SwapPool.load(event.address.toHex()) + if (pool == null) return + + const usdPrice = getUsdPrice(Address.fromString(pool.asset)) + const lpRewardsInUSD = usdPrice.times(convertToDecimal(event.params.lpFees)) + const treasuryCut = event.params.amount.minus(event.params.lpFees).minus(event.params.reward) + const treasuryCutInUSD = usdPrice.times(convertToDecimal(treasuryCut)) + + pool.unlocking = pool.unlocking.minus(event.params.amount) + pool.lpRewards = pool.lpRewards.plus(event.params.lpFees) + pool.lpRewardsUSD = pool.lpRewardsUSD.plus(lpRewardsInUSD) + pool.treasuryCut = pool.treasuryCut.plus(treasuryCut) + pool.treasuryCutUSD = pool.treasuryCutUSD.plus(treasuryCutInUSD) + pool.liabilities = pool.liabilities.plus(event.params.lpFees) + let dayID = calculateDayID(event.block.timestamp) + let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) + if (poolDay == null) poolDay = initiatePoolDay(pool, dayID) + poolDay.lpRewards = poolDay.lpRewards.plus(event.params.lpFees) + poolDay.lpRewardsUSD = poolDay.lpRewardsUSD.plus(lpRewardsInUSD) + poolDay.treasuryCut = poolDay.treasuryCut.plus(treasuryCut) + poolDay.treasuryCutUSD = poolDay.treasuryCutUSD.plus(treasuryCutInUSD) + poolDay.liabilities = poolDay.liabilities.plus(event.params.lpFees) + poolDay.save() + pool.save() } export function handleSwapUnlockRedeemed(event: UnlockRedeemedEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - - const usdPrice = getUsdPrice(Address.fromString(pool.asset)) - const lpRewardsInUSD = usdPrice.times(convertToDecimal(event.params.lpFees)) - - const treasuryCut = event.params.amount.minus(event.params.lpFees).minus(event.params.reward) - const treasuryCutInUSD = usdPrice.times(convertToDecimal(treasuryCut)) - - pool.unlocking = pool.unlocking.minus(event.params.amount) - pool.lpRewards = pool.lpRewards.plus(event.params.lpFees) - pool.lpRewardsUSD = pool.lpRewardsUSD.plus(lpRewardsInUSD) - pool.treasuryCut = pool.treasuryCut.plus(treasuryCut) - pool.treasuryCutUSD = pool.treasuryCutUSD.plus(treasuryCutInUSD) - pool.liabilities = pool.liabilities.plus(event.params.lpFees) - let dayID = calculateDayID(event.block.timestamp) - let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) - if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); - poolDay.lpRewards = poolDay.lpRewards.plus(event.params.lpFees) - poolDay.lpRewardsUSD = poolDay.lpRewardsUSD.plus(lpRewardsInUSD) - poolDay.treasuryCut = poolDay.treasuryCut.plus(treasuryCut) - poolDay.treasuryCutUSD = poolDay.treasuryCutUSD.plus(treasuryCutInUSD) - poolDay.liabilities = poolDay.liabilities.plus(event.params.lpFees) - poolDay.save() - pool.save() + let pool = SwapPool.load(event.address.toHex()) + if (pool == null) return + + const usdPrice = getUsdPrice(Address.fromString(pool.asset)) + const lpRewardsInUSD = usdPrice.times(convertToDecimal(event.params.lpFees)) + + const treasuryCut = event.params.amount.minus(event.params.lpFees).minus(event.params.reward) + const treasuryCutInUSD = usdPrice.times(convertToDecimal(treasuryCut)) + + pool.unlocking = pool.unlocking.minus(event.params.amount) + pool.lpRewards = pool.lpRewards.plus(event.params.lpFees) + pool.lpRewardsUSD = pool.lpRewardsUSD.plus(lpRewardsInUSD) + pool.treasuryCut = pool.treasuryCut.plus(treasuryCut) + pool.treasuryCutUSD = pool.treasuryCutUSD.plus(treasuryCutInUSD) + pool.liabilities = pool.liabilities.plus(event.params.lpFees) + let dayID = calculateDayID(event.block.timestamp) + let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) + if (poolDay == null) poolDay = initiatePoolDay(pool, dayID) + poolDay.lpRewards = poolDay.lpRewards.plus(event.params.lpFees) + poolDay.lpRewardsUSD = poolDay.lpRewardsUSD.plus(lpRewardsInUSD) + poolDay.treasuryCut = poolDay.treasuryCut.plus(treasuryCut) + poolDay.treasuryCutUSD = poolDay.treasuryCutUSD.plus(treasuryCutInUSD) + poolDay.liabilities = poolDay.liabilities.plus(event.params.lpFees) + poolDay.save() + pool.save() } export function handleSwapDeposit(event: DepositEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - - pool.totalSupply = pool.totalSupply.plus(event.params.lpSharesMinted) - pool.liabilities = pool.liabilities.plus(event.params.amount) - - let dayID = calculateDayID(event.block.timestamp) - let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) - if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); - - let from = event.params.from.toHex(); - let user = User.load(from) - if (user == null) { - user = new User(from) - user.save() - } + let pool = SwapPool.load(event.address.toHex()) + if (pool == null) return + + pool.totalSupply = pool.totalSupply.plus(event.params.lpSharesMinted) + pool.liabilities = pool.liabilities.plus(event.params.amount) + + let dayID = calculateDayID(event.block.timestamp) + let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) + if (poolDay == null) poolDay = initiatePoolDay(pool, dayID) + + let from = event.params.from.toHex() + let user = User.load(from) + if (user == null) { + user = new User(from) + user.save() + } + + let lp = LiquidityPosition.load(from.concat('-').concat(pool.id)) + if (lp == null) { + lp = new LiquidityPosition(from.concat('-').concat(pool.id)) + lp.user = from + lp.pool = pool.id + lp.shares = BI_ZERO + lp.netDeposits = BI_ZERO + } + lp.shares = lp.shares.plus(event.params.lpSharesMinted) + lp.netDeposits = lp.netDeposits.plus(event.params.amount) + lp.save() + + poolDay.save() + pool.save() + + let depositEvent = new SwapDepositEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) + depositEvent.timestamp = event.block.timestamp.toI32() + depositEvent.blockNumber = event.block.number + depositEvent.account = from + depositEvent.amount = event.params.amount + depositEvent.sharesMinted = event.params.lpSharesMinted + depositEvent.SwapPool = pool.id + depositEvent.save() +} - let lp = LiquidityPosition.load(from.concat('-').concat(pool.id)) - if (lp == null) { - lp = new LiquidityPosition(from.concat('-').concat(pool.id)) - lp.user = from - lp.pool = pool.id - lp.shares = BI_ZERO - lp.netDeposits = BI_ZERO +export function handleSwapWithdraw(event: WithdrawEmitted): void { + let pool = SwapPool.load(event.address.toHex()) + if (pool == null) return + + let totalSupply = pool.totalSupply + pool.totalSupply = pool.totalSupply.minus(event.params.lpSharesBurnt) + pool.liabilities = pool.liabilities.minus(event.params.amount) + let user = event.params.to.toHex() + let lp = LiquidityPosition.load(user.concat('-').concat(pool.id)) + if (lp == null) { + log.debug('Liquidity Position not found with id: {}', [user.concat('-').concat(pool.id)]) + } else { + let bal = lp.shares.times(pool.liabilities).div(totalSupply) + let amount = event.params.amount + if (bal.minus(lp.netDeposits).lt(amount)) { + // if rewards less than amount, set net deposits + // to balance minus what wasnt subtracted from the rewards + lp.netDeposits = bal.minus(amount) } - lp.shares = lp.shares.plus(event.params.lpSharesMinted) - lp.netDeposits = lp.netDeposits.plus(event.params.amount) + lp.shares = lp.shares.minus(event.params.lpSharesBurnt) lp.save() - - poolDay.save() - pool.save() - - let depositEvent = new SwapDepositEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) - depositEvent.timestamp = event.block.timestamp.toI32() - depositEvent.blockNumber = event.block.number - depositEvent.account = from - depositEvent.amount = event.params.amount - depositEvent.sharesMinted = event.params.lpSharesMinted - depositEvent.SwapPool = pool.id - depositEvent.save() + } + + let dayID = calculateDayID(event.block.timestamp) + let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) + if (poolDay == null) poolDay = initiatePoolDay(pool, dayID) + + poolDay.save() + pool.save() + + let withdrawEvent = new SwapWithdrawEvent( + event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString()) + ) + withdrawEvent.timestamp = event.block.timestamp.toI32() + withdrawEvent.blockNumber = event.block.number + withdrawEvent.account = user + withdrawEvent.amount = event.params.amount + withdrawEvent.sharesBurnt = event.params.lpSharesBurnt + withdrawEvent.SwapPool = pool.id + withdrawEvent.save() } -export function handleSwapWithdraw(event: WithdrawEmitted): void { - let pool = SwapPool.load(event.address.toHex()) - if (pool == null) return; - +export function handleSwapTokenTransfer(event: SwapTokenTransferEmitted): void { + log.debug('Swap Token Transfer Event: {}', [event.transaction.hash.toHex()]) + // burn + if (event.params.to.toHex() == '0x0000000000000000000000000000000000000000') return + // mint + if (event.params.from.toHex() == '0x0000000000000000000000000000000000000000') return + + let lpToken = LPToken.load(event.address.toHex()) + if (lpToken == null) return + + let pool = SwapPool.load(lpToken.pool) + if (pool == null) return + + let from = event.params.from.toHex() + let to = event.params.to.toHex() + let toUser = User.load(to) + if (toUser == null) { + toUser = new User(to) + toUser.save() + } + + let lpTo = LiquidityPosition.load(to.concat('-').concat(pool.id)) + if (lpTo == null) { + lpTo = new LiquidityPosition(to.concat('-').concat(pool.id)) + lpTo.user = to + lpTo.pool = pool.id + lpTo.shares = BI_ZERO + lpTo.netDeposits = BI_ZERO + } + lpTo.shares = lpTo.shares.plus(event.params.value) + + let value = event.params.value.times(pool.liabilities).div(pool.totalSupply) + lpTo.netDeposits = value + lpTo.save() + + let transfer = new SwapLPTokenTransferEvent( + event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString()) + ) + transfer.timestamp = event.block.timestamp.toI32() + transfer.blockNumber = event.block.number + transfer.from = from + transfer.to = to + transfer.value = value + transfer.shares = event.params.value + transfer.SwapPool = pool.id + transfer.save() + + let lp = LiquidityPosition.load(from.concat('-').concat(pool.id)) + if (lp != null) { + lp.shares = lp.shares.minus(event.params.value) let totalSupply = pool.totalSupply - pool.totalSupply = pool.totalSupply.minus(event.params.lpSharesBurnt) - pool.liabilities = pool.liabilities.minus(event.params.amount) - let user = event.params.to.toHex() - let lp = LiquidityPosition.load(user.concat('-').concat(pool.id)) - if (lp == null) { - log.debug("Liquidity Position not found with id: {}", [user.concat('-').concat(pool.id)]) - } else { - let bal = lp.shares.times(pool.liabilities).div(totalSupply) - let amount = event.params.amount - if (bal.minus(lp.netDeposits).lt(amount)) { - // if rewards less than amount, set net deposits - // to balance minus what wasnt subtracted from the rewards - lp.netDeposits = bal.minus(amount) - } - lp.shares = lp.shares.minus(event.params.lpSharesBurnt) - lp.save() + let bal = lp.shares.times(pool.liabilities).div(totalSupply) + if (bal.minus(lp.netDeposits).lt(value)) { + // if rewards less than amount, set net deposits + // to balance minus what wasnt subtracted from the rewards + let remainder = value.minus(bal.minus(lp.netDeposits)) + if (remainder.lt(lp.netDeposits)) { + lp.netDeposits = bal.minus(remainder) + } else { + lp.netDeposits = BI_ZERO + } } - - - - let dayID = calculateDayID(event.block.timestamp) - let poolDay = SwapPoolDay.load(pool.id.concat('-').concat(dayID.toString())) - if (poolDay == null) poolDay = initiatePoolDay(pool, dayID); - - poolDay.save() - pool.save() - - let withdrawEvent = new SwapWithdrawEvent(event.transaction.hash.toHex().concat('-').concat(event.logIndex.toString())) - withdrawEvent.timestamp = event.block.timestamp.toI32() - withdrawEvent.blockNumber = event.block.number - withdrawEvent.account = user - withdrawEvent.amount = event.params.amount - withdrawEvent.sharesBurnt = event.params.lpSharesBurnt - withdrawEvent.SwapPool = pool.id - withdrawEvent.save() + lp.save() + } } - -export function handleSwapTokenTransfer(event: SwapTokenTransferEmitted): void { - log.debug("Swap Token Transfer Event: {}", [event.transaction.hash.toHex()]) - // burn - if (event.params.to.toHex() == "0x0000000000000000000000000000000000000000") return; - // mint - if (event.params.from.toHex() == "0x0000000000000000000000000000000000000000") return; - - let lpToken = LPToken.load(event.address.toHex()); - if (lpToken == null) return; - - let pool = SwapPool.load(lpToken.pool); - if (pool == null) return; - - let from = event.params.from.toHex(); - let to = event.params.to.toHex(); - let toUser = User.load(to); - if (toUser == null) { - toUser = new User(to); - toUser.save(); - } - - let lpTo = LiquidityPosition.load(to.concat("-").concat(pool.id)); - if (lpTo == null) { - lpTo = new LiquidityPosition(to.concat("-").concat(pool.id)); - lpTo.user = to; - lpTo.pool = pool.id; - lpTo.shares = BI_ZERO; - lpTo.netDeposits = BI_ZERO; - } - lpTo.shares = lpTo.shares.plus(event.params.value); - - let value = event.params.value.times(pool.liabilities).div(pool.totalSupply); - lpTo.netDeposits = value; - lpTo.save(); - - let transfer = new SwapLPTokenTransferEvent( - event.transaction.hash.toHex().concat("-").concat(event.logIndex.toString()) - ); - transfer.timestamp = event.block.timestamp.toI32(); - transfer.blockNumber = event.block.number; - transfer.from = from; - transfer.to = to; - transfer.value = value; - transfer.shares = event.params.value; - transfer.SwapPool = pool.id; - transfer.save(); - - let lp = LiquidityPosition.load(from.concat("-").concat(pool.id)); - if (lp != null) { - lp.shares = lp.shares.minus(event.params.value); - let totalSupply = pool.totalSupply; - let bal = lp.shares - .times(pool.liabilities).div(totalSupply); - if (bal.minus(lp.netDeposits).lt(value)) { - // if rewards less than amount, set net deposits - // to balance minus what wasnt subtracted from the rewards - let remainder = value.minus(bal.minus(lp.netDeposits)); - if (remainder.lt(lp.netDeposits)) { - lp.netDeposits = bal.minus(remainder); - } else { - lp.netDeposits = BI_ZERO; - } - } - lp.save(); - } -} \ No newline at end of file diff --git a/packages/subgraph/src/mappings/unlocks.ts b/packages/subgraph/src/mappings/unlocks.ts index e412629..63a9471 100644 --- a/packages/subgraph/src/mappings/unlocks.ts +++ b/packages/subgraph/src/mappings/unlocks.ts @@ -1,24 +1,23 @@ - -import { Unlock, User } from "../types/schema"; -import { Transfer as UnlockTransferEvent } from "../types/Unlocks/Unlocks"; -import { ADDRESS_ZERO, decodeTokenId } from "./helpers"; +import { Unlock, User } from '../types/schema' +import { Transfer as UnlockTransferEvent } from '../types/Unlocks/Unlocks' +import { ADDRESS_ZERO, decodeTokenId } from './helpers' export function handleUnlockTransfer(event: UnlockTransferEvent): void { - if (event.params.from === ADDRESS_ZERO) return; + if (event.params.from === ADDRESS_ZERO) return - const decoded = decodeTokenId(event.params.id) - const idAsString = decoded.id.toString() - let unlockID = decoded.tenderizer.concat('0'.repeat(24 - idAsString.length).concat(idAsString)) + const decoded = decodeTokenId(event.params.id) + const idAsString = decoded.id.toString() + let unlockID = decoded.tenderizer.concat('0'.repeat(24 - idAsString.length).concat(idAsString)) - let u = Unlock.load(unlockID); - if (u == null) return; - let receiver = event.params.to.toHex(); - let user = User.load(receiver) - if (user == null) { - user = new User(receiver) - user.save() - } + let u = Unlock.load(unlockID) + if (u == null) return + let receiver = event.params.to.toHex() + let user = User.load(receiver) + if (user == null) { + user = new User(receiver) + user.save() + } - u.user = receiver; - u.save(); -} \ No newline at end of file + u.user = receiver + u.save() +} From 763bef929aff66bc8579ece2bcb3f332778135a1 Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Tue, 18 Feb 2025 11:06:26 +0100 Subject: [PATCH 4/6] fix CI --- .github/workflows/CI.yaml | 58 ++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 9390fce..1c40387 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -1,7 +1,4 @@ -# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Node.js CI +name: Bun CI on: push: @@ -15,21 +12,50 @@ jobs: strategy: matrix: - node-version: [16.14.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + node-version: [18.17.x] steps: - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} + + - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - cache: 'yarn' - - run: yarn workspace @tender-graph/subgraph install - - run: yarn workspace @tender-graph/subgraph prettier:check - - run: yarn workspace @tender-graph/subgraph prepare:mainnet - - run: yarn workspace @tender-graph/subgraph codegen - - run: yarn workspace @tender-graph/subgraph build - - run: yarn workspace @tender-graph/client install - - run: yarn workspace @tender-graph/client prettier:check - - run: yarn workspace @tender-graph/cient codegen + # Removed yarn cache since we are using bun + + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + + # --- Subgraph Workspace --- + - name: Install dependencies in subgraph workspace + run: bun install + working-directory: packages/subgraph + + - name: Run subgraph prettier:check + run: bun run prettier:check + working-directory: packages/subgraph + + - name: Run subgraph prepare:mainnet + run: bun run prepare:mainnet + working-directory: packages/subgraph + + - name: Run subgraph codegen + run: bun run codegen + working-directory: packages/subgraph + + - name: Run subgraph build + run: bun run build + working-directory: packages/subgraph + + # --- Client Workspace --- + - name: Install dependencies in client workspace + run: bun install + working-directory: packages/graph-client + + - name: Run client prettier:check + run: bun run prettier:check + working-directory: packages/grap-client + + - name: Run client codegen + run: bun run codegen + working-directory: packages/graph-client From c0a46c7f1e84c7ce2a7047ae88dd3f28738ee367 Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Tue, 18 Feb 2025 11:08:05 +0100 Subject: [PATCH 5/6] fix CI typo --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 1c40387..63bb90a 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -54,7 +54,7 @@ jobs: - name: Run client prettier:check run: bun run prettier:check - working-directory: packages/grap-client + working-directory: packages/graph-client - name: Run client codegen run: bun run codegen From 762129bd15d1b1893c8dbc3a5b11f5d0708df54d Mon Sep 17 00:00:00 2001 From: kyriediculous Date: Tue, 18 Feb 2025 11:10:51 +0100 Subject: [PATCH 6/6] chore: lint --- packages/graph-client/gql/Swap.gql | 20 ++++++++++++++------ packages/graph-client/gql/User.gql | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/graph-client/gql/Swap.gql b/packages/graph-client/gql/Swap.gql index 2550e08..370ce6f 100644 --- a/packages/graph-client/gql/Swap.gql +++ b/packages/graph-client/gql/Swap.gql @@ -37,10 +37,14 @@ query getPools($dateFilter: Int = 0, $first: Int = 1000, $skip: Int = 0) { lpRewards lpRewardsUSD - poolDays(where: { date_gte: $dateFilter }, orderBy: date, orderDirection: desc) { + poolDays( + where: { date_gte: $dateFilter } + orderBy: date + orderDirection: desc + ) { date id - + liabilities totalSupply unlocking @@ -56,7 +60,7 @@ query getPools($dateFilter: Int = 0, $first: Int = 1000, $skip: Int = 0) { } query getPool($id: ID!, $dateFilter: Int = 0) { - swapPool (id: $id) { + swapPool(id: $id) { id asset lpToken @@ -72,10 +76,14 @@ query getPool($id: ID!, $dateFilter: Int = 0) { lpRewards lpRewardsUSD - poolDays(where: { date_gte: $dateFilter }, orderBy: date, orderDirection: desc) { + poolDays( + where: { date_gte: $dateFilter } + orderBy: date + orderDirection: desc + ) { date id - + liabilities totalSupply unlocking @@ -88,4 +96,4 @@ query getPool($id: ID!, $dateFilter: Int = 0) { lpRewardsUSD } } -} \ No newline at end of file +} diff --git a/packages/graph-client/gql/User.gql b/packages/graph-client/gql/User.gql index ce58eb6..ffe7fc8 100644 --- a/packages/graph-client/gql/User.gql +++ b/packages/graph-client/gql/User.gql @@ -1,6 +1,6 @@ query GetUser($user: ID!) { user(id: $user) { - stakes (where: {shares_gt: 0}) { + stakes(where: { shares_gt: 0 }) { id shares netDeposits @@ -31,7 +31,7 @@ query GetUser($user: ID!) { } } } - liquidityPositions(where: {shares_gt: 0}) { + liquidityPositions(where: { shares_gt: 0 }) { id shares netDeposits