From 8cbc311490cb614ef1ad3664a41116b58cc7e64c Mon Sep 17 00:00:00 2001 From: Joe Pegler Date: Thu, 6 Jun 2024 13:33:39 +0100 Subject: [PATCH] chore: use hooks --- bun.lockb | Bin 792118 -> 802470 bytes package.json | 8 +- src/App.tsx | 26 +- src/components/AA/BatchLiquidity.tsx | 123 --------- src/components/AA/MintNft.tsx | 130 +++++----- src/components/AA/index.tsx | 44 ---- src/components/Faucet/index.tsx | 112 ++++---- src/components/Forward/BatchLiquidity.tsx | 218 ---------------- src/components/Forward/MintNft.tsx | 228 +++++++++-------- src/components/Forward/index.tsx | 15 -- src/components/Modules/ABI_SVM.tsx | 64 ----- src/components/Modules/CreateABISVM.tsx | 137 ---------- src/components/Modules/CreateBatchSession.tsx | 205 +++++++-------- src/components/Modules/CreateSession.tsx | 140 ++++++++++ .../Modules/CreateSessionForCustomSVM.tsx | 241 ------------------ .../Modules/ERC20TransferUsingSession.tsx | 151 ----------- .../Modules/HyphenLpUsingSession.tsx | 139 ---------- src/components/Modules/UseABISVM.tsx | 110 -------- src/components/Modules/UseBatchSession.tsx | 152 ++++------- src/components/Modules/UseSession.tsx | 62 +++++ src/components/Navbar.tsx | 7 +- src/components/Onboarding/index.tsx | 5 +- src/components/TabsBody.tsx | 60 +---- src/contexts/SmartAccountContext.tsx | 86 ------- src/index.tsx | 13 +- src/utils/ErrorGuard.tsx | 14 + 26 files changed, 643 insertions(+), 1847 deletions(-) delete mode 100644 src/components/AA/BatchLiquidity.tsx delete mode 100644 src/components/Forward/BatchLiquidity.tsx delete mode 100644 src/components/Modules/ABI_SVM.tsx delete mode 100644 src/components/Modules/CreateABISVM.tsx create mode 100644 src/components/Modules/CreateSession.tsx delete mode 100644 src/components/Modules/CreateSessionForCustomSVM.tsx delete mode 100644 src/components/Modules/ERC20TransferUsingSession.tsx delete mode 100644 src/components/Modules/HyphenLpUsingSession.tsx delete mode 100644 src/components/Modules/UseABISVM.tsx create mode 100644 src/components/Modules/UseSession.tsx delete mode 100644 src/contexts/SmartAccountContext.tsx create mode 100644 src/utils/ErrorGuard.tsx diff --git a/bun.lockb b/bun.lockb index 5cba6d3d25d916f74d3094da578debae4e9c6789..01129a6c918faa6e9c0cd4cedb70c6c1874e3316 100755 GIT binary patch delta 171129 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 z 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ⅈV0ZvLZ}yOE4EB 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 z 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 b-QQPL?QgX9MW}>rPH#;}N`2d$&mI0B9kS^! delta 165122 zcmb5X2Ygi3)Bk_(CJVU~1*C~I>Al0IE<^z-O7Ex;k^q4;Qh)?P5}JaD<)YV$4Z(&5 z6eWrp5$s!!8|T%B;; z(zd0y1M65;*^+#dV`b#$7&c{2MnO?-x)m3&EGm_)h_bA@(6-?E(4Kz!IX+_!{LG9wl>4iZ z;ur=m<$97&7iFz{`YTk#`;KxHDJ{DcBy!dxLuh73fsEgR_MBgkm05_rM3McVB0wvs zG|+(2iz(~V%em0SDVa!wK+SakH=)h8q^B=V&o0QftQ{1RcKV*D?G!`nS*2E4N5jxT zOBJ94R7TVSDkG=`m5R+MC+VkJSXOIjWW*nXTY*db4xBbBU~Wb>;#k%|q!5kPfr`bu zL#5s8DOax)rYQ+BqTfi65q$|2i@gn%jw_(zLixGqq@QKI(@sq`x4kwv6)NRxbx;9M zf<@5Vz@o8??D^?=83p;HNEbnJvQu$H%UY6`l6!e>k!9Ua2cr7TP^s`3BSMR1-!n`Z z>93u%!*8J?dEs0$Fe_(ndO_-Z%gX4i_0!Vx3uI2VmyL0kVQq%F&dLc>2Gbg}^A-6!K03(~1nKQ>~6{{78 z`xVdeHPSEMvT)L}CQ$Ln6LFS>Nz2}YwuL?cJs;{p#jZ>J{L7)3yzD}#)b9p8R~k4A z2JbKXjSi*2S5Oh?qgZ!AOzYCQgB4EmY3301gG<1okd*AAtQ0(?`?=c8#$=tU@6fsU z*DJIsmUtE{6X0gBq({nM32q49bD=77u8)TgHR+{gH^PWKTPYwjq{}c3HcR}1kAuZk zrhhr5#R_NFnep(y9(AXY3JZ2 z+D|H?hwZUdbF72lmPL1V|im!rt?lb)ZN zl9`g0o|>6an1P^?Wg@ZwZ=b>pk%oFs)`nU_Me-}Bs;`~{rmwOilT<^mLYsokirX_I z|I=wI$R5(Aod^7K{b%Sva`SSsm`GMieoC%r>UO_eq<+Vl=wF;Hb$&|bLJG9LR8=!S zCBNs~%#?XYW~yMHlP*qn5G>`FUZ&~Kg2iVVU#^=j9a6o8NC~L3(x?Ig#-E@36c(MZ-Ww zeo9_mN|Ci4Ox!68(UEBGE7}vhKUIBW3zW!Twhnq8^iU}U#7iY6q-5q>Y3Xwc=h0yn zF+@Hu5QIdvw?V~6N})2VWg8+5yiZ}N-wrIMTSoAb0WE~eNdG6z4#XiElVAEj?HMkl zL76uFq0-QTeB23vuE9>??ISZ)fPPRh!BWzNj?U6Juow-9;NOB}dPjU{A?aem*-A^x zhQLVRSe2tHdkHE9QZssHWV1-&BnC%(p$vOU!$C|aBQEyq$-Y7G_kQ|xRxxQOGSd9a zlzfy@!4z?c~J2IW* z@-njWQs!EgSw|RA&t=+i2dD`298~JHU#{&nfr<%GXJ*E{`32{aF9XX;FUT9j;4Ja> z6h_--g;s0=HPeSBwP)HK>+ces_uoLp#WFDP*F@FRN~ibj6)RkxIdn?Q0e&NbxJ=3%Yc>;mBh6B z)@%KOtlUhC&vI}RSvqc~pmY$4TZ_mLJV!mkTE0OA`S+~8k9smP7b=QgRG41KJhKYG zGQ#c~HGLsi1ZS6(ot|1?9VcDd&rM;#rG@US3XK&-A4&H@OQMwJsfggSOX>Y>}_2Pn+GSxE@pnau-xAaRMrG{r}wG{ZHFD zT!T5&kp};5+PydHWPI#S^~v?OX*j#~E=|9NbeWtJCTdiA>~5Xx?H^K?2tdV`k3c0J z=cVW8WG+s(e&4RX|2@>~`wqjLMFEzwoF%BT_amyw4W!G6zkE;w`O7}t36(IIo?lpy z!9tJ=?grlbm}PZ`uGyiQ>%Y^oI)fWQMUeEzEvr2=9xCN(lU|p3Q4_FFQc*hm2-*tz zHdHJ(4=S^20V5VoT|kGupyxrQgA)&E`Ww)$;0~1Q0Ida;dOa#Es~_~kJ1naQbQ|SF zBdejMBGG_nbVM`#27cPC6}oRl8|2@(M@Ja*oQ8?dp4A3+L8ZZ0C@+F+gNjM|`R%-e z$)uxbun26?o{ap+{VL$D`I01hO9%OMGyvKJ zECV=xpYFRxlimgVDp=BQg38F#pi+J%?e>Lsr(9d;ko(ZTs49gFu~98DIzrn~p*8gP zZ3J!TYg<$U`@y1-AKtL6Sm>Q#5p*yDN{7Who&uG2ci*njeG&K+0!TY6NEbQ-Dgq=kFd6B2 z&`!|bDKAv|m3r}AVWgo~?%^;Gy$TwJhM|{0Ye8kCTbW*Up`#A#G`sh(`#{sy-LCjV z!$CIJEj`)7C6nz?Y!Fn6_kh-co^{y$rD>JXESy0j2#ZYmSc2Hv%zy5dB7e}dt zc7@&ym3jl9;=y&G-K=z6n-0X4ClmHsLJQKfazz#I9oMLluiMy~^}+i=($E2tyWwZGS5B^3CO9tZc|CGY-$Oak;K^UKTvkfn zLUuD&WHYvz{5IrAHt3O!eW{vaFF{>6i=4dFlPc?zU0Q+?4!+MKqX~UYMUT zx5(N>`Z<(aV%w&}y-+bhd%yhA2^v;2bLK6~C@3gOODQs!g0-V;l*VS}-?x)Dk|Emj zZz;|oE#DZE{eqm;MAz=dLItGrc?I zq<&;qRtJ23DG3X5GN@)*uf*79gS{InPH?|ZZ-9zGclh+1pl#yzj5@a2U`NeXmGAe{ zi&CZ=cSUEfQXH94zG>%84dcHndBP?fz(Jo843{v=JGf zL&dRwrNgGsspsfO*MVgO1yI>E%!i7TjbZ?zv2&ZK=8iYEO*n9T+`6f@8@T~E3oPaP zO+f$6Ve)b^Gr3>3R-bE|&BA=B#FNoJ?gu>=+!!h=*-y=Fvmm?$Z42H3mGo<%?V(vv zSz5H$GYepykU8sIjCst-gY`m(o-|i^YQ;_?bQUOk!!JZ&L+798L9m{=t$c_ zWm+|Zimlks&F@9UIqY{+xEq+0Er?Z(hQy{xP*G{*GG`7CIV9F>K>!)p8mMUE>drdA z!%zlPS~jtZCafSq=IwE?G?YdKan2V5I)XG7Fm5>W$CECCwd<}va1K=J{nbtJk5Iu8 z=e?tc3U~ulX3;vR_{=puWnj$z$n%zEWQeMAducAn(6S;XOX{x;=1LgkbJGA7AkyJAU@_hHfhy2yu$Za`^%_E@9{pQZL}l(E^~%)D ze4_p7^&(>H>BI-o(8W-3(yDl!o=ei_{u#>2bZr_|fs3Ic z$ajf$En|x&Zr4_AO0OO4kB4SNK~Z2)WaPA2kdm7+Co|nTOtaGc^Uzk%tx&OO+68Ke znNS&b1bgI*VXlCR!3v?$?&VOKOGBabS6WtYnEL!5Lsi~;z~VAT!4ihL4%d#K11j#oAO5-#%xwc62YA zkdZFFL>2i2nwODgf<>^)pfa*VpN@vg$a?xX=;KQ2NqPpC8uGanEE;Y`z6|Vp!QzVV zz=*_|P?2<%j|=7gpNg`-5?|XqK?OSw6<3YioL)|OvG^FMs5)Vinu2{2TS{UrSTq+k zTbHae@0LqN!pPRZtNGQ{<)3OJ7|J;1lSS45ldk89mcs{)XD(z-MWrb)s2}UF?MwQah z5O@6fZA$-ryO)w*l%0y@zQIr;-oPxi;2lsAKeB?pLB2G*JzMp+87g933l&4|CSN@3 znH&`_Iak~3?$gFlhErO02L(l;cPvr^Z1QO&+GXZx!=Dr7Wc-ozx4|;*PYbkRqMaF5 zlfgC0GjrV%E#AYYZJ;vVbD*NF{G8N< zvLa^{saoHG%J}v{WxTU|`Yz&#A4QHja>V(*UC+`>muovOkuU8&3l+b+A1Y?61(kL> zL1o5lUZL$A_2~wv3^xHP_0EH~h5l8lD>wI21Q3Eh{Kj!RJ9mfXG`3 z_fS9_^)@<|^z@}Hi23=Jygb3f7_L)QkVT?IK80ZM%g6xcuU3KPkuC$^`geX#TD~;} zEbZ!DBGGp^3F45cIXMe6I1a{xMYEluGUAp{(Oh22lAd#N(u(?Bp&jjkO1a2U=WNP} zpjRWXc-$hWg!wr>&RD1U1@jBD<#hNIxQ;~Me(TkP#!^r^91ay##zCdQ#!yl5=lL2% z4?<-`kKt(|Sbkw@UJB2himq1EXBDePnrzhkg8Av$vRA0%CEnjZX3b{G?1*BQuZqg33Q?hg9OmcvH(a=_?2=+2mY#zQ*%T@UGzXD5oWQ%kF zER*69@RluprX2n52VaVF-z+@-xLco zbFx#YxdbdGiwq?4oNDZ?+D?nxRFFBdGv=Ai-r_R7Qi-L2Xe91-Ef{&$IG+Z^sg`Wk zkPn+IFXQn@BD3pwCGcgVwwTkey+M z-I{zkucY&aOm+eH>|3VPT4dV(O-Y} zuFlQkI)bG8mVWWb)4<4fq8{ne&6oFSx4h6`%rn#dxpSM+Q}^hQhd!X4)$9XvQVa5U zzVsRSqQV!UGKl-3vLamikj}?Dz~UU&K&6-Pc5Uz9m-e5MF3O2q)-R^~xe~Fa!AQfA zjcFvpN1hf$4&w6EKssvlsM<fDr@c>DJKzYj4;qRs4Nm4eH;xvAAIZyUDDt6>C;eDSGEl*^)^7o zB!y5h)g-9Yy9g=+=?Il`G%>(zUF(Boi|{uBmWt>62qU)p94da5z1LS6ROa)3(nUkJ zL%TxrpxvP(eO$HEHmlTI&~Bvfgi87Ap(02TR0N(06;ls{$~9P%o%UE$@po+0mW2M; zM&@DZD=Nr5s7N{vDkJMiz6c!gjkCd`%9C-L|3#epVYk+$kyq;??=D0hOhsNHh&-73 z_tW83IeK+d`wboUqi-sWJmS3YEfuTb+d5aGp`zf(Q{y+mcuZ;8e!sxu2UOnnR1~={ ze@7MTysq?Ou(%kju{@!(wo*^@aQI!ds0S8Tt4)2Ok(=&>_tf&epd!GV2i0?y91;QX z=`k?U@NB3kZu5DjyzcZ_w(_-6chm?5Ad(1A+h9w{Ir}bX6;p=Q?|!C@rG$Yy<}HoFHZriffD=E|F5eB#}%Jv*1SpmbYu z9lyDbUutwa^@)yqCs?}q0xVPYBdCPvtG`llK7&f@W`E61=>b1~KUAcMy#DhHSc2J3 zKcA_YUr?0kzS*;3=~mK2r#rsYGLg6Anu=~o&-zaLNau!`hu1~-_%;~%y~+{~71gBX zn1NXM%lar*+kNDij-~E#^^t7K5l%|W)?r)`w(}3_{*fmm=}Yy^%u@12 z_~w4O4p0&7)gLvz`ZcW|S%7+xF4MmyRBTuuDgwUovkv5WsMJsSMVt)peUt?8vNcfg zx~!Ci=1ESSU$x@YU1TJ&Cv_w{!6Im#Qz~F4R65)b6=y{6yxN#9zHJ`RwyIK1oedRt@qD_Q@=Zh) zQYr=WJwk%0`ds(t-pxu+(47SQxN2>_H&k-dateB;vS-cCF~sWhm!|WC!F(b+#7=&_ zmVUhvf2(*O(XK>=$hrT%I8Aq<;^qE5L221?5+s~72n0-kzZNQnxG*YU&ie)a^XGlw zHl%llN`75vTj*bum*Hg~mUu+99WZ)}JP5z4cEAiM@{ZREu#{h9D4sD3Mif6DDvBHG z7kJ$X7|rylqYdt;rTOQRFNWz*SL>~WN|-t3w{%{lR zAhKr3gOq{P?cOwCCi$Iy{?$+;kpB)@9$0*0GE~}q&<>QEkv!2{M|3?Mhz%Ry6EecY z76J2kxGPi|YU{6(dzO7Th zOwnI``Xy8hlHuo1Jzwih0?S;O-$ijOSbA>*HLlz)V96%yOQ;z5B`ABH(z1tOM3Eby zZJ`BzftgULI2vL_x=HGN-r3o zr9w~%ZIKl&a;W*A4m0Wbxx9LoV$ILVF_)h&^w;`xG7Hn^WaOp&%&H{4de?V z&`3nCiNx+J13Q=AM%$vx=fgVKEl@G`^-u{vFANEojqVLl@##fSx$nHhr){9Uz&{UG z`YKeO+irzQx$9|PRGkX#4Sj$yN&2>7#zbz;pz}*3Pqm5F#_r91x^je?F$XGsF@2;e z@@}Y%e^Gi*iiYy0XubMS z!ABF{-^l*^l`?f(ZV9q)n4K)X_2ew0#nj^AM2%e280lQb9~XCz|#gKpor zW~DFB(&`>mnr#jhv5sG^2CDSw2T-x}Q1T`6+ys_#+riS?OLNpfk*An>q>EUOkS>N^ zz@j)mrN6b3deYBo@{yvn>@pZ>s3%km6V!~dGz!XjZz!}abURc8*oOEr&dqbx1J0VK zmM<)r8%vf|2$mS|GgS0Ha(=)VF!Bg(pg+{pz=5Jmq%!=mW#{SFpq z6qv10dj6ckjLbCaflOaxP|@Qms0g;mPruB^qx}3>KfQyWeil?TP_>YH;whiQ7?*@f zMg>$F-YNy4o1mh~G9NF1O1Y^}DR%)>G}z0}Z|>(u`}mgyT7M>k>N0+|jYDNB1@9bKFN0n!9f$+}V86^anGq?;gEv z+q&cFol?47^xO-(a+4eO`E%!pa05GL_#KBIxVzcYCwER8oNK$!CpK?z{zttp?|k|B zUpKtvyJpQleRtl@mxuI;is?JQ<#}JVo^zLb^1^T2Z-#b>Y5(5(%Dc8KU*a|x);wlf z+uPbN*(C(*uKN`B}gU^g*Z4@|hD}bLeZ_KT%(XrCyZ24$)8NM|%ey_&`QiU$T-;^*Bi|I~ zxbIIn61r~rq>;~@6F=s>A1)sGR>#(_c^9k=w(8q7sp_ZLR-4;5EBoQXltWDlp1W&U z-lR5LrzNZ$^ulv3KdN2jUXwIqY}~MdMt7x-D{eDAH+T1^Tl?+mu;S+z8nt+1`}23d z^=n4<%I%*ta!Y@Fa%20x&sE-YZu6t>eg1N%_>Ala25vYq;n(!LN4|Od?Q0*s=*aC$ znht(x#!q|QBZ+Ni&-NQ#@yXJ=o87Yh-nZs$uHWG6+fH6JeN)uX*Dn~?{lvg#={xdw z^&kD!iCwF@){e+OyKeUuld5tXP5fl$=Q9tN)!jF8=!P!EmDjXB{_KIB!{40T{k?nl z&07C;)y|)$zICoUBJbLmh&Vgn&x;N0Y+iW8cIFY9`{A|$x3VlGrz-QpU%<8R4h6;s z-1wzo`)apn$>6|&fLmM=cA|NLGl=rGYrhtJTO+Uhay!;7Djw`SN>V%xMoWXi??4y1)kO(T z-&#B>62ZLWMs~<41WLcrZsp^#(SUe2sW>5UqLy2=ENu61%n}2t^r%DDpf5uqWg{H0KD;P6zDp@*mZ8VU?!go;w1vb`k zD>j6kLnQVm@ocwzS;#43MUe`PTzh#axEGWt-8p~5$w-23a&gFsBX0HqMZ4uCAtwVg z1Vkq*LV^41xy2j9jvO$F8)da5F*s9@TV0aicyLolj}nzQ$3bCGj8RZ`qUjK~`qhNs zLbwTr+XFYsOr2)d?% zn~d(pfCjsJHYEhFuHjyX8)?#-5YR6&Tozoi;T|?z$)<$Bk4@Z)8^gh*rl`Q(b7Mka zT~jyS3p)o$kkLfBcuAmBGq=JE2lH85Mj31Gfg3GSdF78FadWr$rm!=L)mg_}c~!{S z0GeS0FTW||>}PctVA>O{R)MsnjE4S*_u+z0QM>o?B z26C2zY6J?l<^*t|yJuxWAf=64bz3-aL0dQe_OP?2t;%Fc-@$#LMA4aJpRegAECiCz zcjGsQ9hbyObikZl5^}x=)Q53X{C)e*(V~;yR!O@_Rrqm|5$&|9)WbD+jvs-mn*cr{s zF=7EG!O~Fh3Q#Y1&xQo&2{YlJOx10ZNyj!_4WW-;hH5XG3m zuZEMhRPOyC>7Q_hrvCzsFtuexo6Zn?^|4lM28l$p%sTcyh{mNJVXG-ivXmqy5q4*T zhMFa7JDk)Zon_%`kZ8rMeZkIjn`oA&R5&T6k?VGljE7}rStxi38B^Tqor%#fGu-OO z6Jua5ugRau?3nG9%&-$<;O0cqomPl*X$>j@)zongfhN`Dbx+b|)%53-gC^AEy#tz7 zgSsQu>3XFg@x$6C<{bi=H7n3$up7TC>=X=E#iA}|?n9dR1&LBeb>9Uy5JVKhXG%b$ zv@bOJ5{M?TI5Qv^WMdKQRxeA8h8b^S-Zr=y6fk}ow6W+&w}k!GD7e8yrNkH*+0IZv z7TOEk;@#n3Q&PsedzK^w=fMp&ExisWF~$@O)9K#zu!g zz6Z0hsgDM5C8e9;6{vfO zTTvMfWL@G`Rfe6L(TwzkR9Lg)7`LJ<9F;M~^8V}=NOCF}Xu7m$a{G>Tt6m5PbH?Jl z?w-m7=OsA)BVgcYf$%uDcyBoHz&N*JFFSX%B6hXB$_{oYFn5Am{7%@3n{1h_Z9~`I z5^^#@xLa8hFZpEz2K8~1RwOuw;h3$W9D+xaDSmYH${$CmAZDsR^~*s$Km^1qLct2q z1#Z&1M0<)G|86*tG}SGJTsPINcsJbTi>bPrT6~(zKmO-6(%BxB&73*-=kK51_K|yJ zaq~djG&lZWIIwP-TYNAa>^xnL8Jqx|*>Fq%i8X)6+SA?m_rlJXq=`omd9hxY*&{QI zsKb0)4jKfCkv&mh#|$_AP}up5MDe;7<_yqhrfRC8mt4U3e585DKoWKd|7fBIUMMa^ zNT#D)kZ4KwH1}QVR=po~PLL>(wuyK|Abgoy{6RRd`ZBlTgRryjGBp=!WrNh~a#aUw zI9r2Npy_VXp#NsFgG3pR>B?z1=Zw(gj0KI; z>NxrxAW@@6rGp^dp*2a3EFR_ehk|1Tc}dNYE7h%fH5}}a#xF|TJ)a~5)~C6}pN4~< zkuXFOoHy}n5wEUW`C2GYd#+o&CLD~Li#y3aG*}GBUh|WL;4Zjq(?*ARZpD#splqI7 z1^IfO8-Fw$=se#oKFUsYene}mNWn_b1*V&*3>`P&`asAT36cSGW+Mh%4H6MFYVQNd zfbpA;V`CPmE-(&Ts)?WrOjbF%xB;XFVq+F~dx2Z^c{n&|q2FWRv4w8&7vaF?3*8Dx zTBcj|Mc8>VQx^dI6F($ZVB#N;Vv}x`vWd)Bp;Zq-ono5Hug%Ou#p^r z0xx8{RbPdjV2;MpRwhtw07=v}C~zRht@t|ZG|W}QF-CT37lGnTkxDNVxH{J@{wD0a zOd{(c^(3+BBDadfsf*5N%()&!gx98>|AHjWnT~>Kc_J~M8@wBCoY{-~0w>c(HQOOy zr<;l?e}u^&36tnvkhDy!#Y?{f$?T~kv(>qvK;tH@p!N+Qsb?ak^D5}HL}wRjRJPpY zLmaI^oSjM%0{0fW6<37=pBB1R$2deT*4B+wffn#!Sg}W4P zg5e&9o9$KCvlFA2;w)|n>*tSfB8cVLL84|6+B2rR0&bX@dauK=%!#Nh@{NkkLcru) z49D8c@~sL$4JogDz}yKq9l*v;^*3;THcI4t%-7t@t$@ zY*{KtNeM5j;iekyBRCGw%;dYvv>i75Y#@(-#Pk?+V<^z5+>QS|92i?}!ojWONFsHD zAHdBvT<%J{{a%L#o%f6_A;0-Kvve=dQJpk>X^*uR&vFM1dh! zxD}_ufvs1#Rj0zvUsw3Lb(7bGocJpvIut7`1tpj<+AoFzJFj%Bs=~oPNxaCY=7M#; zk^(ocb1VJ~2fj5V*kgUfL9T-n^J5@Z{r{|YEB+gHoU7CeuoF`u4m3eWOpjNAWDB8F z=v9z}G0rRGowY$_<7(n-ya2>1&h5}zxI{{^IVmP&Y;Y_73I~59v4=T1w7uE{@%s~; zMQ~EkHrs$0kQlHQ?#=lcbTNqd$!TujM!%$-af6FM@e;qB2jPr)yyU^u0r?KcsbSDH z;wVX1Bske{Lrg#Azq8PSR0nc~u&=FgSt4^BNLs*&hyzO^d0uiQ1C%`3R|Sv5aW7bw z5bS&%{hP>hnQ+pFYab3dw}Vs#gf`~`(1qlw61!d>iBYmkp9#`DDY+RWla4b!{l5fa#ynv&fK z!EtchD>AALa6{arD-)v)BUeD}Z&byZz!gjdg^dXxg)@i0;NNiZMgei24$I7&;6l(C zlfD~H2EhzsfPa7nnIVZk_q<7!uLqWNkeJDc=-dkuRp4EVF&ao#!hmP@#LzdZDp1qD z*l56937Ub!H+%7Q?Qo#&ErteDZy~UH)pZC=ck;)^s7{<_>LuRAxyvp2G$Hr^+!PZI zth*&JND!V4$La|80^Cr^4fK7;E3R*coy8AD+Oe@uo9+B?z_bbqY~Aj~pGBF*4$c>nIm&#qogp6xJzBUeog0F)vclR7g2zGmtKmTVeawFUd!!>@&vT_Z#8ZOgV z=_j}Xla{tyBoiC{2kvsOx*ap2!m`$y_P&5C*0iT(7boRjhnsJ>kSF8X_jvKm7}1bt(S+%>!*g;~AZ@IGV^4_0$KZ-h?%d~*)7#US{^887GniN@ z?TY6-TIt1~OKYuOh>Yu2xFufFxpqRZ(cZ`)mcwahzrf{acFK#sbk0FI(SB{O{A@cE zyl|goU1IWlv0HsI zA=vhSSR|<#ZC?wUX9@=1iB!&pQx`i1x7aH|Dbequb+`I+Y;w@w7X%l;t#(UJBm{mq z=*4%yh|}NmT{7^>dtQa4#2rF7)0J}%?3~jo3%<_)yy{N0Eu6>@IQqU<)zJ=jS@3~n z5qZjLGi96bjeN$C-jejzw|=nr$k{`;%JdD^{m`;*Geg)0x7jP{O_Lv4)-xu}{@Ajv zH=cIy$6j$~M4EY6cA-g|6P!okB=i#XSVMmR^%3MHb1-*We-a5nmEXkLpLi8rsCzAm z2{JPRuYKahcO^PRf9i)}IkE=ApL!Lf23CCPRSDhusTbdkQs*6stS++g8xM-5Ck^W^ zXaI=#!qNXFkVv6H{twX5nvz40YAa^Baf<(e9tFu*H1CIhpdO!Tf0~yDil-#;m)-kj zP@?HCd3S6K-~w%gtk}=BJ64hXu`vLNy2!jF)7)+-Gp?AXxBQ{GdBro+TU%Ma}$yRtMNg&OIcnK}8)O zfjEV;;W+O{H457$x!wi!Fe;P>2WvoLXttWWLcu4br0JsmPrBT2+&vr{4Hzm9CW6<& z^)Ur1;rdaLUCb9D=T}KL%~Y~-xBnTFnFkru;l!?{>!__ib8!_y((g!?;W=fPo{^FCKqzYBuQU})Q)@^bM{%>?at?wn1DRDl*zY$Q zmTS+bxxZ07&Q1#4`I{W;oGNmLm~yBjD*kuNdpe%R?)qIdOc9P)>p@Zq)3I}X*3V-P zvy12=b;#30U56?aR-aeQ0matj-2#%5QC{VPZ0!7!93>kDVx#}WL~hbc3BieQmw9{Q zZ8j9Jrh-h(V2A&T_wBhV!AXOYkbp_JVtEQAq9Pn;-)}%X3@A&8>QId~lF>$9b!6Wy zH#J*8vrPNJsJ~y@%a4DMj1#G(ZpYwNQLuUWUlWCADK~78Gg5qT`X7h9*n=#ER z-w_)P;NqJD-Yb?@F_h@~Us47coA$H4_+g~1vTd14Jk>t{C-H}w$5Fg_fVv=ahZdX) z%22W1gvBl1O$aoJ@+yWCdPhdt#;n#28=2qD0R9lD zN6}vLFjlpjfg&yQjE(i1J_>r3-8jJ2v8~BEr~=qaDQ50%qTZ@wyMMl&6s%WQ3RGXf zc>zwGNpJ5S23-U)QPHvL+2&kDMCVy=sGb);21_m@RT~eyRZmCIo);ujsHWFdt3fQS zyiD?3eJ_4GBdmRvcEV$~qEJ-mEZbf7Vp7z7(5GKa3Z8#94q*T^NLW^$p*HY@DgF6p=zIa$BFC)&=}K7@~yGa zjchKZ&ku zwat6CsOt8Rb3bSVHHb9~%W8(gUQ3E9g8unhQt+;GZEL1m{aQlszi`tHH@QV5?NPXi zCN1hb+q%qfv*9uf_X=E!;kvbqTQWW#Ch8*nN? zr#3bhSV-lRz$K{8Nfw%CLrz)^lC|O% zP=89Y+935CAg<$hccE@4X0=I|edEO-3FsOm)`JFuh=I3k?XYEnnINp~g$hjqo!UP<>rg0mG? z#?2bXlaueddc{*1cl&O(x#vCGJZTPf$7?7UJ9wf0k$}4}8IRKhqy22vP;2s(v zdG14KdjKR8)-f9T5G3P6UmwN>dSZR29%I@F6=Ym=fH^rqGoNx{**ZFx|21vjN|)MpAm2Pd&Q#zeoEK8lD12$l@e z2y9;yD_Js2dFVh#FN4e?=GpHsI?xo8#|(BR^wp80E4ENKfy}F6&UbKgDOJm>{EIsM z)D&#OcsO?_h|8jP5+zyHCa>B>jqlIAU6B;E7P_o7$$6%~_KV5bf&T;&s|38tOj;bE zEwZ1$)3$*`tHy7m4h^84@}yv^f&Qu%l|PV_l}XNXr1&vxMJTH7Ao^LABgB2l5nmqJ_8bap{PGXP9RyA-SZ^CILRR072pWY5|GR`!VG=y2F)?8h^L)*fl8wH z>DeGraI|N)Ae?~I3#Hx{eqPW^p2eX>x+az&{#@_WEX050Ld*;y z+eQ9_H7y6%04Hf7dxXuo-xOL1J4%Exg`C8Zs!<*slu>+x;S>AZ*kfvP~gsK>k}7IYb>&Z4cX22HAI^ZkG14H%C`Yw|XL#CTfo zvorI8@e`O!Udb>9B^;#)R~#Q71o0vmucO)%QLk|JcyIRtw6cK&nJC0XLc?1iQ8%Fs zj~Y6uW`SaIuK?-pTuSZ$Wt)=BB~fuEjipXj_te<%5J+^vHkHOsf;0x$Pot+PH7?J) z8Vf+7WT_=i4&{`^kaHnJ1j- zMjE*bWG0o_!F~%e6VROe`p@y}1he3HK+H<`Ae>nUyz+^(51L}qFG;P5BOJN!0bOj; ze}t1bh&J$)(P`?w1_kc{P4JS&5TSmD<-UjaiWAb+I;;;@qHj=*K+YbJhDtdy{R$Fo z=y@eLaIQokWDG8Xn`9c>2PdP$KvbwdFJc+)OJV?`JzXPRkOWiARE#)k276U(^n4lM z9-i+P!66|h`8VKXn&1O8+Au>E67b69SsO^U7V005oJI`ZUJy|=lO{M4#Pu#C-UcUg znmRm5{Cj~{wVX&b){85_o_8$Nzl6aoe3xg(puQBXV_vZj{tYxY8%`)wjmnObMPw03 z#-{%MBuM6elxN3ruKN}!7SsdT^sE{+u(^C1WE{*(Ud7wGSzbjci)&mq8%Ao>H4npf zf&8s1k>Dqgs*xxW9F!xjx@RZ>zW`QL&$Q&x<$rR#_;Tje)LdqhmsC!Hdtoo302BSr zP~ewbuSyCeFEWRUDjq1oanFT_`w{7h^NK;j{L!k$eJ2;Wl7}oCQ#a+qTR8oYd-Rid!oUh>|IuYsJkR9?)k!>&Y z;?~je^TpaY>ti1VBFNq2B{(CNMZ8%~7aKq-kW82tL1zdHGV6#}8IPwguh|I@(dUEY zRAOnEyA>$fVUv%K90ZA1;c;lYS&8Ohv7%6LJctOzt0%9*4fghA+X?niZ}$cyzu!9r zagMFf^B8gQ%aGH)R0Aq1TN1M8d%Lful=aV>MS z)H_9nQ@Ki2YkB1X6a(r>OKh+?Z1q@e_7M9B-f+fa^ye`T`Vgl^4PSz|z1^DNbX}u* zMLKo{vp^dEBxc+X(mSqi;ry`8BGY%RF2`ntchW&JS`(k_d%d_#$oMOXat&sC<)bkF z6%sfYie2EHB0KmB30wv8%7JsGA1zG(2_RLA>{CiWGTGU0d=eWCm~H&C{W_9OXj}{@ z#cOM*c>$=~1o5pCAc?U=1l(Zcdc6t4mGQK#AX#M@0Wt8m^x&S0g3e}4_U`d`i@qGfPisxd*j`iYhMN1p6L5XhlUCcB%nI}9&lwUAhtEOeQ zv4qQeA2Bj6IUfayN_Yp1!1Ifr$7>(V8t*!-r`LRMgG4_l?{-G52egsbt1*d27{CKb zG~!6ak3|lGhMK0!uaD(E$7GrFq%##H{=u-Qb_YmY4|nFh{103&{tm)={3f-I&Wdc1 zG^X9|0EIvtcsFuocmjy)^9!xvUeTQ>xcCOOmqxmmLDD`e%sH&tH|jXptl_hxK?JXj ziIOZkp|j1F>?gmF&bJ<(2AY6ZK8prG62>$hKLnC7tC-(`q$>`y@&d|DkwJ?(=YV8W zO`H4%0o3H{>m?jCD{&jzANIC(n<tNUe z6BC`eK!2{#(-u%oY;!*J5xV2`tOgILWq4A6-(Lcf@Qdl$Q{4)ZIfe_;#g8BvW^EI5 zdOxUA8hZrifq3(dhc3I|7F%&lmz@-~7FNX$tL_d>zWkBL9X2_XxP zH`oX`_rS@lRj2(CByNhucsAK%hpwUQU)bd3fkIwMea;;B!(MFO*l=!pQUjn`{1|AC z^lqlxn5PtRu4ZCB3c7$ijKeDW3rPEwxDwv2M=w3$+~OnE!U>SX2j0>}Uo$K8X4-7Y zoF_mMe$Abr6MS0bWdWki(I7uGb8C4kXt`M~n?0kY(D=UC7{H}QU^!v#22BE?3`DHI z=gh`0t3lHEc958j2Ns~e{XCW!UI-rhEVo2%$*YMmFw;ySX|CaO5rl_186fGH(9El~ z`#>VAuC+~`*9#%NamfcsBxU8Lt5-k^KuFJ1l>U{fQ=PnppiJ^~@i+>SeJ)R|ZelC( z!kN7<1?j|=HlG3M3XEiSW3Onh1f{*ICXJPQLE?PTUiqDbDEmcPGY8n|aJlCA{0dwF zMX(w{GHD;_ikRNpL6;lEsvfMnpZMdJR3yg0h=NR&;6c!AH;Ik@z?W1Vq_Zrq0nPBL zqXUUCa58w4?u>l-j7FVp|3JZ4Z1d7Mzj&nkt3a}j);FTP4w7EgNjto%r!5S@q+SFP z#pu>#A4o>67ei66MNVR};!XvLS=c(=!T>>HK(@k6l`*d~IlYqCc<2fj=k1XTkvG&F z4P5)KSOFqXV=s9Ov2ZO=jw|$oIi3Q^6xKV}KTo5ZVq^YuW>z^UE>e*Dr&F(Cx8F#V z2TfYL_nW!{Q1tXa(Ac*$uChgDJgYz=l9p`owuUU#(In7miH?Fs*OcsWK=r5fia<5J z2VVdU^GXh(hj)alK8PORWIAj4$InE8Ki}~x-X!b}c~@6vEmH`ZPYv~klc1>@d&VBr z!Lb!vixxKmPmkaWknWFUx{ZBL?GvRBjPC$SEHaMg90loQ78h7`NTaTav(8>0=`Tv7 z-dCd&Yl&#tAgM>VV2k^_kBkdA?LN>}G&0Qr$qZvMmB+>aPRm*ML!D==b#y)+BvNyL zXO5;(oHVc@Lg(H>khll4jV4|Mi52x&ZGWXsMw}sU zB1pFqr27h+M!r!isH0v6lD>Iy zcXKFs3rOGdeizOkGWMwVt;Q=R#bFlj8pQ3GlM9lmrPJpbkXW2Wh{gM)UlPRjqT6?8 z`sXr`h|grYH8uty-7#P2?vH;Iobde_lftdun*LOfYsE6TsJLzwbTqNL_gwA7X zCKQ72<$-EuO7MBmXfNp-X3%lHKU7~X0-cU@UxUns&r42ZYxP6KImEMbL9&0_;F`Bzp0i0}{@mh5H0!UmA-{!e}(_j6at!HO3 zG>~Xtga2(H^%hwsJ_b!Qd6f^w#{8yTq0^0_sHMN@W6ugwWhhL6?-`0LY}!(n-&M|* z=5GvSfMi-K+5(cbOwnPGn5U&zIgJo>>KGch^n{kc>F(wQ7LWumE&n0Nls7Fm`$Nsv z(yd$@8x6S7tNtGC!%19gY1X@Apwk=Qi%v$SlFcBm28pWJNa033PDP@LSh^6TGY}Mf z8^q;gIX}aws+l1iTxSU~f4t&eIMD_!$wWK~662^5I{vAMXwQ7e0Es_nD0&bis?!O4 z7^JOWykNWk%Dj|c-CPPMrZSU0xJi(a=5;vPk4S9Apw%if$HJHRkt#^q(#`f$AZbC- zPar*q$xfutU%n+pW5G;N4|9UL2~Koie&*^N@DbW#8LanrMAAy!Zz6~Y{dQsuj9kpu z^2+7OK1i%xM}OF11^knZ1c_N7T~!4g0LdIyJ2$igX4AzPf{52M5HP=vU^U(rvY+yb z{@~(kUR1!k+$;Hm)94qlax;XF^A_%w=zu)O4FnSHXs`GWF7U%aTGOJNV8t10d-gik zh&O>VfcR}$$WHZ&PI1fig2x|j9qjyFJ79c`%OPAPF(zPC(Li5VTMRU}Pr;`QCofM` z!HK7Fr;O0Uoj@c^@8zWukk}j%zYGPBfOyQw0qw#%0bT2Z*THeW@Ir!f5N<4GvGoTb zXHZ>jRac3dK)U|Plf1ub^5k}DWxashC-6k<6F4(7<&f)P`3CNYvOdm~`T=wGfm5*-}x)awi;**5!WU zB&>+Zv58-aT+d%UmBHJd{W?DyKi1%eszBHo){vo_W<*^sNG42_SGfnj0Sy4Dq;(sq z9MN8RTQ(3NDQS835=w$(sQ3m}+6$6+d9DQi;6VO(s@gsH4D1Nw0>S9UqI`J|a*}YG zxCNFMzVRlUCN4TK*!ikSzyuyFb};0GnyUHD@j18%#0^_nf_;w{7Yqyz9wvdia`p`8 zH`7s}Gvvtu$>in|Qwh)&Q*n{xwZC19nHtFU6A z+-8`QPH;hsfVIY}-h{4ygcUt9u{n|?ohMGftK?Bf&I@>dwzI?0Ed!j0)hPf@Ee=lAkmlY3o(g#qtN*<0vLow!+=`Q?9b^nAU;|Kz&R=-3BK< zz&gML`bg42y71QRs2;%-;brs-K@w%qc_m>FBtc8JBD?&O8f*|eU2rZl4T&RC%wN5(y1*wlcrrXs_AG7LHuHzW#dUW(F?(o z7MgX9$RTJENYC@q!eNkVN6^4-7^)Fz zt9iQfcon44KxC=a@5~iu8c4K7N#@$~pt&G3Yn)E}`Pys{@di0JfqH@TI^YeE%wc>D zo%{`oHApOX@c@;DIm*jP&N`sD5Gw#br+I0B$D|EAfq^QNp)gQ4jrR7~n3}xu zR)jVmnOGnE3Z$2JEeELx=DODz1CphZXWyJ1uLg-g1Py+GvkxT0(j9yEP>mW1Mhkt! zG~v1ZgCMOZs`?x>R9j&&?#v&uRW*w9?*U03M&$2U)s2%0O1yWn;UrxZa{wgj<@~~Q z9T%@=;mG2#2?eETNv2k(1jc2MsPIydD4V?zPqo&2aczh&uaPLiAu8LGs6^s8h~ZOV zI!J^gk9cS6VDs%Bh!Z@G?J<-XlAYTXstTou5Y+iXIx(3Nn#pug9HY8wva;a!eGQrs7iKBf2 zl6x)|FVKh!&OpH(pcQfq4feUv=bVS(a%;-B9(qQ3=Sq-hRju?asLZQw!ftq2z`PK| za(Od1dP9Z>tYmY$>y*Pv;AZbA&ievT&QzQy7~l^e@p>~Oc!BCvr@&x)rWe;4a)Va{ z2_C)3>^HoGz{U|?d=EVR%@L8+!v2_-gh%RZu)T75E(TI>5wkTMC3VG%ro&0Vpd-T8 z;~)v%wpV!vbwFZxeCki$_ZqDe#~9uz0LhsR594XUb0Aqn=&LhhnRc-%gM%6SkBuPN zn5mw^O72|!u}wMMhrxc8aO84E?bclST@G1 z=o1JB?jGw^L4!Yzl?v5;cp(I(MF;_P5DRynq5-e2mn{3|D}eHhgPF;r>bF3=oQzTH zP7PQ~NH-b}t^{3ZeqZnvoLq_NdB5{C4P>DAc{Az5Op<&~%4f0z2pA{L{Y0bXSOmMBcPYY^AHc{i^gC71Dx*t z7)audPPKMvXG%Q}B-#vm$#UHQIz5JOK{Bayw0+Y3l4i6yAld7xEH8ql*PvE&&m7<7 zAes002@&)GKaW@!i+47k=bO*`uG%RF%EU8!c;_*Yi5R9wd%hnA%qDgkNFq4y%X+mL zBsZPWo}EIgZv$m!GGMG-KO?fx$ugP(5@oP}gFKM9r|wzb1`RcNvX5x8K)dJt4A!*S zAbE)nWqch9J`Lgt91mK9&ty_bSt|>nlpPMsX+{ccg!Ky?IGx%e+msz0NQ{Q_^S8kI zwT{8^VDDn`b7~UHV8?jXqcrhiZNEisO-pco_4{D`Mvt9N9k56mHByzq`m*ka9i^!a z@@iU`2J4sIays=GthVd)$=8_4L`)=vZUo9k5>=w~uR!8EY|serJqrTnmReC6Nal^A zeW1%~P_M#>&1LHa5GT`ud;fu&FFv!8%Rn+wOv%7Qi}~eFAilJPWyv4Fw`%h}pRdEW z8(;Yd4e(_>wQRn;d}VNNpJHqCIg>__LdY}aS(eR5sI z9J9@e=F2=Y714zG{J*FOhL@Xi=++EiypOr{Hy@!gFanw>$1-NxpCkQCN32Tn$MLO2 zd_~fHzVi9ssEl+mUlD*+!hHUJ)0R||4vVzDq0(S6U)yW7A<%5P^do8#x>Az)uJY+> zsC@o6DhgfCSGw82S3W{(c_rfm^8b&qtQ+`B^EdGob=<~Rif{JmolwcYhp%+Mg|B>s zO8Pdwl71gw`3Mz!KVNBYJ74(-t;6?80eqmP@;C9VeSD?De!lV%DivQ9z~}!$Mc~&> zX{FNM8+>K_@9>rUgM7u#NBBzqQQrY!G~qL-eEu&~8vMePRw@F2<71(sneTlpR60E7 z;~FaZmyF{+{lPEr|DsavN50b0uY8;Fts{y5qSA4FKmC8BjVM>z#xE#TDz@|SnN*V6 z`{`#=5u~$UubZF$zfrOM0LlfSaaz7K!u+48)QR^yI+KdvNu*0w*v}U#>|mb`@zaG$ zFc@ht`d3D&q>b_m3Ke#=kN+=J1R3Mk8|&8-D(pBPpGl*{{u9X%XPWF65Gw2xpHB7Z zG)d$mRM_c0K9e>eJ;P7`zfd#(|1Slldi=O4*m;p0*tmqVr8YN&jKO1ZUA+uJia(8l}kwSgEj$gBLa8-02m zR6ar_MtD%Ed$Uh(_49>_zijd8cBu6ED3t%K$M~lq^aTMvm3ChAF|^b)yq^Tgc-hZ5 zlZpWUAzd1N+o$hBWrqEK?A?ESm-GMs{nxf$wUwzPZI~pn$y5>>hLARygxF*f(pDx( zY%&vK!;s{$VFBYDrmu#o(oB}Dd3AXaE;fm6*4I`)HnF@Vp8kh z$KE?hBME-r@D`sU2D7u2jc&d7ArdawC%vM@B1Z#w*4s)IV(>8ft< z_B+a*Sl;BzyQgTA`+w#hUHA9rEYPwq`JxSNA$wcHG~NY@zt@-llA<5nl_RO|p`-sV zsqXf4S8D&_NgYQb*`GYpm+v6E9#C4KHb?VCXJP`Wj!*EMNUFn=yq->KQtDcrLW)jz z|DU9e?F_vNYeQ#xN7G0x$nuVMlv+OBmn&5~k1y)ye0QbZZeHv@*Ygrz{;wKUR?BbncK?>v z%;L~3b(=5VQED?wS*~$f=IxZ)&AYs=)bdiVE494L>)liB?r|pzLk;is70P{qQupp7 zUhkgj_)&MI>J?t!QR)Dm@OD++PN`d*+g86CV5Wwc1kTj)%^@o-Jk8tmD=n%UhkgT z-gI}e>sAzK!MVObsrn338@j-A7O9SNJm+}kdd?-){!&uw&v#$od4(^((w8sPYlS*2 z0CcZk>kY3b^+I{1>Qqe}~i#z3cT2UVqWnB)x(4=vz3JaSij ziq}skH7V7>RL?U=t$&u+r+J=DYU-X^FALY*a=w=9`d2|mG}Bk;o;tE@Tr1{y&i3{f zd3&Xn=XzbK^)7Lr=dM({OTDfPJy`Q7$O`zP9Vzr&MC!;Elj^X@>$iCQHqSdqJa@zjp3cmLSEd+JD= z-MgpgbNA1KUC*Cxz|wzf@Sk-Z*_W)Sj<=Aif9>@a?@*~7`_7kt@7_Iiz(2eHd?W>R zxZR<9>a{#HJpUziJ4Mk;m}M>ZH&fB-lxat)?ssOn_ICiOfga@b!M>hS?RN8e_tbhZ zzC6}*ch5a~hpu4WrTL0V?ccs$SE_^kNL?a{?%h)xKFD3E`Y5j}RUb`?4)ywBsxTea zn=`1fJJLa^4IbqUk9Jqe$Gacv-aSRBe9;I^^5sg^PbRe^liii_Q$u%<3cjFw>Kpa* zacy{}FYlh}AlqH34di&ed&+0yI?%bk{6BJ>3TkkPFHovJkJPoe!0VU$a^*m4crbj3 zef(f}q`nN$%TQp6H@t(?o-OnGU8E+Z_TV1R2YmT*U#`@KAN1vqx_3`4uW(nYzbais zvQ>OhgJ(TgliHDLuh)>8lxp|9=L@8UxR%s`to8b9q$Z^{ROfZ2+P~%XxBlZIS`X;Q zl$(9Q|7W@Djy7lo4|99#fLeU9Qak<)sex%DH4xu>ZY4D-H5=f~lzJ<*yZauVdy=8=+el6E z-BQPR0Chb{#=7q)wVgwJIob6v7iiFuJdY&R;ZfdDse>C&s)J*_KEaoFPpvo6y?e^j zaOEUY+nd~n?W^Nc0d;&DsUtYs8=gaIQmWkyuPb$VUg&kDI?ndGQuWzhSE~Oxq}IE{ z{gOh51*A5R=L?kT;7YG6wY-2ln0$)V6|kC&Asa|dO0Bov>q@oTNNNW@@cfWee<>e1 zY$7!zpL+c>Qq$jMge6`SK6IeAx5b+)d6By)d{pQmyVY5#&HvzarRv+fzN1vPKe1f9 z`HQzx>bs^tNiA1Jd)ltw^ zsrn7xPO17$URSDqE2$k?;;vNvPErT7jO2e?3%o|E{hJzC9oakHpuzK9&-JACe1q5j zL26R!3^saxLaLuH$Oy}w>(A{URE2*c)y;NN+wCAVDOK+zwSRwl{^iS+ay>@0ez<2Z zQvLQJwSGUZ?@X$F|0tSASlr{BV0ASd*ZL!T`F^A(rP}XLs-KZwKhQJL^B_`_QrjIv zs{J_k?x~yWNO!X9nJmzTQb>){v7Qs%Q%UXMiC&*XY6Fu=P2E%NrnoD$L#LDSGsvOj z0#fH^VHDd}M}^*C5vd)y*7G`2Q}@&k7UAmPR&RHkw^ORWrC$HL)Q;Vy4XaS*D|Aoo z$lbVxY&ofpS9rU>OC9N>-mZJfE8UekfWoIJsN+?ncH}uy4Xa5_J4&^G(U&XL{v}d7 z{Ia`J{k`h-9VPAe3%uqHlsY$`lj`tGcV(D0RQdadubp?48mRAm`HoWix0U63X8ca- zIQ}B#p*JD_o7D2KzJ9Gz2<=~lXHf56n3QVR+w0v^-p7|mdPb2t&VF9siQJ9)KBNvL zfz+hbKpxna580@rL_m3vH|UUN?pSE`=ob*1W)NcD5Fd$;U*nxEq^yc^LqD` z-|nu|DZI<;N-a09cTagKt{uL|+ZEpH4VC)lvx?l0e4kXuO}<>IBiTf%qmSMH@1)ji z_Vqjq{|(gO6K|kY{ZmqV{JGb^@a5f8?Y{JOU;A>UyoJ<`f8+IUeR)@MQdQuU?~3pt z33^cc>dTc{ufyv~_4k|VmVN~e8?E>&lGQWs^@8*r;}QKCaKjj<(9jOM}Rhe zj`O*m=XqX0YPDHj&+(k&nd>>%bDrmX&jp@Wc;=Iul-ll<{dk6If3ETdSChKa7JI|) zsTFSUc14~ydEP>5M{o1`63?aXcX^h%-{V={k4J!3e83w#MCycAkeZa*!N)CRsG)$RvU zzx;~gHES@rmtMO(^=fg5*OjWDNb15qjnodE={b$mRH%aXFq_no&h`aLZFml;73Y#_ zcNM92SCg8Q`u%AMsdh_9t#^knSL#5F)Dhq9uEYxi_d6)n@L{iaPu+D-x+}GTr%3I{ zO84%m9a)WQ#9kn^;g>wul3Knlw0ssnC8nSb-|=i9)$#gJ1HOGFb?!bU^?yXRlbV$3 z_;;@>)z2SZSE}BrwAzLKCO?8vRQExR=Kn=%_1@m@?^69m(oXH8NbS~6zMfJZ9nD~C z!2pMW-k^JGUry#vEH_O z4#H1xSL*VeOlsSwlG?{JJkKJv&9g~uBg^v~Qj;={TuAC1UaLXS3fFrBrB+<*b)_~` zx8P{dI&hu?j z9lqo3yQfCtJ#Y5`sge4Wlz-vvm0JHxuYXxcK|}E^sU2w}bt--&wc;A~khSZMU$WFHmX+qCNY24kXpVE~KXJDIetR273iB9>*TD58{{`;gi-y)n?dW}^9x{)SI%Q9i+QFwu zO*=~UyOQOh|K08x6@XQwI<6+w(Tkq1klKMaNZqabYU-ZyCifksmVd-@jYKn9 zs6B6`pbdZTD=Jn0iPVv7C-sx{KAbS^SUpw{yxQte*z`s<|Hzv=ZlufOf}cSyZ~_<-a<3ImP4ps5Q2n@H{1r|zGTnv~km z7OyL{p%$+zwPUTM+I>&zV*8oYi2dTreH#(1 zmn+r5m86d3YImhJyol7fzrkIpb~kxlsS&)HR6PjqZ)4CZ#si zVOaFa=Y<{@WG*!EnQb=`p6saLQmel{rbA~U^AT=qqgIT0HKG$8T z^=G(W;PsiF7kbVjH8PhBTfxzejXyV-Xp&JaZ;yf)j+=pS9!zLq&j?#)YLuIQME6x@#TM)I#sXJPM`nT zzoZ^*10@@S(8#5I*?f%CwhI9=NM8`_td%mpMAWM?eqD@ z(9}J3q(?LBE;x=^J1~J+(~eR*b^^27r84UPrg)uSm4zmy{NFy_sN+A6SsS{LSr^Sb zW_2{5S<~O8j`aWJH}-tIQ8z~Dg?D=@(WZp9BXRlIbMPS#H(!aaLF-l*TNGxdDDvFGEBekthV zj(Ydm^YO;MUEi7Xe7sQ~Yt*FF|8dmw@y4EyH~J;f^YKQ#pXm8`W6#GMdp_RS^YKRi zp|1Y-U8bIoH!=u4A8+jWcw^7U8+$(9*z@tmo{u;7e7v#eaPl)@sc=FRXkE%HsE_KomKVL{vWE>JDV zeKUO0ngMm;8~Mk$b`MTkGy0wIhH#s@K75j;u4j1_rSQ0b&E7qDhP6v3d_fmOZOIpO zQSlzIT`%0*BcKL5pDAcR;c&`VJ^<0=5W_urX~w>PNt`HXy||3)%$}z6XxBCEo)T zo7Cb%V7#>oGCl^c5 zFv&811nLB}f^>`e3CQ~l$o&bJY&C-T%|P7Gz!b~*8E6zVaDu~5v)JuG(dWR3J%W?M zrv~iRkr8KD(iceLFRXK><^MvH7D2Nh(-M9KO1}h3eg&pklOS~qkkSrhS#dkiE@%@> zx8x3>;wzwl&4kUcRzb$sK>BaAIN!>C10q|1PQgq|`yHqjRQ(RjvJOFZE0FaEkYkm9 z05RVH(Vf5?%j^W|1hs-(i~1AD`xeOk6PRl={sF{)2dw)CFwX|Q4>Ss*Hvsc3a|2M+ zrWRUdferi%NctXF@E34}trfHY%SJ>@3d>(MFM`q7N_8XEg*GgVdg>3fUmOM$*aktn zU|cv*Xp6#uifzCa!6F+I0c89LEQzOF1XRg2Z8LLffYfZ z*tQ8`wgXdp12^09-awro*as-FDSd#vUx3wu+bk>+i2oIs83`=0m4ZgW;3#0J&4>bu z+JSX~Wj3%ckkkPz=nI&w6|@LO^aILlUO%ApH(;aS9vik3kor5YcqgFTHVE1Uijsue3ZP7sU(8f;1&khc@C8VFw>u<*UO?c<}7nR_7{0``ogQ8IWa@_xY18;TU|jBM1y zVq?H|*;@~b{z&4U$cH>WBrTE=!&s{+V3!UYrSBT2>}BxPUZi-6s(i*V4_d{ZKLpmkjvh_WAJ*$&6>nPd+_S^on$s2-X#nWah`x6&DBm4)(DIwyF z@NEG*OZg+Cr2L70?ehTgXU0gmJz&o(e_@1poQD6(Yo@Y2V7nhkb}%Z+-xv$!?*ZE< zku9d~$rcwUa*8@FM^C19K}j4t^%uKv5KSuLBnQzX%r+!)7Blt&wg@6@%qSpoD6ni4 zyB!R(kJxRimZVIeNgo?Ho+jCQ0}I9jQMOhPGYlAUEYQ#99ShV6HVUGxcmj~O574GQ z`djh|K>To^`~+a2wF(*q=@WrLRyGkR+85{)47RjXAZY|pl?n{84nd0`D-DRX$~2&K zKOp)*c4;zZtd%s2z67)y)JCf=!y53>_L3g@0V1X*_m z>l|kT&!kD@IAFns1}UK04CbJ3?TbZV51<-hGhaVhXIQ-fl0POP$w977Laa> z&I0n1fGvW_Hf9akGQ~c6f#1Z12DeD7Y9Xwt7KKI*>RQxY_dO0(F9BL5U??0_2?xlw1PbW=(?l z$w10HV2Ks$-BP2VO|aCGF9nKD0m?50mRYMHX$p`&A22JM53~q61!b0Y8BlsEP<0t_ zk97!APXn?RFsS8W_Sga*mF<$~%aQxT?5xZ6@H`!a_Q<2;&kcYzTc}e6M zNL(JWBFtvzA=Q!w$)jPmdp?qVCQ^`(REF7Gl9&u6@k-?JFuU?fq)yT-sS2|L79x3> zNXbIvDIUy{__L6dtB{pk2v;GEk~YbzFgv^eDVm0q7a*&{>>Eka*+}};$eJ*_`)Z^` z(kZFoo-ag7vyiGnsQ8z}M7`}n=xe;lcNt?DCY4bkgQ-l;zYp*~IurQge{3n~`S5=Vqi`5`7EuDdTesQZXB;m275w zN|1~>NNx%81>+-$ya@sT85ilpC( z{L1*;iL^*MB^`{*7LcOmVPXyX?A%a$L^Em*Mt2#y89 zEYpCD%Yj<8h_I+qAo2iXS?t|FOg>O>H_*@O1$BbN zdw^)mzX!;>5@;6mw}g9v_=P~py}&?g5;O`@%7H;vTn-dn1+)nUTk?HCQUOqYA27sP z1ucT~`+-<1yB{dM8t4@4VQCKlsf9q*13;X02-*c%%YmU*xg4mt28ezT7-pFd0vU^d zTETFOdI*TT7RY@F7-2PnYC+t?!2Xu=Fpzy6&>%>#*cCv`^+3T2V5HRx>I8|80Ew3W z2#~iJXcmmJghzq+8-S8Wfic!3XcVMW0AsDV0w}r>XcLUH=v4zpH4iy-|m zAlb?u14@g5PQekD_BfDw6HxUykYXKzc0tw?z|mIu1W<7^5M2d~x6CRa;})P+aGXUw z2}G6vxlaNUtVU2Rhf;5YL8i=_KD0mu}Wc7kNLE=gv-SSrgdA9@2 zg2|Tf3=qErD0v2$VoicZLCPxNG%H>O6x{)|38q@|vp~{Pp!`|jOluXi2+~&rnO3$M zD7_Qt6ili>d)4OM%=P zV5Zdwss(Y+1G6mWc_6zCXb|LB>~2G1<1FuSAf#{flk3f zOIr)1J^)m$1q!S~&@RY&6)3dISAmM*db zEr?qO+-N!Lfb55X20^jKz5&Fn01Dm!Znk1sMS*xH$kp4DMW@T>!rH=uff_p6O9U%2_ zpz0l<+&Tp9f~*Ffu=j`CV+}lEE1p22-$j;(+ga}-8C6KF*r63JbUtO&Q~ zCDoGVRc|6>9-+})Ew}bylo1|xvW&cFhgxlwm7RiK- zNKLriu@NaxXGsg~4A-ee3vLb9Jnaz8@q8AD0T3rO51 zknl6{-9JY1UPKB$M%FW8lK5IAu^HLGh&3aPl4i;KjMyhg(Mw3lC&kH%y#^(zp@^vKoOJob<^CeO(sg-=q_-sM4*CDxEkXFV=67vQU_Z9Lj zGUn5%?A4z;2lGuW5V|-eWMoF{eC&s50DXK?GT9NIHk0j|W zB;_0ASH|ZXq(#yu>0o@mMM~dB%D+W^XM7~7?;z>lA)Vp2&v8h*WQF7}uBh*jiUwqA z8@FJXEpOu%%y<_Feh)<0l<$Ga^}uRD(89I?)q;jUfIb%631q(qOc+hCQ4w~>XnKv= zfNYoai?CzIAa#-zW02?w`%#kj4`k}WNdE{sbu1G9KC*f&GBCoz4?!9wGY>%qMc6Zv zqJJWT$036w?7VSE(ne&RWJrYVawyUwS#T&48)2_XNVV53;q<)BOl*C2Y zK1oQsWN{KQG{XKNsc1yTB_qQk?Al}`qY2p}86IH=AC5$Rge*H884+QhBjNi+*x^Tz z`!g2G_z3$(nZQUKNgfbkcPmFS4$1=~?8Fo@F~S~H9u#4}DMv9XN0Fl=>@npS#^h-7 z;0QZQIhGMo9ui@Fk0Hk~9;79G#vZLZhCMng!miX=Z;_N7k0eLfM|v8TZboKqFI4a2rtZ1(3K=KUAUHjryU=m&k%`G&#=Js!8M)V8oBW z1e^CGP%YRfm}tX(0^EV*NRtnk$8$V?PrgO=B#t2k=kEH7dO*0r1Nyb*B>LcWQ zPNRPG6!`rcljo-J0&x^1FHY1Ia!M}45^KHiO97NG}pn!wmZA^_I=@+fD z7e8OUf(z|E)@hN{^1Gn$d@ikjAf>+|4euihBW(A7BB|}_=ATGGguNwcmo)48C}i6o zAQc_R7Jm8{zK9d`A(HVMGNBQ(qiToYeE?G>^pCZ+glFi7CT&y~V>_3n;UgCH^ zlk*3=9McIDbaGIA3yy?}~dKy(mTZka(KBM8(A9PlDY6R7SxIVz6meU8w?gKOk zDlIk=h=~LWB7w)PUQj1Ui~_1GKMKf;0-6O+SwdeRzAsSH7g%Xcf<{3~KVX#=_XCRh z0d0cSmb?>?v=dOi6R^fw1ucT~XrRW*qJh$Api}UIrR@x)?hI7z4AfeOpk0vFA9&d+ z`vVpIf#?CiTFV>&WDEdm1+Q7uKp=7;kUJ1qXElOqLEJ9Do0hW+ki84gAgH(4K|stP zpkNU2w$%&j1c|!>4VJ$vkhd$)ELd*|gMs+LK*?ZWgEa{n1u44$?_2S1K+$eMn_#0Q z4*`;f0Odn~53NkzaHvUUePwaVRrirs2&x5f@jxHTi3hUdfd)a8#U=nT2|z&t(9h}x zb%MkLfN0A<0LVK4XcqLhgpok}NT6gSFwmL=je?W|fk9S$AW(E5&?Xpc$%#NxB2b

cFw`nX0~Moz=rO=B%Nzq_ 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 { const classes = useStyles(); - const { address } = useAccount() - const { loading } = useSmartAccountContext(); + const { address } = useAccount(); if (!address) { return (

- - Biconomy SDK

+ + Biconomy SDK +

Solve complex UX challenges with customisable SDK modules in minutes. @@ -34,7 +36,7 @@ const App: React.FC = () => { return (

- +
); diff --git a/src/components/AA/BatchLiquidity.tsx b/src/components/AA/BatchLiquidity.tsx deleted file mode 100644 index c9e7d0e..0000000 --- a/src/components/AA/BatchLiquidity.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { useState } from "react"; -import { makeStyles } from "@mui/styles"; -import { Hex, encodeFunctionData, parseEther, parseUnits } from "viem"; -import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { - configInfo as config, - showSuccessMessage, - showErrorMessage, -} from "../../utils"; -import { PaymasterMode } from "@biconomy/account"; - -const BatchLiquidity: React.FC = () => { - const classes = useStyles(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const [loading, setLoading] = useState(false); - - const makeTx = async () => { - if (!scwAddress || !smartAccount) return; - try { - setLoading(true); - - const approveCallData = encodeFunctionData({ - abi: config.usdc.abi, - functionName: "approve", - args: [config.hyphenLP.address, parseEther("1")], - }); - const tx1 = { - to: config.usdc.address as Hex, - value: BigInt(0), - data: approveCallData, - }; - - const addLiquidityData = encodeFunctionData({ - abi: config.hyphenLP.abi, - functionName: "addTokenLiquidity", - args: [config.usdc.address, parseUnits("0.001", 6)], - }); - const tx2 = { - to: config.hyphenLP.address as Hex, - value: BigInt(0), - data: addLiquidityData, - }; - - let { waitForTxHash } = await smartAccount.sendTransaction([tx1, tx2], { - paymasterServiceData: { mode: PaymasterMode.SPONSORED }, - }); - const { transactionHash } = await waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage( - `Added batch liquidity ${transactionHash}`, - transactionHash - ); - setLoading(false); - } catch (err: any) { - console.error(err); - setLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); - } - }; - - return ( -
-

- Use Cases {"->"} Gasless {"->"} USDC Liquidity on Hyphen -

- -

Approve and Add Liquidity in Hyphen

- -

- This magic bundle will approve USDC then provide the USDC liquidity to - Hyphen Pool -

- -

Transaction Batched

-
    -
  • Approve USDC
  • -
  • Provide USDC Liquidity on Hyphen
  • -
- -
- ); -}; - -const useStyles = makeStyles(() => ({ - main: { - padding: "10px 40px", - color: "#EEEEEE", - }, - subTitle: { - color: "#FFB999", - fontSize: 36, - margin: 0, - }, - h3Title: { - color: "#e6e6e6", - }, - container: { - // backgroundColor: "rgb(29, 31, 33)", - }, - containerBtn: { - display: "flex", - gap: 15, - // justifyContent: "space-between", - }, - tab: { - padding: "5px 15px", - backgroundColor: "#FCF8E8", - marginBottom: 10, - }, - listHover: { - "&:hover": { - color: "#FF9551", - }, - }, -})); - -export default BatchLiquidity; diff --git a/src/components/AA/MintNft.tsx b/src/components/AA/MintNft.tsx index b8fc259..1bc3fa6 100644 --- a/src/components/AA/MintNft.tsx +++ b/src/components/AA/MintNft.tsx @@ -3,20 +3,34 @@ import { makeStyles } from "@mui/styles"; import { usePublicClient } from "wagmi"; import { Hex, encodeFunctionData, getContract } from "viem"; import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; +import { configInfo as config, showSuccessMessage } from "../../utils"; import { - configInfo as config, - showErrorMessage, - showSuccessMessage, -} from "../../utils"; -import { PaymasterMode } from "@biconomy/account"; + useSendTransaction, + useSmartAccount, + useUserOpWait, +} from "@biconomy/use-aa"; +import { ErrorGuard } from "../../utils/ErrorGuard"; +import { polygonAmoy } from "viem/chains"; const MintNft: React.FC = () => { const classes = useStyles(); const publicClient = usePublicClient(); - const { smartAccount, scwAddress } = useSmartAccountContext(); const [nftCount, setNftCount] = useState(null); - const [loading, setLoading] = useState(false); + const [loadedCount, setLoadedCount] = useState(false); + + const { smartAccountAddress: scwAddress } = useSmartAccount(); + const { + mutate, + data: userOpResponse, + error, + isPending, + } = useSendTransaction(); + const { + isLoading: waitIsLoading, + isSuccess: waitIsSuccess, + error: waitError, + data: waitData, + } = useUserOpWait({ userOpResponse }); const getNftCount = useCallback(async () => { if (!scwAddress || !publicClient) return; @@ -31,66 +45,56 @@ const MintNft: React.FC = () => { }, [publicClient, scwAddress]); useEffect(() => { - getNftCount(); - }, [getNftCount, publicClient]); - - const mintNft = async () => { - if (!scwAddress || !smartAccount || !publicClient) return; - try { - setLoading(true); - const mintData = encodeFunctionData({ - abi: config.nft.abi, - functionName: "safeMint", - args: [scwAddress as Hex], - }); - const tx1 = { - to: config.nft.address as Hex, - value: BigInt(0), - data: mintData, - }; - let { waitForTxHash } = await smartAccount.sendTransaction(tx1, { - paymasterServiceData: { mode: PaymasterMode.SPONSORED }, - }); - const { transactionHash } = await waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage(`Minted Nft ${transactionHash}`, transactionHash); - setLoading(false); - await new Promise((resolve) => setTimeout(resolve, 2000)); + if (waitIsSuccess || !loadedCount) { getNftCount(); - } catch (err: any) { - console.error(err); - setLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); + setLoadedCount(true); } - }; - - return ( -
-

- Use Cases {"->"} Gasless {"->"} Mint Nft -

+ }, [getNftCount, waitIsSuccess]); -

Mint Nft Flow

+ useEffect(() => { + waitIsSuccess && + showSuccessMessage( + "Successful mint: " + + `${polygonAmoy.blockExplorers.default.url}/tx/${waitData?.receipt?.transactionHash}` + ); + }, [waitIsSuccess]); -

- This is an example gasless transaction to Mint Nft. -

-

- Nft Contract Address: {config.nft.address}{" "} - - (same of goerli, amoy, polygon) - -

-

- Nft Balance in SCW:{" "} - {nftCount === null ? ( -

fetching...

- ) : ( - nftCount - )} -

+ const mintNft = () => + mutate({ + manyOrOneTransactions: { + to: config.nft.address as Hex, + data: encodeFunctionData({ + abi: config.nft.abi, + functionName: "safeMint", + args: [scwAddress as Hex], + }), + }, + }); -
); }; diff --git a/src/components/AA/index.tsx b/src/components/AA/index.tsx index 55bd844..439ee5d 100644 --- a/src/components/AA/index.tsx +++ b/src/components/AA/index.tsx @@ -1,9 +1,6 @@ import React from "react"; import { makeStyles } from "@mui/styles"; -// import ControlPointIcon from "@mui/icons-material/ControlPoint"; import ImageIcon from "@mui/icons-material/Image"; -import ControlPointDuplicateIcon from "@mui/icons-material/ControlPointDuplicate"; -// import CollectionsIcon from "@mui/icons-material/Collections"; interface Props { useCase: number; @@ -12,19 +9,6 @@ interface Props { } const cardItems = [ - // { - // title: "Mint ERC20 Token", - // description: "This is single transaction to give Mint an ERC-20 token", - // index: 4, - // icon: ( - // - // ), - // }, { title: "Mint NFT", description: @@ -39,34 +23,6 @@ const cardItems = [ /> ), }, - { - title: "BatchTx - Liquidity", - description: - "This magic bundle will approve USDC then provide the USDC liquidity to Hyphen Pool.", - index: 4, - icon: ( - - ), - }, - // { - // title: "BatchTx - NFT", - // description: - // "This magic bundle will batch two single safeMint into one transaction.", - // index: 7, - // icon: ( - // - // ), - // }, ]; const AccountAbstraction: React.FC = ({ diff --git a/src/components/Faucet/index.tsx b/src/components/Faucet/index.tsx index 7412432..d07e7e1 100644 --- a/src/components/Faucet/index.tsx +++ b/src/components/Faucet/index.tsx @@ -1,69 +1,79 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { makeStyles } from "@mui/styles"; import { Hex, encodeFunctionData } from "viem"; import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; import { - configInfo as config, - showErrorMessage, - showInfoMessage, - showSuccessMessage, -} from "../../utils"; + useSendTransaction, + useSmartAccount, + useUserOpWait, +} from "@biconomy/use-aa"; +import { configInfo as config, showSuccessMessage } from "../../utils"; +import { ErrorGuard } from "../../utils/ErrorGuard"; const Faucet: React.FC = () => { const classes = useStyles(); - const { smartAccount, scwAddress } = useSmartAccountContext(); + const { smartAccountAddress: scwAddress } = useSmartAccount(); const [address, setAddress] = useState(scwAddress); - const makeTx = async () => { - if (!smartAccount || !scwAddress) { - showErrorMessage("Please connect your wallet"); - return; - } - showInfoMessage("Initiating Faucet..."); - try { - const faucetTxData = encodeFunctionData({ - abi: config.faucet.abi, - functionName: "drip", - args: [address as Hex], - }); - const tx1 = { + const { + mutate, + data: userOpResponse, + error, + isPending, + } = useSendTransaction(); + const { + isSuccess: waitIsSuccess, + error: waitError, + isLoading: waitIsLoading, + data: waitData, + } = useUserOpWait({ + userOpResponse, + }); + + const drip = () => + mutate({ + manyOrOneTransactions: { to: config.faucet.address as Hex, - value: BigInt(0), - data: faucetTxData, - }; - let userOpResponse = await smartAccount.sendTransaction(tx1); - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage(`Tokens sent ${transactionHash}`, transactionHash); - } catch (error: any) { - console.error(error); - showErrorMessage(error.message); - } - }; + data: encodeFunctionData({ + abi: config.faucet.abi, + functionName: "drip", + args: [address as Hex], + }), + }, + }); + + useEffect(() => { + waitIsSuccess && + showSuccessMessage( + "Successful mint: " + + `${polygonAmoy.blockExplorers.default.url}/tx/${waitData?.receipt?.transactionHash}` + ); + }, [waitIsSuccess]); return (
-

Faucet

- -

- Get USDC and USDT test tokens. We will airdrop these tokens to the SCW - address so you can test the SDK. -

- -

You can also change the address

- - setAddress(e.target.value as Hex)} - className={classes.input} - /> + +

Faucet

+

+ Get USDC and USDT test tokens. We will airdrop these tokens to the SCW + address so you can test the SDK. +

+

You can also change the address

+ setAddress(e.target.value as Hex)} + className={classes.input} + /> -
); }; diff --git a/src/components/Forward/BatchLiquidity.tsx b/src/components/Forward/BatchLiquidity.tsx deleted file mode 100644 index 8a35918..0000000 --- a/src/components/Forward/BatchLiquidity.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import React, { useEffect, useState } from "react"; -import { makeStyles } from "@mui/styles"; -import { CircularProgress } from "@mui/material"; -import { PaymasterFeeQuote, PaymasterMode } from "@biconomy/account"; - -import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { - configInfo as config, - showSuccessMessage, - showErrorMessage, -} from "../../utils"; -import { Hex, encodeFunctionData, parseEther, parseUnits } from "viem"; - -const BatchLiquidity: React.FC = () => { - const classes = useStyles(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const [isLoading, setIsLoading] = useState(true); - const [isLoadingFee, setIsLoadingFee] = useState(false); - - const [spender, setSpender] = useState(""); - const [feeQuotesArr, setFeeQuotesArr] = useState([]); - const [selectedQuote, setSelectedQuote] = useState(); - const [tx, setTx] = useState([]); - - // pre calculate the fee - useEffect(() => { - const fetchFeeOption = async () => { - setIsLoading(true); - setIsLoadingFee(true); - setFeeQuotesArr([]); - if (!smartAccount || !scwAddress) return; - const approveCallData = encodeFunctionData({ - abi: config.usdc.abi, - functionName: "approve", - args: [config.hyphenLP.address, parseEther("1")], - }); - const tx1 = { - to: config.usdc.address as Hex, - data: approveCallData, - }; - - const addLiquidityData = encodeFunctionData({ - abi: config.hyphenLP.abi, - functionName: "addTokenLiquidity", - args: [config.usdc.address, parseUnits("0.001", 6)], - }); - const tx2 = { - to: config.hyphenLP.address as Hex, - data: addLiquidityData, - }; - - console.log("Tx array created", [tx1, tx2]); - setTx([tx1, tx2]); - const feeQuotesResponse = await smartAccount.getTokenFees([tx1, tx2], { - paymasterServiceData: { mode: PaymasterMode.ERC20 }, - }); - setSpender(feeQuotesResponse.tokenPaymasterAddress || ""); - const feeQuotes = feeQuotesResponse.feeQuotes as PaymasterFeeQuote[]; - setFeeQuotesArr(feeQuotes); - console.log("getFeeQuotesForBatch", feeQuotes); - setIsLoadingFee(false); - setIsLoading(false); - }; - fetchFeeOption(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [scwAddress]); - - const makeTx = async () => { - if (!smartAccount || !scwAddress) return; - if (!selectedQuote) { - showErrorMessage("Please select a fee quote"); - return; - } - try { - setIsLoading(true); - console.log("selected quote", selectedQuote); - // const finalUserOp = { ...estimatedUserOp } as any; - const userOpResponse = await smartAccount.sendTransaction(tx, { - paymasterServiceData: { - feeQuote: selectedQuote, - spender: spender as Hex, - mode: PaymasterMode.ERC20, - maxApproval: false, - }, - }); - - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage( - `Batch Add Hyphen Liq ${transactionHash}`, - transactionHash - ); - setIsLoading(false); - } catch (err: any) { - console.error(err); - setIsLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); - } - }; - - return ( -
-

- Use Cases {"->"} Forward {"->"} USDC Liquidity on Hyphen -

- -

Approve and Add Liquidity in Hyphen

- -

- This magic bundle will approve USDC then provide the USDC liquidity to - Hyphen Pool -

- -

Transaction Batched

-
    -
  • Deploy Wallet if not already deployed
  • -
  • Approve USDC
  • -
  • Provide USDC Liquidity on Hyphen
  • -
- -

Available Fee options

- - {isLoadingFee && ( -
- {" "} - {" Loading Fee Options"} -
- )} - -
    - {feeQuotesArr.map((token, ind) => ( - //
  • - // {parseFloat( - // (token.payment / Math.pow(10, token.decimal)).toString() - // ).toFixed(8)}{" "} - // {token.symbol} - //
  • -
    - setSelectedQuote(token)} - style={{ - color: "#FFB999", - }} - name={token.symbol} - id={token.symbol} - checked={selectedQuote === token} - /> - -
    - ))} -
-
- ); -}; - -const useStyles = makeStyles(() => ({ - main: { - margin: "auto", - padding: "10px 40px", - color: "#EEEEEE", - }, - subTitle: { - color: "#FFB999", - fontSize: 36, - margin: 0, - }, - h3Title: { - color: "#e6e6e6", - }, - container: { - // backgroundColor: "rgb(29, 31, 33)", - }, - containerBtn: { - display: "flex", - gap: 15, - // justifyContent: "space-between", - }, - tab: { - padding: "5px 15px", - backgroundColor: "#FCF8E8", - marginBottom: 10, - }, - listHover: { - "&:hover": { - color: "#FFB999", - }, - }, -})); - -export default BatchLiquidity; diff --git a/src/components/Forward/MintNft.tsx b/src/components/Forward/MintNft.tsx index 25fca40..63031b2 100644 --- a/src/components/Forward/MintNft.tsx +++ b/src/components/Forward/MintNft.tsx @@ -1,30 +1,35 @@ -import React, { useEffect, useState } from "react"; import { makeStyles } from "@mui/styles"; import CircularProgress from "@mui/material/CircularProgress"; import { PaymasterFeeQuote, PaymasterMode } from "@biconomy/account"; +import React, { useCallback, useEffect, useState } from "react"; import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; +import { + useSendTransaction, + useSmartAccount, + useUserOpWait, +} from "@biconomy/use-aa"; import { configInfo as config, showErrorMessage, showSuccessMessage, } from "../../utils"; import { Hex, encodeFunctionData, getContract } from "viem"; -import { usePublicClient } from "wagmi"; +import { useCall, usePublicClient } from "wagmi"; +import { ErrorGuard } from "../../utils/ErrorGuard"; +import { polygonAmoy } from "viem/chains"; const MintNftForward: React.FC = () => { const classes = useStyles(); const publicClient = usePublicClient(); - const { smartAccount, scwAddress } = useSmartAccountContext(); + const { smartAccountClient: smartAccount, smartAccountAddress: scwAddress } = + useSmartAccount(); const [nftCount, setNftCount] = useState(null); - const [isLoading, setIsLoading] = useState(false); const [isLoadingFee, setIsLoadingFee] = useState(false); const [spender, setSpender] = useState(""); const [feeQuotesArr, setFeeQuotesArr] = useState([]); const [selectedQuote, setSelectedQuote] = useState(); - const [tx, setTx] = useState(); useEffect(() => { const getNftCount = async () => { @@ -46,18 +51,17 @@ const MintNftForward: React.FC = () => { const getFee = async () => { if (!smartAccount || !scwAddress || !publicClient) return; setIsLoadingFee(true); - const mintData = encodeFunctionData({ - abi: config.nft.abi, - functionName: "safeMint", - args: [scwAddress as Hex], - }); - const tx1 = { + + const tx = { to: config.nft.address, - value: 0, - data: mintData, + data: encodeFunctionData({ + abi: config.nft.abi, + functionName: "safeMint", + args: [scwAddress as Hex], + }), }; - setTx(tx1 as any); - const feeQuotesResponse = await smartAccount.getTokenFees([tx1], { + + const feeQuotesResponse = await smartAccount.getTokenFees([tx], { paymasterServiceData: { mode: PaymasterMode.ERC20 }, }); setSpender(feeQuotesResponse.tokenPaymasterAddress || ""); @@ -67,110 +71,128 @@ const MintNftForward: React.FC = () => { setIsLoadingFee(false); }; - const makeTx = async () => { - if (!smartAccount || !scwAddress || !publicClient) return; - if (!selectedQuote) { - showErrorMessage("Please select a fee quote"); - return; - } - try { - setIsLoading(true); - console.log("selected quote", selectedQuote); - // const finalUserOp = { ...estimatedUserOp } as any; - const userOpResponse = await smartAccount.sendTransaction(tx!, { + const { + mutate, + data: userOpResponse, + error, + isPending: isLoading, + } = useSendTransaction(); + const { + isLoading: waitIsLoading, + isSuccess: waitIsSuccess, + error: waitError, + data: waitData, + } = useUserOpWait({ userOpResponse }); + + useEffect(() => { + waitIsSuccess && + showSuccessMessage( + "Successful mint: " + + `${polygonAmoy.blockExplorers.default.url}/tx/${waitData?.receipt?.transactionHash}` + ); + }, [waitIsSuccess]); + + const mintNft = () => { + const manyOrOneTransactions = { + to: config.nft.address, + data: encodeFunctionData({ + abi: config.nft.abi, + functionName: "safeMint", + args: [scwAddress as Hex], + }), + }; + + mutate({ + manyOrOneTransactions, + buildUseropDto: { paymasterServiceData: { feeQuote: selectedQuote, mode: PaymasterMode.ERC20, spender: spender as Hex, maxApproval: false, }, - }); - - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage(`Minted Nft ${transactionHash}`, transactionHash); - setIsLoading(false); - } catch (err: any) { - console.error(err); - setIsLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); - } + }, + }); }; return (
-

- Use Cases {"->"} Gasless {"->"} Mint Nft -

- -

Mint Nft Flow

- -

- This is an example gasless transaction to Mint Nft. -

-

- Nft Balance in SCW:{" "} - {nftCount === null ? ( -

fetching...

- ) : ( - nftCount - )} -

+ +

+ Use Cases {"->"} Gasless {"->"} Mint Nft +

-

Available Fee options

+

Mint Nft Flow

- {isLoadingFee && ( -
+ This is an example gasless transaction to Mint Nft. +

+

+ Nft Balance in SCW:{" "} + {nftCount === null ? ( +

fetching...

+ ) : ( + nftCount + )} +

+ +

Available Fee options

+ + {isLoadingFee && ( +
+ {" "} + {" Loading Fee Options"} +
+ )} +
    - {" "} - {" Loading Fee Options"} -
- )} -
    - {feeQuotesArr.map((token, ind) => ( - //
  • - // {parseFloat( - // (token.payment / Math.pow(10, token.decimal)).toString() - // ).toFixed(8)}{" "} - // {token.symbol} - //
  • -
    - setSelectedQuote(token)} - style={{ - color: "#FFB999", - }} - name={token.symbol} - id={token.symbol} - checked={selectedQuote === token} - /> - -
    - ))} -
+ {feeQuotesArr.map((token, ind) => ( +
+ setSelectedQuote(token)} + style={{ + color: "#FFB999", + }} + name={token.symbol} + id={token.symbol} + checked={selectedQuote === token} + /> + +
+ ))} + -
); }; diff --git a/src/components/Forward/index.tsx b/src/components/Forward/index.tsx index 0477f42..07b744a 100644 --- a/src/components/Forward/index.tsx +++ b/src/components/Forward/index.tsx @@ -1,6 +1,5 @@ import React from "react"; import { makeStyles } from "@mui/styles"; -import ControlPointDuplicateIcon from "@mui/icons-material/ControlPointDuplicate"; import CollectionsIcon from "@mui/icons-material/Collections"; interface Props { @@ -24,20 +23,6 @@ const cardItems = [ /> ), }, - { - title: "Batch Liquidity", - description: - "This magic bundle will approve USDC then provide the USDC liquidity to Hyphen Pool.", - index: 7, - icon: ( - - ), - }, ]; const ForwardFlow: React.FC = ({ diff --git a/src/components/Modules/ABI_SVM.tsx b/src/components/Modules/ABI_SVM.tsx deleted file mode 100644 index 5b7caeb..0000000 --- a/src/components/Modules/ABI_SVM.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useState } from "react"; -import { Contract, ethers } from "ethers"; -import abis from "../../utils/configs/contractsInfo.json"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { useAccount } from "wagmi"; -import CreateABISVM from "./CreateABISVM"; -import { DEFAULT_ABI_SVM_MODULE } from "@biconomy/account"; - -export default function ABISVM() { - const { address } = useAccount(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const [loading, setLoading] = useState(false); - const [provider, setProvider] = useState(null); - - const [mockStake, setMockStake] = useState(); - - const connect = async () => { - // @ts-ignore - const { ethereum } = window; - try { - setLoading(true); - const provider = new ethers.BrowserProvider(ethereum); - await provider.send("eth_requestAccounts", []); - setProvider(provider); - - setMockStake(mockStake); - setLoading(false); - } catch (error) { - console.error(error); - } - }; - - console.log(smartAccount); - console.log(provider); - - return ( - <> -
-

ABI SVM Demo

- {!loading && !address && ( - - )} - {loading &&

Loading Smart Account...

} - {scwAddress &&

Smart Account: {scwAddress}

} - - {smartAccount && ( - - )} -
- - ); -} diff --git a/src/components/Modules/CreateABISVM.tsx b/src/components/Modules/CreateABISVM.tsx deleted file mode 100644 index 576523b..0000000 --- a/src/components/Modules/CreateABISVM.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React, { useState } from "react"; -import { Provider, ethers } from "ethers"; -import { toast, ToastContainer } from "react-toastify"; -import "react-toastify/dist/ReactToastify.css"; -import UseABISVM from "./UseABISVM"; -import { useAccount } from "wagmi"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { - BiconomySmartAccountV2, - createSession, - createSessionKeyEOA, - Session, - Policy, - PaymasterMode, -} from "@biconomy/account"; - -import { polygonAmoy } from "viem/chains"; -import Button from "../Button"; - -interface props { - smartAccount: BiconomySmartAccountV2; - address: string; - provider: Provider; - nftContract: ethers.Contract; - abiSVMAddress: string; -} - -const CreateABISVM: React.FC = () => { - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e"; - const [hasSession, setHasSession] = useState(false); - const { address } = useAccount(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - - const createSessionHandler = async () => { - const toastMessage = "Creating Sessions for " + address; - toast.info(toastMessage, { - position: "top-right", - autoClose: 15000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "dark", - }); - if (!address || !smartAccount) { - alert("Please connect wallet first"); - } else { - try { - const { sessionKeyAddress, sessionStorageClient } = - // @ts-ignore - await createSessionKeyEOA(smartAccount, polygonAmoy); - - const policy: Policy[] = [ - { - sessionKeyAddress, - contractAddress: nftAddress, - functionSelector: "safeMint(address)", - rules: [ - { - offset: 0, - condition: 0, - referenceValue: scwAddress, - }, - ], - interval: { - validUntil: 0, - validAfter: 0, - }, - valueLimit: 0n, - }, - ]; - - const { wait } = await createSession( - smartAccount, - policy, - sessionStorageClient, - { - paymasterServiceData: { - mode: PaymasterMode.SPONSORED, - }, - } - ); - const { - receipt: { transactionHash }, - success, - } = await wait(); - - console.log("txHash", transactionHash); - console.log("Sessions Enabled"); - if (success) { - setHasSession(true); - toast.success(`Success ${success}`, { - position: "top-right", - autoClose: 6000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "dark", - }); - } - } catch (err: any) { - console.error(err); - } - } - }; - - return ( -
- - - {!!hasSession ? ( - - ) : ( -
- ); -}; - -export default CreateABISVM; diff --git a/src/components/Modules/CreateBatchSession.tsx b/src/components/Modules/CreateBatchSession.tsx index f74fad6..474dacf 100644 --- a/src/components/Modules/CreateBatchSession.tsx +++ b/src/components/Modules/CreateBatchSession.tsx @@ -1,138 +1,115 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { makeStyles } from "@mui/styles"; -import { - CreateSessionDataParams, - PaymasterMode, - Session, - createABISessionDatum, - createSessionKeyEOA, - createERC20SessionDatum, - createBatchSession, -} from "@biconomy/account"; import { useAccount } from "wagmi"; import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { configInfo, showErrorMessage, showSuccessMessage } from "../../utils"; -import { getActionForErrorMessage } from "../../utils/error-utils"; +import { + Sponsored, + bigIntReplacer, + useCreateBatchSession, + useSmartAccount, + useUserOpWait, +} from "@biconomy/use-aa"; +import { configInfo, showSuccessMessage } from "../../utils"; import { polygonAmoy } from "viem/chains"; -import { Hex, encodeAbiParameters } from "viem"; +import { Hex } from "viem"; import UseBatchSession from "./UseBatchSession"; - -const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e"; -const receiver = "0x42138576848E839827585A3539305774D36B9602"; -const amount = BigInt(50000000); +import { ErrorGuard } from "../../utils/ErrorGuard"; const CreateBatchSession: React.FC = () => { const classes = useStyles(); const { address } = useAccount(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const [loading, setLoading] = useState(false); + const { smartAccountAddress: scwAddress } = useSmartAccount(); const [hasSession, setHasSession] = useState(false); - const createSessionHandler = async () => { - if (!scwAddress || !smartAccount || !address) { - showErrorMessage("Please connect wallet first"); - return; - } - try { - const { sessionKeyAddress, sessionStorageClient } = - // @ts-ignore - await createSessionKeyEOA(smartAccount, polygonAmoy); - - const leaves: CreateSessionDataParams[] = [ - createERC20SessionDatum({ - interval: { - validUntil: 0, - validAfter: 0, - }, - sessionKeyAddress, - sessionKeyData: encodeAbiParameters( - [ - { type: "address" }, - { type: "address" }, - { type: "address" }, - { type: "uint256" }, - ], - [ - sessionKeyAddress, - configInfo.usdt.address as Hex, // erc20 token address - receiver, // receiver address - amount, - ] - ), - }), - createABISessionDatum({ - interval: { - validUntil: 0, - validAfter: 0, - }, - sessionKeyAddress, - contractAddress: nftAddress, - functionSelector: "safeMint(address)", - rules: [ - { - offset: 0, - condition: 0, - referenceValue: scwAddress, - }, - ], - valueLimit: 0n, - }), - ]; - - const { wait } = await createBatchSession( - smartAccount, - sessionStorageClient, - leaves, + const policyLeaves = [ + { + interval: { + validUntil: 0, + validAfter: 0, + }, + contractAddress: configInfo.nft.address as Hex, + functionSelector: "safeMint(address)", + rules: [ { - paymasterServiceData: { - mode: PaymasterMode.SPONSORED, - }, - } - ); + offset: 0, + condition: 0, + referenceValue: scwAddress, + }, + ], + valueLimit: 0n, + }, + { + interval: { + validUntil: 0, + validAfter: 0, + }, + contractAddress: configInfo.nft.address as Hex, + functionSelector: "safeMint(address)", + rules: [ + { + offset: 0, + condition: 0, + referenceValue: scwAddress, + }, + ], + valueLimit: 0n, + }, + ]; + + const { + mutate, + data: userOpResponse, + error, + isPending: isLoading, + } = useCreateBatchSession(); - const { - receipt: { transactionHash }, - success, - } = await wait(); + const { + isLoading: waitIsLoading, + isSuccess: waitIsSuccess, + error: waitError, + data: waitData, + } = useUserOpWait({ userOpResponse }); - console.log("txHash", transactionHash); - if (success) { - setHasSession(true); - showSuccessMessage( - `Session Created: ${transactionHash}`, - transactionHash - ); - } - } catch (err: any) { - console.error(err); - setLoading(false); - const errorAction = getActionForErrorMessage(err.message); - showErrorMessage( - errorAction || err.message || "Error in sending the transaction" + useEffect(() => { + if (waitIsSuccess) { + setHasSession(true); + showSuccessMessage( + "Successful mint: " + + `${polygonAmoy.blockExplorers.default.url}/tx/${waitData?.receipt?.transactionHash}` ); } - }; + }, [waitIsSuccess]); + + const createSessionHandler = () => + mutate({ + policy: policyLeaves, + buildUseropDto: Sponsored, + }); return (
-

- Use Cases {"->"} Session {"->"} Create Session -

+ +

+ Use Cases {"->"} Session {"->"} Create Batch Session +

+ +

Create Batch Session Flow

-

Create Batch Session Flow

+
policy: {JSON.stringify(policyLeaves, bigIntReplacer, 2)}
- {!!hasSession ? ( - - ) : ( -
); }; diff --git a/src/components/Modules/CreateSession.tsx b/src/components/Modules/CreateSession.tsx new file mode 100644 index 0000000..15ab13a --- /dev/null +++ b/src/components/Modules/CreateSession.tsx @@ -0,0 +1,140 @@ +import React, { useEffect, useState } from "react"; +import { toast, ToastContainer } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; +import UseSession from "./UseSession"; +import { useAccount } from "wagmi"; +import { + Sponsored, + bigIntReplacer, + useCreateSession, + useSmartAccount, + useUserOpWait, +} from "@biconomy/use-aa"; +import Button from "../Button"; +import { makeStyles } from "@mui/styles"; +import { Hex } from "viem"; +import { ErrorGuard } from "../../utils/ErrorGuard"; +import { showSuccessMessage } from "../../utils"; +import { polygonAmoy } from "viem/chains"; + +const CreateSession: React.FC = () => { + const classes = useStyles(); + + const nftAddress: Hex = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e"; + + const [hasSession, setHasSession] = useState(false); + const { address } = useAccount(); + const { smartAccountAddress: scwAddress } = useSmartAccount(); + + const policy = [ + { + contractAddress: nftAddress, + functionSelector: "safeMint(address)", + rules: [ + { + offset: 0, + condition: 0, + referenceValue: scwAddress, + }, + ], + interval: { + validUntil: 0, + validAfter: 0, + }, + valueLimit: 0n, + }, + ]; + + const { + mutate, + data: userOpResponse, + error, + isPending: isLoading, + } = useCreateSession(); + + const { + isLoading: waitIsLoading, + isSuccess: waitIsSuccess, + error: waitError, + data: waitData, + } = useUserOpWait({ userOpResponse }); + + useEffect(() => { + if (waitIsSuccess) { + setHasSession(true); + showSuccessMessage( + "Successful mint: " + + `${polygonAmoy.blockExplorers.default.url}/tx/${waitData?.receipt?.transactionHash}` + ); + } + }, [waitIsSuccess]); + + const createSessionHandler = () => + mutate({ + policy, + buildUseropDto: Sponsored, + }); + + return ( +
+ +

+ Use Cases {"->"} Modules {"->"} {hasSession ? "Use" : "Create"}{" "} + Session +

+ +

+ {hasSession ? "Use" : "Create"} a Session +

+ + + +
policy: {JSON.stringify(policy, bigIntReplacer, 2)}
+ + {!!hasSession ? ( + + ) : ( +
+ ); +}; + +const useStyles = makeStyles(() => ({ + main: { + margin: "auto", + padding: "10px 40px", + color: "#EEEEEE", + }, + subTitle: { + color: "#FFB999", + fontSize: 36, + margin: 0, + }, + h3Title: { + color: "#e6e6e6", + }, + listHover: { + "&:hover": { + color: "#FF9551", + }, + }, +})); + +export default CreateSession; diff --git a/src/components/Modules/CreateSessionForCustomSVM.tsx b/src/components/Modules/CreateSessionForCustomSVM.tsx deleted file mode 100644 index 883f730..0000000 --- a/src/components/Modules/CreateSessionForCustomSVM.tsx +++ /dev/null @@ -1,241 +0,0 @@ -import React, { useEffect, useState } from "react"; -import { makeStyles } from "@mui/styles"; -import { useAccount } from "wagmi"; -import { - Hex, - encodeAbiParameters, - encodeFunctionData, - getFunctionSelector, - parseEther, - slice, -} from "viem"; -import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; -import { createSessionKeyManagerModule } from "@biconomy/account"; -import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { CONTRACT_CALL_SESSION_VALIDATION_MODULE } from "../../utils/chainConfig"; -import { getActionForErrorMessage } from "../../utils/error-utils"; -import { - configInfo as config, - showErrorMessage, - showSuccessMessage, -} from "../../utils"; -import { managerModuleAddr } from "../../utils/constants"; - -const CreateCustomSession: React.FC = () => { - const classes = useStyles(); - const { address } = useAccount(); - const { scwAddress, smartAccount } = useSmartAccountContext(); - const [loading, setLoading] = useState(false); - const [isSessionKeyModuleEnabled, setIsSessionKeyModuleEnabled] = - useState(false); - - useEffect(() => { - let checkSessionModuleEnabled = async () => { - if (!scwAddress || !smartAccount || !address) { - setIsSessionKeyModuleEnabled(false); - return; - } - try { - let biconomySmartAccount = smartAccount; - const sessionKeyManagerModuleAddr = managerModuleAddr; - // Checks if Session Key Manager module is enabled on the smart account. - // Before using session keys this module must be enabled. - // If not, createSession transaction will also enable this module along with storing session info on-chain. - const isEnabled = await biconomySmartAccount.isModuleEnabled( - sessionKeyManagerModuleAddr - ); - console.log("isSessionKeyModuleEnabled", isEnabled); - setIsSessionKeyModuleEnabled(isEnabled); - return; - } catch (err: any) { - console.error(err); - setLoading(false); - setIsSessionKeyModuleEnabled(false); - return; - } - }; - checkSessionModuleEnabled(); - }, [isSessionKeyModuleEnabled, scwAddress, smartAccount, address]); - - const createSession = async (enableSessionKeyModule: boolean) => { - if (!scwAddress || !smartAccount || !address) { - showErrorMessage("Please connect wallet first"); - return; - } - try { - let biconomySmartAccount = smartAccount; - const sessionKeyManagerModuleAddr = managerModuleAddr; - const ccSessionValidationModuleAddr = - CONTRACT_CALL_SESSION_VALIDATION_MODULE; - - // -----> setMerkle tree tx flow - // create dapp side session key - const sessionPKey = generatePrivateKey(); - const sessionSigner = privateKeyToAccount(sessionPKey); - const sessionKeyEOA = sessionSigner.address; - console.log("sessionKeyEOA", sessionKeyEOA); - - // Optional: JUST FOR DEMO: update local storage with session key - // If you have session key-pair on the client side you can keep using those without making part of any storage - window.localStorage.setItem("sessionPKey", sessionPKey); - - console.log("here it works "); - - // Create an instance of Session Key Manager module from modules package - // This module is responsible for below tasks/helpers: - // a. Maintain session leaf storage in defined storage client (Biconomy by default using browser local storage which works for front-end apps) - // b. Generate dummy signature for userOp estimations - // c. Provides helpers to sign userOpHash with session key in the right format and generate proof for particular leaf - const sessionManagerModule = await createSessionKeyManagerModule({ - moduleAddress: sessionKeyManagerModuleAddr, - smartAccountAddress: scwAddress, - }); - - console.log("ever here? "); - - // Cretae session key data - // Session key data is always corrsponding to the Session Validation Module being used - // It always requires the public address of the session key - // Rest of the details depends on the actual permissions - - const permission = [ - config.hyphenLP.address, - slice(getFunctionSelector("addTokenLiquidity(address,uint256)"), 0, 4), - ]; - - const sessionKeyData = encodeAbiParameters( - [ - { type: "address" }, - { - type: "tuple", - components: [{ type: "address" }, { type: "bytes4" }], - }, - ], - [sessionKeyEOA, [permission[0] as Hex, permission[1] as Hex]] - ); - - // Below helper gives you tx data to be used to make a call from Smart Account to enable session on-chain - // This transaction needs a user signature and for gas sponsorship or ERC20 paymaster can be used. - const sessionTxData = await sessionManagerModule.createSessionData([ - { - validUntil: 0, // 0 value means extremes - validAfter: 0, // 0 value means extremes - sessionValidationModule: ccSessionValidationModuleAddr, - sessionPublicKey: sessionKeyEOA, - sessionKeyData: sessionKeyData, - }, - // can optionally enable multiple leaves(sessions) altogether - ]); - console.log("sessionTxData", sessionTxData); - - // tx to set session key - const tx2 = { - to: sessionKeyManagerModuleAddr as Hex, // session manager module address - value: BigInt(0), - data: sessionTxData.data as Hex, - }; - - let transactionArray = []; - if (enableSessionKeyModule) { - // -----> enableModule session manager module - const tx1 = await biconomySmartAccount.getEnableModuleData( - sessionKeyManagerModuleAddr - ); - transactionArray.push({ - to: tx1.to as Hex, - value: BigInt(0), - data: tx1.data as Hex, - }); - } - transactionArray.push(tx2); - - const approveCallData = encodeFunctionData({ - abi: config.usdc.abi, - functionName: "approve", - args: [config.hyphenLP.address, parseEther("100", "gwei")], - }); - const tx3 = { - to: config.usdc.address as Hex, - value: BigInt(0), - data: approveCallData, - }; - transactionArray.push(tx3); - - // Building the user operation - // If you're going to use sponsorship paymaster details can be provided at this step - let userOpResponse = await smartAccount.sendTransaction(transactionArray); - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage("Session Created Successfully", transactionHash); - } catch (err: any) { - console.error(err); - setLoading(false); - const errorAction = getActionForErrorMessage(err.message); - showErrorMessage( - errorAction || err.message || "Error in sending the transaction" - ); - } - }; - - return ( -
-

- Use Cases {"->"} Session {"->"} Create Session -

- -

Create Session Flow

- - {isSessionKeyModuleEnabled ? ( -
-

- Session Key Manager Module is already enabled ✅. Click on the - button to create a new session. -

- -
- ) : ( -
-

- This is a single transaction to enable the sesion key manager module - and make a session active on-chain using Contract call (ABI) session - validation module. -

- -
- )} -
- ); -}; - -const useStyles = makeStyles(() => ({ - main: { - padding: "10px 40px", - color: "#EEEEEE", - }, - subTitle: { - color: "#FFB999", - fontSize: 36, - margin: 0, - }, - h3Title: { - color: "#e6e6e6", - }, -})); - -export default CreateCustomSession; diff --git a/src/components/Modules/ERC20TransferUsingSession.tsx b/src/components/Modules/ERC20TransferUsingSession.tsx deleted file mode 100644 index 4ff04db..0000000 --- a/src/components/Modules/ERC20TransferUsingSession.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import React, { useState } from "react"; -import { ethers } from "ethers"; -import { makeStyles } from "@mui/styles"; - -import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { - configInfo as config, - showSuccessMessage, - showErrorMessage, -} from "../../utils"; -import { - DEFAULT_ERC20_MODULE, - createSessionKeyManagerModule, -} from "@biconomy/account"; -import { EthersSigner } from "@biconomy/account"; -import { useAccount } from "wagmi"; -import { managerModuleAddr } from "../../utils/constants"; - -const ERC20Transfer: React.FC = () => { - const classes = useStyles(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const { address } = useAccount(); - const [loading, setLoading] = useState(false); - - const erc20Transfer = async () => { - if (!scwAddress || !smartAccount || !address) { - showErrorMessage("Please connect wallet first"); - return; - } - try { - setLoading(true); - let biconomySmartAccount = smartAccount; - const sessionKeyManagerModuleAddr = managerModuleAddr; - const erc20SessionValidationModuleAddr = DEFAULT_ERC20_MODULE; - - // get session key from local storage - const sessionKeyPrivKey = window.localStorage.getItem("sessionPKey"); - - if (!sessionKeyPrivKey) { - showErrorMessage("Session key not found"); - return; - } - const sessionSigner = new ethers.Wallet(sessionKeyPrivKey); - console.log("sessionSigner", sessionSigner); - - const newSigner = new EthersSigner(sessionSigner, "ethers"); - - // generate sessionManagerModule - const sessionManagerModule = await createSessionKeyManagerModule({ - moduleAddress: sessionKeyManagerModuleAddr, - smartAccountAddress: scwAddress, - }); - - // set active module to sessionManagerModule - // This time we will make use of enabled session hence transaction needs to via go through session manager module - // Hence it is set as runtime active module - biconomySmartAccount = - biconomySmartAccount.setActiveValidationModule(sessionManagerModule); - - const tokenContract = new ethers.Contract( - config.usdc.address, - config.usdc.abi, - sessionSigner - ); - let decimals = 18; - - try { - decimals = await tokenContract.decimals(); - } catch (error) { - throw new Error("invalid token address supplied"); - } - - // @ts-ignore - const { data } = await tokenContract.populateTransaction.transfer( - "0x42138576848E839827585A3539305774D36B9602", // receiver address // Has to be the same receiver for which session permissions are set - ethers.parseUnits("5".toString(), decimals) - ); - - // generate tx data to erc20 transfer - // NOTE: It can only be used for single transaction and not part of batch calldata - // If you want to make use of batch calldata then you need to use the session router module - const tx1 = { - to: config.usdc.address, //erc20 token address - data: data, - value: 0, - }; - - // send user operation - const userOpResponse = await biconomySmartAccount.sendTransaction( - tx1, - // below params are required for passing on this information to session key manager module to create padded signature - { - params: { - sessionSigner: newSigner, - sessionValidationModule: erc20SessionValidationModuleAddr, - }, - simulationType: "validation_and_execution", - } - ); - - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage(`ERC20 Transfer ${transactionHash}`, transactionHash); - setLoading(false); - } catch (err: any) { - console.error(err); - setLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); - } - }; - - return ( -
-

- Use Cases {"->"} Gasless {"->"} ERC20 Transfer -

- -

ERC20 Transfer via Session Key

- -

- This is an example to transfer ERC20 tokens makin use of enabled - session. -

- -
- ); -}; - -const useStyles = makeStyles(() => ({ - main: { - padding: "10px 40px", - color: "#EEEEEE", - }, - subTitle: { - color: "#FFB999", - fontSize: 36, - margin: 0, - }, - h3Title: { - color: "#e6e6e6", - }, -})); - -export default ERC20Transfer; diff --git a/src/components/Modules/HyphenLpUsingSession.tsx b/src/components/Modules/HyphenLpUsingSession.tsx deleted file mode 100644 index 40c1d44..0000000 --- a/src/components/Modules/HyphenLpUsingSession.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import React, { useState } from "react"; -import { ethers } from "ethers"; -import { makeStyles } from "@mui/styles"; - -import Button from "../Button"; -import { useSmartAccountContext } from "../../contexts/SmartAccountContext"; -import { - configInfo as config, - showSuccessMessage, - showErrorMessage, -} from "../../utils"; -import { createSessionKeyManagerModule } from "@biconomy/account"; -import { CONTRACT_CALL_SESSION_VALIDATION_MODULE } from "../../utils/chainConfig"; -import { EthersSigner } from "@biconomy/account"; -import { useAccount } from "wagmi"; -import { managerModuleAddr } from "../../utils/constants"; -import { parseUnits } from "viem"; - -const HyphenLpUsingSession: React.FC = () => { - const classes = useStyles(); - const { address } = useAccount(); - const { smartAccount, scwAddress } = useSmartAccountContext(); - const [loading, setLoading] = useState(false); - - const hyphenLpUsingSession = async () => { - if (!scwAddress || !smartAccount || !address) { - showErrorMessage("Please connect wallet first"); - return; - } - try { - setLoading(true); - let biconomySmartAccount = smartAccount; - const sessionKeyManagerModuleAddr = managerModuleAddr; - const ccSessionValidationModuleAddr = - CONTRACT_CALL_SESSION_VALIDATION_MODULE; - - // get session key from local storage - const sessionKeyPrivKey = window.localStorage.getItem("sessionPKey"); - - if (!sessionKeyPrivKey) { - showErrorMessage("Session key not found"); - return; - } - const sessionSigner = new ethers.Wallet(sessionKeyPrivKey); - console.log("sessionSigner", sessionSigner); - - const newSigner = new EthersSigner(sessionSigner, "ethers"); - - // generate sessionManagerModule - const sessionManagerModule = await createSessionKeyManagerModule({ - moduleAddress: sessionKeyManagerModuleAddr, - smartAccountAddress: scwAddress, - }); - - // set active module to sessionManagerModule - // This time we will make use of enabled session hence transaction needs to via go through session manager module - // Hence it is set as runtime active module - biconomySmartAccount = - biconomySmartAccount.setActiveValidationModule(sessionManagerModule); - - const hyphenContract = new ethers.Contract( - config.hyphenLP.address, - config.hyphenLP.abi, - sessionSigner - ); - - const addLiquidityData = hyphenContract.interface.encodeFunctionData( - "addTokenLiquidity", - [config.usdc.address, parseUnits("0.01", 6)] - ); // 1 USDC (amoy USDC has 6 decimals) - const tx1 = { - to: config.hyphenLP.address, - data: addLiquidityData, - value: 0, - }; - - // build user op - // with calldata to provide LP - let userOpResponse = await biconomySmartAccount.sendTransaction(tx1, { - params: { - sessionSigner: newSigner, - sessionValidationModule: ccSessionValidationModuleAddr, - }, - simulationType: "validation_and_execution", - }); - - console.log("userOpHash", userOpResponse); - const { transactionHash } = await userOpResponse.waitForTxHash(); - console.log("txHash", transactionHash); - showSuccessMessage(`LP Deposit ${transactionHash}`, transactionHash); - setLoading(false); - } catch (err: any) { - console.error(err); - setLoading(false); - showErrorMessage(err.message || "Error in sending the transaction"); - } - }; - - return ( -
-

- Use Cases {"->"} Gasless {"->"} Deposit into Hyphen Pool using session - key -

- -

- Deposit into Hyphen Pool via Session Key -

- -

- This is an example to Deposit into Hyphen Pool making use of enabled - session. Requires prior approval from smart account -

- -
- ); -}; - -const useStyles = makeStyles(() => ({ - main: { - padding: "10px 40px", - color: "#EEEEEE", - }, - subTitle: { - color: "#FFB999", - fontSize: 36, - margin: 0, - }, - h3Title: { - color: "#e6e6e6", - }, -})); - -export default HyphenLpUsingSession; diff --git a/src/components/Modules/UseABISVM.tsx b/src/components/Modules/UseABISVM.tsx deleted file mode 100644 index 426d9ee..0000000 --- a/src/components/Modules/UseABISVM.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React from "react"; -import { - PaymasterMode, - Session, - createSessionSmartAccountClient, -} from "@biconomy/account"; -import { toast } from "react-toastify"; -import "react-toastify/dist/ReactToastify.css"; -import { Hex, encodeFunctionData, parseAbi } from "viem"; -import Button from "../Button"; -import { configInfo } from "../../utils"; -import { polygonAmoy } from "viem/chains"; -import { bundlerUrl, paymasterApiKey } from "../../utils/chainConfig"; - -interface props { - smartAccountAddress: Hex; - address: string; -} - -const UseABISVM: React.FC = ({ smartAccountAddress, address }) => { - const sendUserOpWithData = async () => { - if (!address || !smartAccountAddress || !address) { - alert("Connect wallet first"); - return; - } - - try { - toast.info("Firing tx", { - position: "top-right", - autoClose: 15000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "dark", - }); - - const emulatedSmartAccount = await createSessionSmartAccountClient( - { - accountAddress: smartAccountAddress, // Set the account address on behalf of the user - bundlerUrl, - biconomyPaymasterApiKey: paymasterApiKey, - chainId: polygonAmoy.id, - }, - smartAccountAddress - ); - - const tx = { - to: configInfo.nft.address, - data: encodeFunctionData({ - abi: parseAbi(["function safeMint(address _to)"]), - functionName: "safeMint", - args: [smartAccountAddress as Hex], - }), - }; - - // build user op - let userOpResponse = await emulatedSmartAccount.sendTransaction(tx, { - paymasterServiceData: { - mode: PaymasterMode.SPONSORED, - }, - }); - console.log("userOpHash %o for Session Id %s", userOpResponse); - - const { receipt, success } = await userOpResponse.wait(1); - - const scanLink = `${polygonAmoy.blockExplorers.default.url}/tx/${receipt.transactionHash}`; - success && - toast.success( - - Success Click to view transaction - , - { - position: "top-right", - autoClose: 6000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "dark", - } - ); - } catch (err: any) { - console.error(err); - toast.error(err.message, { - position: "top-right", - autoClose: 6000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "dark", - }); - } - }; - - return ( -