From 3e7c9ad52b6f8f738034ae31b2af01c3cbda588d Mon Sep 17 00:00:00 2001 From: Alissa Crane Date: Wed, 20 Nov 2024 08:56:19 -0800 Subject: [PATCH] feat: upgrade viem to support heterogeneous calls (#1527) Co-authored-by: Alissa Crane --- package.json | 6 +- playground/nextjs-app-router/bun.lockb | Bin 508972 -> 482647 bytes .../components/demo/Transaction.tsx | 42 +- .../components/demo/TransactionDefault.tsx | 9 +- .../components/form/transaction-options.tsx | 3 + .../nextjs-app-router/lib/transactions.ts | 23 + playground/nextjs-app-router/package.json | 5 +- .../nextjs-app-router/types/onchainkit.ts | 1 + .../components/TransactionDefault.tsx | 2 - .../components/TransactionProvider.test.tsx | 70 +- .../components/TransactionProvider.tsx | 69 +- .../hooks/useSendWalletTransactions.test.tsx | 27 - .../hooks/useSendWalletTransactions.tsx | 20 +- src/transaction/types.ts | 38 +- src/transaction/utils/isContract.ts | 8 + .../utils/sendBatchedTransactions.test.ts | 45 +- .../utils/sendBatchedTransactions.ts | 35 +- .../utils/sendSingleTransactions.test.ts | 43 +- .../utils/sendSingleTransactions.ts | 26 +- src/wallet/types.ts | 4 +- src/wallet/utils/isValidAAEntrypoint.test.ts | 4 +- src/wallet/utils/isValidAAEntrypoint.ts | 4 +- .../isWalletACoinbaseSmartWallet.test.ts | 2 +- .../utils/isWalletACoinbaseSmartWallet.ts | 2 +- yarn.lock | 661 +++++++----------- 25 files changed, 478 insertions(+), 671 deletions(-) create mode 100644 src/transaction/utils/isContract.ts diff --git a/package.json b/package.json index 309448dd4a..1a4a9db160 100644 --- a/package.json +++ b/package.json @@ -41,10 +41,9 @@ "clsx": "^2.1.1", "graphql": "^14 || ^15 || ^16", "graphql-request": "^6.1.0", - "permissionless": "^0.1.29", "tailwind-merge": "^2.3.0", - "viem": "^2.17.4", - "wagmi": "^2.11.0" + "viem": "^2.21.33", + "wagmi": "^2.12.24" }, "devDependencies": { "@biomejs/biome": "1.8.3", @@ -73,7 +72,6 @@ "graphql-request": "^6.1.0", "jsdom": "^24.1.0", "packemon": "3.3.1", - "permissionless": "^0.1.29", "react": "^18", "react-dom": "^18", "rimraf": "^5.0.5", diff --git a/playground/nextjs-app-router/bun.lockb b/playground/nextjs-app-router/bun.lockb index 3af89290e028e40bde5cf8ec23fced7efc734a96..03e209c819a85ad2b0a75e39b5353e26ec050e26 100755 GIT binary patch delta 148384 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 delta 165323 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 z zp6$UcrH}85A9nDqS@F%W=X|v>yUddBwY^YFN~nLude1$#z4KI~PjnbF=)M1_-KVAY z&OLhuRa>y+)DWrkw{^kqEZWrYXuqa;$IjDN|JPq_U#Ih-?d?B}-di`jQ6201N7^>+ zI;@{wWmoxrW%ob)#-&~O(j;TgiBcJs>c4GLb&H>$zB}smg3Y&!uWr>w`D&@;TGzq# zTjolK^gqQXZI|B6`lG_mkE6>pn6&$7UwgNRDwQ8r3t9edl6~tRH#$5ZBlDNrU^3hi7%)W~{7s`?Jd1jlImr9159Vu3?3)?b^-NIo>VvEc0`NTu8+_^^&b)PxS_FQe=eNOb1p{G7S`xf_p-M(XEmfopjwI{vj<;yD%^!T$>#YQi> zg%|UVo}aU#M%S&4E8aNR)J6Gj@|r)(Z(b!m-rjLl=9*>kFX~!L>+4pu-f#A7Ww}aU zww#&1=Iw>t-OnUD2RqwE5j8uyJhI+&N_YS3_TvAP{W|I6*|7nwlcb&wcG3n1TWdq( z1&LouJsxoFQmOPm0uK+9t~l6P{N>iveOHYeTQ_}l*sCzK7I*$pET-(t!DGT7x^zx$ zQeyF)Yh#MvYZU)#uy^@M-OL(vyXk)RdaIVbHa?jcWVLhb?Ph*WyXCizANt2)pCLW2 zwme$vR_3Pbdg#(*;&|EH&(1_A23-O;AE%$nEGi<_ouV|&N+1I ztV8;s?Aw2>kLzl=@y_zF!@=VmJ~%9Ra3P>rugImz?`zFl;X19_sa}5WLk=%=kv2Hl z8M=&4I_#6#=i-P#>l$_F^l8;1vk_92K3f{z9J!=XUelqM^B$Lfb~*FJu|b=4yKiQF z&@3&r>gB0ZO^*-Xv1G^c*H5PvH}5cf+qC8odsUld_l{>|^|dKeuiG(pmRkZs*D!55Y_^zVNDS*`SV z>t5ck6|W!cPT6a+&x>=T2RYB#X?XME+O&rowtm|-Wo<2o?0pp*?-o9f&&47uQ{;Jl~r^M=+*84^Y!-gHJw>c-&>2tLb zE@chvJ9Hg({F`UfWi^fWsvgj$#n*`6XuV{tbbRDF_3OlHUx#h1w07QV$LAj&N^`ZP zt&L4OtNa6qzdV(VJdx_9)PtoSW^zJ%`>w0r5g`8Q{8=`!x2>%o0D zp115AwZyjBx@)Vw5BIzOY)7TNcK@A~_G;Q2y17X?m#!V1U%t%4jt&#r?`v6hU1X*8 zfkPkqr<--^K7VWNL#w;itsG@u>0|8kwZ8U~Ty}4BY1Po-T&vFAJ9nBY?e_Wmd)}?S zdENIU*1i7B;8QkvV*78KSJfJJ=H5uxj^+DanYMgm_y2~U>E7l*Xy~cBZ<3@N5j)g9 zuOIhou>X&W#}7z#oo%eGTDQG!<@sFuG-~KLv02llQf>nWyQcv@x~KO8p5C8cV!-8< z&z^U*@tv0WJ>LAgAz*j>+Rh6l|7Kc)$wZ5X3=Qu&e3)PL#mcvQ}?!-bWGm`rQ3=kvv4*?Rh^r_+b&w10f=Vb;>DUYS)MK zhTffH6lZapc-VO}9oHpPllxbJbqTO!KKRrr4d)(%9}h!_LHf zH{XBL!gjRs)6tb4izalsQT}+vGjB8phcy}GJ-yqaLj$)O->q8e(KvTmX0f#&(_`LE zlbSZEBwcB2XIpMn{rykx=3X!!+q^z-=iSJ6nLTH8eSghfnxJtoZ2na3+Kh}P+f4gn zv!syzp0?`-52(~xvna6Ssi%(?Ea=+cK*x4>W7;_G+q%71`pRAJ%H8@aeuUKK>KeyW z{ja`q@mp4DV&h>`=e-`b@z$$@!xI)=K6(DNal@rb!)m;apLfP;#DtDU|Ch_x^gcSQ z?^fGGH*#~o-GAy49DJ;ypPSfdR%rUZ#mk02U8i5Qx};R&RB;+}Zh~dVgP2Q_)hgYiujoY9pjvt*!OXySMa6>*_y5RmCvvm7{gwofnO> z+q%q2vfi`x^{2iwqWU!Gz3aSrEo~e9A0cKH`dCj-8$YGr^N3?!*G}%9uyFI{%)9AU zn!n!Osl5N~m}o`*v|dl=4{>l_DA~H(N&fEbEe=TAvx8fj-^Fn zJ3m7j;Ap3vdTdkXwqsk?s6*y252>;>spGB4)3w%)44Psd5ct`7%hghKq&dr$n76yq zXy?{*5!IB#|LL0Hv2Xm%Sq*J15;p{0+^ewbBiS`_ZQtH&vN+KvFL&YmX#M@GB% z^x+R(`q_@SZgDqz;==2DyC&YKIpl6jn?1(R4yU?w>HEeepl9#Vf!h>+Kb@0VY1wu= zd#8}%>iK$ON`twI;bk9AIkaYY{+P;VMrYtsB`!!GV9`@+A+v`02EU85{KBUe08MfG?-bAnmd%=xopQ%_fz zpP0VgaZc5j+h%W!_OM>^Ppqcy-R(nnybD=fHvib)q24YBkLuhf4Dfxdz4>Cp%q|_x zZ4Twm?Rq+Y_q|qoUD{5T{%O?QEJ#4l%v3TtKJ4xN1eH{N^)9y8I_vq0lG2Uy?^T92WI<{=JZ)HaL zgxJ0fg8u%dS$OYsxnk>*`?_2E+g{z|=DKLk>x;nsQ6;ZEPrc@Ahh3);-+kyK!p3 zS9e49KGP;{IvP!SxZzX3&yh~neox*hZnb{8sLbR8Ju0{w7EEu`zx(C2`O_`yp0Mq= zbh%yP>YKu#x)meVOzr@yY{-R_6bAcvaj^x4U<&TUmHz9&K{4(~gI+)_K>%E*zUO!PmW9y>0gn z?VmXOMx_c?!_}pmKC&BiX-4SPQD>Xtr!inJ40{I?I3nZw4UwecYH_Vr<3MbUJ346rf%2s%BuEvYVH;7xA#^oy59D~(u9^l zUhT}+EqwWByxZoO7okh;HEdC`*`;=p_2}&M!S_JsMQz@oTi%xr%)h_KcKxMN z?s28d`F05TWLwG0??xHDw(p147Xts-cfXNp!QT(VQ_4I|ZTPfjsa7jT%&F(G#bxTC zL+#qQPn!7Jua?ZE@Dp%iEvUYKm z{9O_(+HTyZ8nxi>V9CPM)wOT%>Eq8jT8wnMxFYFn^v1qHovYWf-+yWHkSdY6cP8|I zU8PZJZSCAzi+ioB`9wW-&_7awr@v&ObCp`?W=L0b4u+j4cO0M6ZI128V{fl|1@vFs z@#@;Nb^*$2?Z*i|_1E;222M>qKV@b_#(IO{QEBnzysKY694_(v-q;zhGEcT0bh75< zQRQ>Q^YzV_^lWxXc_6gfNVkhAWu2s+Cj#f5I(K1IP}{8UYpdk6vQn;obv!&`o72&_ z-t#-3s+;~-=9}>W3vv|4qyb*G(hRQ*hh-iOzt$di%42Na2*ZGiIp-^tt8Fu~X4jLu zro3%i_GQ{(_xCB5CDWvt(vTLe7F}=kx!31rMoG!Kh1Ox)^)5XwecIBZR@*V3cN7n4 zn!QTfZq8|q^EPAZn-#Z~4w|rY^*P(YXX{IQTiE(H$th8?k$qg#p~J7A8Cdp6R=YlT zgs~^a&Hh{`;$32TTVZXN#LzZY@5iTi4=+A5$Y#otQZZ*I`0SkZ@1)9o6+v~%1&=x4 zyCx~9{H)q@w_NPdvWMi_vW4x6CDn&4UA%0_KOa_oO1su8+p>gSS0$qQ2Pvbaos`)! zLP}_5D_OT1AT4WUC*`&pV*Blp{o4;I<>trMs}_f1H#g_PIE)}ncxOgHOR zGnPvUZ4#u9ZC*u`+}ycp<@qtGrlX#IN*Rw?CpLvl>Rzv{bMAo`&s+BC*`#w>_a1!| zRd(LmIyx$%-N(Us9y>}j_Z+!iF=K5x+r{ShED(7LDL+7?*d|4G@=`pK)^_p|9WC&7g&LD`I%|{_Maj`mCyv1bK7R;{NjaS~ zVi`Opq{?PgM2rM$OL@i|SB2Js=P5}uWtoyvRA-$Sg{S9!C<0BMX{E=Vy~OvBG-Q%M zjp%^qi8LIgl;funQ@|+C+?Z1m4T5z9Q&88c*I=%ab0-hc9#3J(QpKfw)L8)5*HlVr zRZ4o&MJFcX@ujSpl<%t%w}UlD5mBz-foGy(qMr6=8W;%?-T<;~jk>5ijz5^o{Eg|La(}+%Z;NMuT zjXcF9X>Bhr@fl>^kiq!=8qu}9iNT4*Eu6szk@uN1SP4vrC(+baF)0xqG8ByZ!BXg| zQRGOGeZ0h{kTryi=~dO1X)c!#JAt)C9@^@q5qE>NGcl!AMJa2%PV9+?|BWEDlD+ve zSb$sv16Osd1kaGNJ9{YSR+1bi>ckrmP%C0YlfRWWz@*FGzBeSDt z`1uXauw-I2V*4s4uSX~15-_qW0t1xm;*8 zOuc0tLGYF9!LgJ*>PS(NPMi-RvrS?jjd&fbH)}dUqb%njMfKH*iycf$1CyXU3t@kq zvSK|ctG`YaRFB3=5h)ufic|=T(CQNyEk;2$VLeBtvAmF!NsiK!emd1E2)mG(RMt+E zqHQA`De5090gYS$W9n0rH4ujS7U(vszVswWCq99Y$JPXmYO*u>kz%`hh!>Ee8DUGe zj0=nEaugK(O08PZy;rb>BL?if&u0_D=c z*s9Bk(TFF&x*-p4i_lUX4N~Z3!_b5I%Xu`Yzrg~*1PWuSvhd)>((?dpYDkd-qXo>> zLNL}BIo~}4R0hEO**v2x;Ozw-iwKVYl`dHZW$JM1QRX2-!qdK~)X$$Xjxr)!YIJrc2ITjcPSm zGwM^7hg4fB+s{L+gQ=l$$&p$N0i*Kr2}fK9=EwSjJ3sxd?2HKlP7cgq&Z!lV@tQ8Avv={={(Fcrd$$k7)rWThEv?0Ouz#Dp_1UWgZ2CF~|}F zwH8=8RIRuiBs+74dBxBtf{`lbMmN1eYYv93xU+|-Lf|I@F*Vj8P=^#S5ixc^0gD9d zU%-z1z-nVY`xfMl1nXVEu7mX~V2wJnD98Gn_yfBQ)~&E4LSrEt4;E06cNL6=&5YpI zg^hu2%kf}rdh!uMPIHF-unQJL6NPy?FlvRl-YCvc685?b1|z{PSF-DQg)Z-7Dyl{z~|xD%7fh`$4D;=1Y9|a$-ds{2WI?% zode^u3}wm(G7rZQAKgn}Oi}XNn_yHDlm1d`(Sx}P^MHO}FdGGz?iw*0j7B6cN#%zg zl4F!k)L@?2+DXKwc>yd$dLHDVY}!l88mALOdkF$o5IGwxn+YbntTCrQJPOQL-l|(- z>JcNL0@*_XE8Gaqfw8jyY^9fSC#SjUT2) zzWFJK_LZ_`>(m#KiM=2Lc|s-ma*AuAx+>f>xKQdNS5c3Elop&h%EE7OkwsZi8N{U$ z!kp*>23yn8PSjfPESz4kLd5}0bruo2gHdBRAIECU77q}NPm3!&#oG{*RplkFt_mfv z*JTL!m`RD3S&u^?CHtU^k4C*6tQlBYlqn@8CNN#U^D-((3&y2tfu*UFvd4RLxIG)xC`f6}u)p-fQBW^A&e4gAa6yQGP`-<* zBfFS(}<;_SebHC;!>?S2+qCO zh{hw;5G}J1yd8`z%A(*KFjp{@F~1*zXEeLC;xZ7c5&MF*LLRfhl4!~Ct4?_v@Wo3J zBSn4DIgEqnkw1`9w)6-8;IAgizq9Jo$1DHo&NbI1>rS@H>!|ZtCpyKl2xm>tDKz3S zP%@v5d;?U*u`bQ!=3vIg=!fLM$yO$LzEIO*Oynv zdI-tQVQ{SF4`5_xC=XxLBr(s!>>?-)1tZU6o7*NZiVaXcPpe3h9CLL_=VU1=SEr`G zPJ&GH9RH%vlRTZ;FNOWpwI52UCqjz->ZiIFAk|9F6Froc zsZ!QGotTtr3W7P%dJ7mClEv<~VE$n2%I7`EVB|;e`vwZFC1=d- z^8=XM41+yA&!&sO+&NU5(M+cQsNRxC*eI(2if z!ZPwwixn*)^e);7O_cf?q~yv4U6WK*C7rhU=VO{%AVD*SQR8vP5-_p>W@n;Cd;vxc z!aj)V4Tmxf*q#^#Mz#Y(y-YCb1obfgPr%q5V;fR?3}cLqN7i+!XbGW7tAbdecq~P( z@KQw$$A&ItckodCgA^W2_<1OcjgTBy>O}pBf?E=L-3-QbPrRm4KLnGP3~VgBkI~Lt zAzBzrb4)jYfd(n-t4_><5W8_kRrwU|mcceJ#ukE+W0#QE(;F}^d6*O$Jx8*}@Qk1@ z92<;$j@5esMq40`1#qoKqnI)*Z!{R~@l~b7K*YdNQq&WjSbDTcGprJoKbX7p+}A^# z$mMJa9|2=t2|rX;7$Zd;(usj%*h-e$vzZR&f!1v>aQfI8^M{x@sVR9JS!5wLXJ2_i zrj%wZ^Kj%vX~bACYJ}xwg3(|Ydk#i>GoIr5XjJawL z^JXpJJUJZfAKwBA*M2O*dU&a4t}GoGwM((J3cRm$L5Y)O(TF z{pY%BhZ%y<;}@v`Qi|(rU7O;b`%E@w?4!7#36k}GdohfCl)`<@xBzKa}OX`NR z*w9%s{M4XMfONo*jgJv6r61yDe-v#>DE_^uStznHzJeV0Z34hg~xGiD!=FxJ;+|452@rv)oVyiaRi z+n8s8zLD3zP$RvQG0%-j$&Y@tR}-UYHsGb|p&og-tc3`FDd@1XJPT6k0^yGm~J$*jY^~Y8(LHg^gIxi@UqGe5o zYW476qytWgmJm{q_@P-#)l%jxP#l|$7ntlU@}4mTOovw3@;wel zO98%utE6(7>99bDp$BJ^xP5tGc)tZCg4BG)`SfnV5$gx4( z2}WwL%SJwDP~)CPbo;|(8Ei9RELdxlWVYQ^z$i~x!Meih2E@i@U}O^Z5GDqU6lO0P zPJ%TDlTU9dyOmgh#@McS(1sKnh}#^ExD$-($kA0SzKY#$&|W`{7!5`mBYwiD%fZ~i zFl3x5?t@Y5%m8+)P18oPV*qDtq+2;-JJ|;?W>mLMT8lNNB}8*Cfi**utlB9s8X8;h z-@)h{&GI^BvNH(SAgu*R3uG}Z&wx?;xSOF#^;)JSdzse(jCDZc84X6GQyCK*!)L+B zD)N&8n|!cvFae*!-A>-76SE4JS($=mw)q$7fcK&`g#N#@qNYZ}a|9uZvdEX!xnSME ziX(>wLc2Z)I~&=hgG(tG1t~;pNC*7VXgO;1EwbAFk|k>$xT)}jSrLbO7J!@YVsXF> zm21mm8E{FofRL+(tB2!m{Nq=n?5b33 zFIxk0ED+m)wL&Jm9t&(D80pInWoN)bsV8HO0#Ur-K2D{?o*IWtupr9BM}coKO5igG z@-mPQUFp@anG`mHE^VUye$z_Bfll2MY!HeR7*{@Ae}Z%fmlhaATzG)_5>^n_M%Y1C zlRZ7U21a&aE;#FuAmBE~{6!QF3&IFfo_Ycp`5-AsuV7_ki-#d4hsKnT&{}|aF`~z{ z>j)cb3A#b57J%VFURMwGC8YYJRH5p5>7wOP_VA=oNSB3Wkdg*JN~;~i--7!=I=~=W zLKsshJvkfsz$`4$~_oDI6L*}NRl62c$UGUhqJT~7$YxE~u>DGSq!3R%&U%y@;Z z(hx2|8d0>YeBbGM3MYOkJIq798mV73taSR9ZgERG4r#`mY=wu~=S<=B7u;9WF1h%Z zMhp9b4VGn!mJrgM{-{>@vxTRW!Uhr`{n4^Cggi*Ye`%rZxgQi~23PHXG*){4r-!=k z`QOZ)Y89k|<@_oaex3yCYaFCM`Sn539Kv|HQuM_iI;HviA}TN9$&3O|W;$IG=xqMu zP?Z-iNl*UNsRJ+nGzz0#0Ol9cNk3Onx4rV4NmKs?X%a76XfwO3g;In$?s&5x{bkzK zpCSFhn~Zjqp~JP`=%6ZbT@c0?vlW=_X-I|?bZm-quOOwRTV!GbMe`e2bh4>-A!S++ zhy{L5^8M5D=1*QO$Bprj4*RhwxSQE6K}eO`8iEuSe$lQlSFX45FW~+n-4E$6{-$!x z!{2F{xURIMBb1E_IZnHRUogn@amvEEAQ2`NvU&Ccu`TU zQ;r{*c7|NK&R&2vGR{fpG&MWL&4%Y6|oAmrOkyhb(WCDxXdy~9IU`IYo! zzfL*z71=@k-z#>)FI*98yw66oxp$rbEi5m4|uoeaF8R=OfvJUK=sv9l2$=)thzl}dJyW?Gyc~OtQ2HZ3RKts2 zn~o96fRECX<2uoZOzInk!ny41M=9!rPFdoUlyy?4YX1pOglNlDj{YP$p4N$*AfPee zCWFU%|APH6ce3ZT`&>95Y)0kFIHbR>gSuaSb46EAhI9~mDRdv2eZ|+G+NIu9$&d~s z7gWDQDuvf7OAlD3yxyYuf2bs9Uqs5ZQL$`lwBNVib#)%nQ9m?AWe0sPRJOqVY_37t z4P{~5A}4$`(d9T{(wwk^-c_)cU9-N~buQ7Xu{HKAQqOG|?c1BqfGrc*a*FD9xkWyK^DZ{n+Dj0JLw5(FA6!i9~ ztA{E9sdnT&;!&jhQJ&o(ZHp=Bk#1KHvyfs6Y25`+aW*9VSl@W|l@EqrxAgF^sa+gx zL0%fhEQ7CO;bX)gWc5ZCq(#gw65Woh7Si)*5AhRHT~SCaqN|#fk_W1a1H)v^^AIzU zqA6geYF(htTXJ6Jq3(l}hUYgac>gyG zQi^CW1fI8?25Sh$;-_G3ayz=nxq<~DPu9X_I#?hWIx8~A^3r;MtYA|?F~LS5=nL2v zFp7(qAk1vb(#)(_S$Ln33Pv7<&gW>%&Xk5fM|-Nw$|wXcDK^(b?2c3;5PzuFhCMYx$tUDO+4fRwh=;fdsUD<<{648-4Tb!+ z79+;*zeavlf*M#Fd%^tVU&u9cRLHjg7MEs$b(DLf zpnnUD#*RRMr@}5y3VD-9pU7JT*4I?h?4uKUS>P#p)@K$$8T>?Z23QNp`ATyOBxn#k z+&Q!1Vy)m8pKZbXP!Hmh{S#teG-gZ z#LDRAj40t|3g%>{XfPU`{AgRX5X@ix&CXM#o`N3 zn1HKb)F#G&m$_9v6gcGLwX?FPhcT;)LT4jELK6;05-4Ih6?)SHWFcZ@l#+6AqVn)$ z0gAC%Kd{GO6ku7NPFIvkU=%7@-oqc5yBC{cmNyBE-i9%D70lPfl(kwIv+OWk(Je3l zNMRxjbu}27mObuQw`3+ln1X42!I~7*&uD3UQeB}_ZG{x)O`L&0Ak_l-2ndI@idM#` z8i=CHTj7x4=P6pWW^2q^ep&7X)(J%sd6*^`2HpVQVxTFo6B6i@r3&y7wYs9H7T##O`i3X%-A`zr8 zx&vV3w&)tu`UR}L^gPhRCbJ#Cc%V!A)G3_K$H<}pgabvMMjX+eb%Ve2(M6*^1|~0i zRDqw$hZWJHL&5Tbt-Zn6@}h;34aT&gEjb^Iwj}6=la{*=f@D{m^nF+ta!40XgRv6~ zEuUJxCSy_kZeTRmsDD@^E(L2Lvz&O`fjaUH8cR}Z0m9-oP4NlNa9D4OA0Bp+jo{;< z4C-WjQU{Yg4-y>15%O}8qDTRA;mLV1Kh~tum>7)p2}Y}&nSWwuwysOdugXq<(E~D; z*WF(sKf-2g6BrGMF|RIszUAqe4p!LaMXP60efvxg601LRh60<;z&gR_OGwEZ zp3$uXjMKx^76qDN1&jhzg`TGQrCz&$$@`lzrx7Ltti3T?qi9Yk+zjz1SJ#WJT?FXw z2%une_QRB1(5SD2d6Ld>K!isAn@ro@rmdKIhyg1!<9;w^ILh8kSWN9&HXo{1D45Cx-KIot?efYLCbHXfn0 z>u+>yf~7pEzcES+k2~ET!;q_$3}OzBCy9u{9$;(_pjSjL16Uq5;84@phH=L3 zTmOL3Y%v>r17kN@YDF8z&UbJl^d197ZK|c5hZ^O|IAc^R>@Bx>860R3S*yge`l#_r ztB5x`wnmXt5YmEY3!+{E3qjamG2ApTIzr0VYgINFF1KmTEs)^h?J0ge%0dy;$3Wx3 z$fIB`ya-;;8Lm_Kskt)A4RouTY+9_i-HCcInhK`d z95C`$tVHCUr4?uocqkaQM?xuvhRmFtL?xy@c$e0y`SkP;*@d;3r2Ad{}HtbViv=%Ut zSgzl}*tC-S1rITqlS-}uV{3~}dSAi#GJmACNHax!m|8h8%^2m6j{Y5Ls!mOJ8fMxj zz*OhJni-vY;TIgknL3Dc=%g(e+p&pF1LMmXzsA2pCFNi6mmX2jIok3E>qx&j6Bi-H zA~E&&x{#r*_6Ae5q5fxs^_Bk$-z%hgBGp`xVSLgJYA?tzsZD;92S%31{9*Cfjx4HB z2v}1&qRc~zg>w7^RQ!*Z!r2yT^chvKdB!4MfsuvH<%bE%=c9~{J%fw@a7gskh5cv;~F;ujLjSjr@AE#-d@_XuXkQjgnS> zfiY9L#c4$Iai%fT-1Y?XW@E-}V-XmgZCJQ^1je>|_=Kw2crYmz${@k!EeE!~0M=h_ zfK1qMLctXmd6U3+bA2_cOJIJIv%iN}YoaMAyUoMzsU{j7JHjrTA!QMXBFi%{t~9o* z?vq#~V>Vj>#?C0%%2aQ_LTI6>x=+Snq}cu*>iI~?Appw*he^JdKZcZPjsb~oQ&=>{ zZzg7FROw)t;I1Cx2BdmpL@a!GPi1>ATEQ|YHjO>DWGo(x?iJWzuW2nn=={pEice<> z$eX&@4vgXq?olw(NHB^3cqE5`?gOLM#bV!gFt+;1xGiR|dMps9gVAQhdN>1Cc&V|U z$z7iP2qg}b8~_hzqp-MVu@T7|r*h{kqhntLiE@%L3Mj@&%$*QeR%$FafXTZOELZT; zdz;y&*4^-vBXh8B@*=!ylFKWm-yD;9$?LX*QEX(s^v=YLIsP~t&1Es2<>`N5^T7%i z_De7d3$p4ecO$tFT}8$tMSjb+wu@k_FFMWCn`a6$VlNnXE7-UEe1-he zFidrVM(hkmZQ?$S-&#vx)Fw76)H?%4W+~2&VAmHEZN_b(Lg<4`?CVh)<&=fSs1Vro z7^HNbw33fs#TGH8tmS{{p#>OQb~vtxW59Z%q#SruH;Bm_N5{p?iSQRKuyy?bM#~=R zoz$9x$bSb?S#60iYM`R2l+fPXP!p3zUwV_}h;Ipe8{@0Qw<$+>m;525qpmwg_@`VB zW0ny zQCN`vky`orI8Khm=2_l zhT%(!jK!BezeDP9oSe&$_;@ycBzOiPjeIi4=|Czt17GS`!k0cpkrbFCOBs?POYkLy zS8#bzr1Gn{+;}BYVQIV(sjzUP<}>jnT*tEssrx@UFN#WI)hI;;WBn+F1^r=dAiX!^ zOSlc+lK39Lmp;Ek(&Lbv`+Fosj`IAXND3X}@*-%EXW|6UAf$pPIiBKp8b}{P>fkKL z3qUG=k>e#Geg0pNT=oXJ5{*0$UuyUszVs=IG~x&N68?)XReX*wm4AgV$zOB+4oC{U z$Co~YR1R;n_=7sM=2)8N7ex}4;c`M! zpgfT3*>X7{B@GqvC;6T|kP6o3+=X*DApR2?;ty(|F~_Dr@|BiA{3o=cKR8mdHRt~e z8svi1a2sBMkVf8tb3#h`aP;N!-(e|~>xF!34>xhSUSA+hSqQI3Ncmwhhy5u*f^ZIEPiy|qq zn%7&)^ZzF#-`a$76lS&osed`~|BBSdcHU7@B*p)MoU(TDd_qd@=D3H;3CZV<%Ksia zOW;pgASjHU@rvpOYVRbkcZ$~|q~vMN|0kp(XLvb6YVRD7X8Hn`6H@Xb$4eY9<9|i~ zu^=E(fRwz#IiWT9BhLT-N7nyuJFq~1!@zTQ!5;HXrPfC;u(Zg@G!?C9FOvRLP{Rz@)KNM6si76E+?c_ zbb<5Vph0%NYbZcvZr~3x;XNQVbf1L(3sSiUC`T4~#LNEJ-ydy7BF zBp-PJLMrfub3*FqE9Zp7|Ks?L%Znnlr$i%^WloL#gd{31$6reD0)*7C1?NSPmT4)- z3Cr?wvdMN!^= z`tb@uyg*T;hJqn?0#4!iMUgs~%H@Ql@O&VxswF@xU^dVHEzEgZLT z`7R)JxEn|xLNfJ!Ac+of`Tq-2e@9SW-hYlFK@FV*QpRcC(C?7)b9p`?CC}pzQtSek z6VjRWHkapdyu~)(`Gl0Lia$tRjmrsXm2}{8A0R2#k>?Xq z`A$IE6S@Pt;l3oSE_1vFByDeSyu~q(<6R(?f57>_93OLh zYL3uH1ztcv9lYcj`9O*u?>YYnBzuvNI#dFwycrN#LUACqQ-bGPa=A6xL<;x4YIpAEoX7Y4?z#8={%k+u z^;yrg_WS)_!(Mx^+8;^yg#tQ^b9qn{up*vT!P9EEYM@IG6!{Sx=zt;v1~@;8t0|su zj;D{~=@WSRB%Zd#)2H#Y1DG1HIq_a_EN_@W%@T;pq@u!$48FC|qMe zQQ%iV;U8HN{6aNN!8H{WKMde@N=}u5I)_ZXs1VsUU#B~@HjX$za@BulTz;zlFZAg)Ud7LkTq5!|+ zx&(?0{s2WAQk1`f^ItgsPm27lqw?s~_h+*FqsRc^_vHDX73GuT`AAWk0u1ciTO0(g2at|GXKfuc$t1Vw=y0%ZhM z0Yw{96c~DIG2+HJM~cduP(%A80~UD3e}|$PTH+2)fTFZDo<52DL5c!9Mg6<|(T6_; z?ePLg(MK0NjTA+E7EhBZI?4Os94R`(gy8A_q$r>;$Vc|VQTrnhiGwIyFM*;BDe8(C zP*g4s&%c7_lPb!O$MX|#O~f?`FHfo{(7-G_11U0)1BwPq0Vs;_CZ7LaDJoZpmqUuu zMW6_k;^{J!fDI|?@&|v?fxkZ>$CY@&D!d?4#2@1P5za{!p*r}5TId;`j})bwK~W$r zI7f>33q1Wtq5nw%dRp)v3LwXWctKJ{28M8s6ge2i)1->{2yj%>aXgkAGPJC{j7RAX1c; z#|x_9oK#UhdYd`gkRpRxpr{4(K~cT|u7;qlhnGW&++D-lcFDMFR7buEc02Ey=NPwcir15-NJYOD9E8%GsT-9*Z0HsAUt3G@{ z8&Wh{O+Zl%PJ$wbcA&`NX;30)ASenb2oyOE2SxiugQCCoq=BLhDcV016qU=v(>Fko zy#mnRGduc#4BiAqt$qhDPzH+5zSW?}&|^@vAw`a!gCfJPK+*oMK~doEK+*Iw2Z~y7 z6%=(90gNG~0!8JiL4S{b^Z@}HP_)AqP_+HOQB)&Ve82w_MGwBY>A*j7yaV6yzfx4Q zy-;o!r~zJ{R8as%I7f7f3o;4vtOfCat-sUl>DbEK%;DLjo7Ikv~s zNKw86o+eeq9dV8n`8|WaVH#z)fTF%}!wZlq%6G^4f2Amp^LRO=Xg^OpjT8-1KRk^T zl@IiX52#=Op7DR8sQll+gJ3_j>m~Tb44MIoDw2cX|DtHWT;QnY*Fhm2NOl7UH}M^i zq5{RBBA~sX$l!ZWG}?zik)dH+M{pelMK$__r$2+D4JoSm46X~H$j&k-1seZ9e}8~K zFyTsoq51nT0Y!nJ?<_%v>2bah6m3XRIc8k9;v6aB9C#Wj3V0i?+i{Nc_njRld_WGk zL6O6qpvb^3oD1N5FV6SjX>m|wct4&#h^rK?hjEn$g(-kc9TfS|1V#3BK!2bAb>Rat zqz8%uFvQbFps1iJo;JhN$3an(+TiMd=cDg>K^s!!$Qe%~MfT5tqW#=KQ9!=*(Eh04 zMZ6$VRL~#S08q3;7@m(5<%i>Gq-g(0oJZjtDY_O;!}Bxn{7gI_DXLg5J@h}CO78$b zgW?`2nt~sKqM5J>FZdi3IeH0-w*RCkur|m?+K!h)iqfw@(a|vkitLPl!f+#-4#W%0 zfTE35(T=mgw}290`a?TXfTF-QfugQr#+4NmZAcMk2SpX)1Vt^#3yK^HfuilN2LAnk zATR!dT3`?SpqLK84|04E*Z<}yn2N5c=&EAWHL{dcb6 zB9LQkjDg_;O)bQ$+=<<{>f8vj;q{ad;9 zZ{^m%m0SN-ZlM)i=!yBim0N}ASv+h=(W&y^%B_DZxBji%`nPfm-B`f(Z{^m%m0M^@ z7dkckTe6t`|?f^;izTxt~C`w&~CNIk5Si7knzTCW6UnJ=tr!=2ELnQ z+rHeRoHtEh%X^{u7QH9vuU#r^;t9bN>jkrcH)prI`hVBZzoj~CM;H0nO6tCpL)9+H z>R3~aQ_Smfr!!Nfs19w6x$__($jL^Yx!J|)p1@J}I@JuP=ERk^1}8|&;uo>M&sdaU z+9S5p{*QX~QaN^g3n44&RC?Ok-#qOs`^59H@&pqHRZ@&~8b(8GfA%9L@BXA;OXl@p zj&COj$A5KbW_w-DY{UHT64bvKZ+_W-F1?le>)21; zdv2dX14P5aI!VlKz~+$IaWEU0xyh8PPa!_CwK49U+ZT#+gM)inQ|KI7ej3Cten=W` zYRmt%`R22h*_F7mZ4Bppw+vgK?bj~a6LvY9R^{bL@fe9&v?%}YMrlZ}es})X`G~z~ z-#VXB?f$;$(p0$q3rk1W56^s7*w<#Bv^mF$O@n~#&knlfW9xAJCo zb&u|8;WV&X+H&SgT?(hK+X`rwxZZ)Kvn{VS$+$doB+3X(YH!CH}7??>QA_!0Qw z#e5zC5O@q=00DkX@G*d11Y#cp*p2le5LE+5z(ca$nfmK&SLV4BW~i=530#yX=ZVmu zyI1ghLy@`7oRgqysrBBU3_k2Nl>eF2mK(H&8A{_CGSErZ)qwq#&k-gXFlHA)_8g3MPGvK3=Ragx&RWP_yEp)8A>p~8@*pUFb)ci?XZgM*YN|O-Pou}A# zVzIR_ZX+nxCAk5s0P3?0;*2{?8oBKd|p@w zK&KXf1eW&{fLT2N%Q^suupbD}HUKbw3P1`gssm7kfG27c8LaLZ0EcG)_!|MpVs4E9 z*c${%4VhA=N;=Dv}mAA|yPpC-hR_coso zT9nuC*v4&Kb|qHkhSE)@ce3*dDVJ(=4(XHUVzJL*(3Di3x!=PI_7R7el2 zqb7$z^8&){rXfE5Q2 zGZ4u)KpKG%oG~H|RDB!)e^hlBGK`rCillY}@nizxN`}=VqVX08KQj^_$4RS= zR(gEcq%n(1F2_y_hr_}0^%cDXVthp#0<1Kj%zR_a-0&@aIx8#sT~xf@n;$PDgg)`u znMj`164@&5@$1wIX4wx%$r$+7@h7$GzP|J9k}m&-?=%zh&(<||n7Y+4eBLj=QMz_q z{VRt-X2CFf&w<*p?vkWrKEjCyw%0GZosEupRL=6I{X#;QxGj9VR`2j%53jopB4`g&40ZU{w79*e%sUIPDnxuU) z&+QYhI^{$}RVv@PdUA7)wMb&O1?RH9YY%ljT>{;JT1tA)D)rc-C~>`<#2AllZ_fNM ze8J+FoM>J)L`@R>6^!^A%xVmQS>}M}S_?;$32yI{gsh#ZLXC;-M@0BM*(4}dBF+J2`SC{A6{(-tcqvmCad zkiSwX*}cM*$fj6g9(GhlQ!gTJA)ekY?+h=0#Ul;IAMD`{N65#IsOm4Alub4NB`Z`5w zm?asrFn0%X6$PzBB#~&hzk@n&tb{h zZcEbV_eiTOb~;&4(axTs_l)e!6FsV*PDOIZ7ll<)xF$1pbPJ35biT|mJ#@v4eW|Bo z+9Eit!-cWPs@j=y?}?_{ujTff6T&iQ;0jdr12p9WQoC+Sbsl7sCHq(+48_Zp&h$zh z5O=;9S$2L)QHlEGV6v7U$dv&>hi#SfZYiCTPgqC>|uqmoCN@7WnuodZU}n9eLT zWfs^aRAP!Bp&4ku!1xllOR3jxljt|Z^zF&O*D;T;3a57n{)~OSdEY#JoX6FE_P&VA zkNY+{99y3v3lB0_O!%~Uf4cTT;Vq%90#T6#l_bqjjm;smRbUn~9)kEEk;Y$ncsjo3 z-M0EK)+bfhth)+IMsCDiU7|T8q#5i)dv^Jd(%oiH)*{Afwgcftr?>DFcR#FDqZy^E zd7nl;abV$AE@t@^;x9pVYe?;Wnd?uTsJ50jaV-lEqPE*ZrAINCQqQ(U>2gWNDI>d6 z7RKgFJT~!El6#FRw}&ylp4YRXuX`;0eCM}Q%e(4gzGIAYVApaO+NBmN8ioqA%s~Yh zM*!4e<|6>S=K<6p(16j60uWdL;4%uKG?IpL=Yhc~rVXtOQ#=Z+q8Ig+s`o9Q{WTf? zN%HnAOUU7u2RXv@4QGp*Bdz&Q3VN~=h8!B|UzLt?Noc#xnFX291YvCpa4)u;{;^`K z+N8_-gxwsHT+4cta`#zpZ?&8>rj<$kAc9fGF&p{?v1_%;BQL`|Xa#6Ld!7QW3Up8+PnEkNJOthanH1tF>J5I4jikEv0)hf^y_Z z_oUs}iJ!wAveW~-8rC}L1+Gn>wgo#|U0&!`^NoHNIzE4H&xZ)hr<<7eN{>9;MG{^s z88+Dg=OxKSXioo6(3~$w13ta4{#;KA)wwB_KI2YS0zaicTSd(T`%7=?b3U$p$5i|S z#-_wxJkQ!8J+QuD-*=vaa-*GuI>+Mh<1T+$+p;ihU=ey&_%rld8|L$wU`lAmI*`1= z1jj*MW5FQi9i%?nhnl18dbJtPSm%7T`%p6Kp61|R866Y##zXY%*r#`)HeO|4Uf&c^ zGb}uCqej2ysqv0enKtjM=|4;6$DIzQCcOad#Kb1Rd>5&C1_tNc*gG2IECP?ez3yJ2 zXq5k|ct|t;(~j3`JsP9NyY3eJD*1fZhflejKoLE8RP2RhZCy$i?*<_wi@Q_3J|-lM z_XZmR^Mr0pY7*ov7LTL{n?TZwDNcd(VQC;()e1E4>J&7?J4|yLfWuD!CDQ-~upbDp z{{mn+1KcQMxYk~&aVJIV~$?| zM6Cm8Ltp|U&Jj$LCCQqv(1PCkN2hDZoV*;ON8{En*UF#lxxq9znrt2L>+lhz%jLW|ZJZb&+r+aEY{?w)cLzc%RaE>uFA=Egu4M-YKrn zD;KsYmL)z;kNYW*z2EJuY#EjKgJaJ`xDXLO+gV-Gsc9huS(c{2v5T|Saz-KNU7tKl*V4}-yLMvv zloGpt?bdSQ(F^o_&x-bcka+v&V(5?Izpqk9_9<_MznhLPeqaBQ@SW$b@j)$V)^9F+ zysA?#G({SRYDbK@3&fhFxBWB>r=XA@akZ%MH5qa~Tvf99$k(OZ!|{q?=)Z(R>(HW? zIiq*7|J^9>byZ&6p0@7fZoPk8sQq5$z}-jJm$w8S>$>JXDty9_*WOq)9+m*XCE!`F%>t_evEF1El`6#GinF zks99T*ryZbnX$7?Q+DH&f9~tU{`+_txvE#Rr~D?H#LOzK0=)?DT$@h$C&_i%JKflH zp3mW)H2bH(%8gepGwAmF`2QXxf0pL1k{T8ouQfmTF7iTRj-8ojfBSq|e}RxfJI|>J zUa{@%HKl&8o`N+WGn9NUTn^DuQ`@MzJ5x|}kGhZRqvzMhYBGK%;C9hs=`~WjDFG6` z0;dDV!dq;04?X6X;{35Xw3Co>JtaL%H===6hrcOOg(EEQ?w3baTZA^xuC~2kD5oS+ z^Q^p8@wp#SU-IYW;FM%RV04|-uwhBCT(;UVj>$Dsk)5w2uiduQe;}b4y#4usxKGl> zlBG-s^y`$oZi>G24x;l4tgX9de#d{yhdT`I^Y+)~>Xf+Een*VIYXv_4-6*wFDrKhw zgZ=BxVgl)}@ck5IJTDsEJUV+?_QN38ptPjm`Rj7x-sKQl2NMbw_V!b0Tce(MgJw4GVQv-WO_YH+v_0 zk975g`X2jW%}W+z9*jQ}FOI%0e&bVry4t|vN_6t~h`k=E40JrgU zFgJPr1VTf=>OnDodUAFwd=&^C0ps`uWh6I18UJ5EHW0Aqh>Rm5jLI+)u+CK=sSH3Q z)_`mxU?BrQG#G)zBEm$#`qzLgBO<#FWD5b?gUS?c1d@yhD*+o`2V%B~oH1DyZh6@V z$qDE#elwKNApjr}uyg{ti$`P?k!^(JNdOK^0LBKu2qys(9|R-p%;bzZXZ2_8S-7$f zVQz-5+*=m1_Me(~^_^js^{76o6sOu6=+7%*EUE?c0nR3DKmps$YjTb!4G?R*bm z2(Uo$@b?fHKeQ4ey+8tkKeooD6Tc4dnNQo)tNvo^veRuG^6h+OT%oEwY-HiGs?b&T zm~%(=-uP~N=|BYr-GKE}gS#i@x-PBM-<*s5^Va!4H-x)M#|c}%Uu)3KiTbVIG(Fpe zX?Sl<<`3_qe!k?nH(n-xwjgEkQF_k}-cLmF`OX%F=*V4D-}iEPG~{6#dcMl6w>54u zVE(L7n?|S~K@gi`gXcApTj7LgO>cOUyE5`tcHCX#$cE0M^9B@jw=Lv1*{SHBsk?Mw zpN?E8kDY7BlY;LCj>#fbjghYo+__a!#vM^2bxA(J^Ds%v?8Wlf(PJPm8_2our7T&< zNtP!WUdrcf-V+K%t-Y_*_9ork{E}Ln(MX8=!6M_w)nM+ImX8;5D=v2I95od4jWOHW zmnHM;G27KYUw`nY8H7oj;YR>9Q~POCv#onC6>7a?O}fPrIeLcT${sm$G0OXI8Yx1x zE(ZIlbP)G5Nv8&8XjM*J^XY2;YDZL^XO?MrD%rq|#j?TmM_JBHp+|^ch0p7&!F0aU zw(bWLb%v$+xmJ1?rERh|IhxAxM6R-udmdE1mhXP3+Ed(DOOOhsE=t=YH%k92R-tF%kNjkG~rw@zV((_K8hSIU_wpW!2Kibw<9P!4s-I?!kG> zCw}HC?6}^`!cDn&k)V|Dg;GQRC5 zqm3pGpQG3Hmhp)0xxr+@Ade5oE#!; zhOmp8M%SM*X@1jQV_r?XS1qxR-#Kk!nBKcHV{Egdq)aDP=-BP_l{nn~R44BI9Zdte z-7Fj97mjXfP<(TJx2M2KY?XtYJ@7~QIL9uFIgP7bV__9eCws%M(u?m2ZJ@Aw%DR$n zpvFqfz7_t-j!%BwHD8F1-e9N3tNNMm=3BNb`0MQBKU}mx5}p)kc)RptWIpGeSE4UA za7(<#Z4$&{;;?_FQRb!m(Bg&jw+pPwDYlrZR6~|bH@D{CqHQ~ZMxPb=I#1^ z=^#t`Ms@oIlbI*u0hhnG5Jm0Q+cq>j5HkrU8bze&DV#+lIR}QL0-+?Iy+9U6`|W9#4#-YB`#-sb%YBSFMTJpqacLiwnVTBT7Z< zYccya)wd6I&Xa^EOB!B!=0F7&A~IS@ee%$anfiiki?dR?vawfRFAK1ZWOZL~-d;ib zu5pk!7%fD9np|nXla)N|`VQMNNhtVicz*fl7WXuWU(~<&+ zA^|I=0OHLBgpm@6G66eA2}FP!$P7%>I)A_L1|4>kGjH5K9%ie5Uw8X^U%;{Q?4>y& zD?ZQUR|(q-?jH)zJr*`;>Jdw@J}G0iL!aqfIs3+kIaJ@bpB^wNJZ^A(M~ynx#tqRJ ztH4C5ju{Z)V2RoRjyx;CktS)qi}Ym=>cw6wFaN|kFL}7SzE$wP9@ESgGo5JfMU&Sz z(svY9bo-gw@BSbsm@E1ItIp5`20EY2ova%U^3ZV9&u3!7Jm9De+5P(sJijYIALAFP z%E$6u?#t`xoj%_wY3)-TiUpXS=LL@+rg%FaMlLVdKQGhS$@V7ooJq#QMo#|Wk8d{# z4mze>{qdT!t`8ePc7>gxsdV7rc7~=(-3jMR=CVl9UD-YFI_AGo`(=skY;?#F_P?_+ zck9ersrTsSS?RmOFU^QTHOC7%C|Otb=V0wbjnVw{wTQ-2Svk9=RFeMJgHs-|tHBE` zBXI^i8Nh|X86eAuobm@^M8NL)11aPKvRVMdn1ChZ12N+VvX~FV6gu}F5ZYZpl5apu z{C*=iK7CT=?dI-1cJ*7iu@afg;L5Kl;suH8QC2lmk)NoF8j7Z#rd-J`(Oed0FMj4K zpmas6^YY<{Z*598>0Ob5R@5RVUt%S@$k}xoPTqb#v0=)FF54t0@JEL)#cTCJ@>S3N z^o6ZyJRQ4Z9_hYX&Z~=06Z<0lYLkX;5sjCLblH0L=Q~CjoK@R4kC4>cf`Hk)fOs8t zL%gbIAzn+;5ixx<j{Oft6vdV&{;%|D6)ybkS_-mU#=J8Hi?Tsj)lwo=y@eOQt`x$Hg3_G>)E`AAVjwx7h&K{9(yVlMxs&tgwEH=iVndh+0rgQz)O zWUTi3TdUI337Cr@w9G}3tMu8O9vN(to3_+cUmx<^;<{%zQSChE-K3m1K{5U;=fvvkX-D=5b=*lPmMJ$~+1ziTusiMVqcwv@Ydr4xW&T{OCedT))$} zCC<68$jO&Eqs3RlbrF5B)L&2b1Wfu0*p1o?o*tYAPmTnP+#ZOe5Rg;$K%C)n*Ad7# zBK}T5T;Sr?2}r6iM5EHWW+}p|oggZ@kfbH|py{|Z^}?WS@WXoT^0RlA=Z2ELe2H|nj$^n$Ddq_M)!x3MB@sVwxM8GLj*j92SY!(k@i#V`?#hU zzEh7)!mg(~9*&N=^uXb9mCrp!H^F6z5G_e^d8PG)_&M%-(nm^9Mm05WPpe7oJttfI zZckLm#m>)yN3j_Z=qDSs>>j6qqP?>7?2_HgVY-)jtHK|Drm#%gUF+?+LtOjaV;&t7 z8uBj20l|14t>;&zE)-c3kKFg+*j|<2p|DQ+M!-7Vd+1b;6-#JmJzi9Eh1H zkX1yy2$)s`5Lz)HB@sY;U|L3`3K4#2PaQwfTAq~Zt*Cfp(erREh`8DN+ZilRmX%*9 zFwp;@(P(Ae>t21U9UJI~O!qD}e_xg1iLwhx$0o9WZS~7^OJB!=&kSLf;&6WY_383n zZL>RV4H+zEg|+jHufm@hv)XJPJKkcDzPhk<;#{wrXN8C7HEXZWQNN58qj=b)^ucv3w@W@-!X!2!T)ZQCEQo2o=Iptqu9jbYo#rA-*t0KS*|`OmkJ^G;f*5! z3PB6iek~L~iM||<5wJ*S#wZHC5=>fehmqV!s~=Y4rJ-hDOy!=M zJibt{^TKiVig#trX%*5hKE3?rAD;9f%KtO_qwukg2AfN!*HfO}ihgy(uxVs|UU?C7 zIRMqBYNC0=uSxmErFJK=U*g0G$|&)KUv1`Kt*n z5gUE-ZGB~E7X1W*wi6cv1foi1s^$$neol|pN-tIxj4hixH*?ryoDvY8lgFa{^RfuF zPmk_V$)_e(PHz_U7HwNw(BsK>d*AQMm;Qa}{E30pKApWLXI2YB)2U@ewkO z+5xWe&1e|^9W>#j;feP?3G8#^>k(y(HZgtGUUFcD&5RiR`PbGWcS65NNzrlEllo?s zPlyM}BDL5@>1v}`m?sw>r9IVgb5~&*#uBQrHV99r=Dx#iE>#1n(&Q3fqi2D|)Zx6l zDhkhh-FWXbT}JAjiUCb!>hV}}T0176A513O;;sfKXU*0r2PkWOZ0zwKlRpYE;X}}zieFhCd?;moEzC+o{&mM)n*pnn zXABEzFZVqQof574I`F=rjzIp+?dJP-j*StkJk9(;TNYmRznT|eu-;JCZNWj(oYADw zeX;NK_111U*(WBU?!7}+K(J_Y#KJK?p_mWBoKG!|yqkLK?6NX%OO)*s+Og$mYVOuK zv7-$0T4Vey1GFmNI@mU011P)=hct|O2jtbQr@h>1J~clUS97A;w{pwl^q{jff0@NC z4ekEq?~%4QZ-|VT@oiJ*7*ii$RK2xFBPi2tfJkh=O%h%#X?X9;DcxmX8M_Kv*m-Jl zYA^K47gzADxqhPgd89aCASZeom5R7-(HJrBLlo~R$qR)M4>WJMpWAiy>6Fva#?$W% zqOn*>I0hGm;G*#grYMYV2&JH#@`VA!V{-^BBVa57{gz1TS}OX{aqW?-e1|q9P7jb1 z%W2vQis@QY6qep|F6L)-B`Vz)aWtD?4l60R`Xthl()X88Me;pMITOW#QJUkrl|fjR zG>o&a-@13wcYE;5S*>($*thy(%c&Ya0==$g1Kl=q*M^Lb+pb?%bDyd^hb_QwdAQ!Y9m90t;s3nUF59_69) z0V4i+Kr-O`iim?O5aDY;vf$eD8W46lATCKja^MM09FP`7lH-8n5wM3zK)mIFa3%w} z4p)|FF98K064#;m^06WdXue(q24bN3Zjv@%2b`!&)`VwQ_aqpbKONsVZ6(*#Du3`R)&~dTgh`a~_ zjse$_O5iE$3XofH33DCDI3luec}iXa0S5p{RR*GiE^15R@zDby8Y)2Yf#{%_{_jQ^ zm`TjvFh(59Y@M$Zi8*lp^UU|?n}mFQu9T_(o{`A+US20R?W5;VoSkkI-m|dgC>nO% z^KIjz@OVJt*-hIWys;S-829Yfa@pJWDq9rP`|O*27jedhuQSNV`)$)uqnHHMI$g!q z4(^L8yl$EgMgkd4vo2T;>L;+2&Anpu89Kr9(4|O%q5IJ|IC4%}`E83FCxlNmQWMLX z%6;k#AG~F_;_4A4@kqirT&U>wzS!zYjjEFJ#F;z{?naz#%~@@h;lsf zm8*G##h>fUJuMTM*NHAd?YZ%xIG%)XH^gN;(1To1jDE!p;cu{uCzVL17d zp?u0*{w?hC^VxQEcEN5jvIzWwy?xu=>mx~CK^amqg5SQsbi zx0^iO_aw!0`95DlKF2*eqo1GY9OvZyvZ?dT8Hfi2Z>a~J2_{T^liF>cylc(lr67%TmJQ) zz?=qswY!QJv)xPEHx*&-pBn4- zT4o*G*IXQJs1&2@SN`QfqcAq00|U!Ye{}8hVS}C*2U7LUSkBZ^Uw=MzH;7IA=5%oN zzR51x*IFZiOn1kUW2g2uByQ?kj?~#>zmogRc|EC4Gm&DMbT&s{^!j(Bq}=9pEj2`j zb?@R-+UJ$=Rli@WC+2sjj95R9_$6#ceuZI2?(T=Dj}eo21Jaw`M|%v1itzK$yfVaI z?mycsdOCG87OM*bOJWa9%dfC%F?5>KgLZHc1JHq$i=xvUfIxA{4fe6=^ezG%;b`W_TfRJX6iP-z76WU*&)-(eYq~>1j*!QS1KegOS1MT%nSwNl}j^1{;#_x=F+P$`JW}-=m=x za%1E1h97rJ1*gcI*Rmw6Kh59izu*}8-cR+}xps&1#G@wpNg3ffIj5U%Rr%~TJ+-v4 zZBL@13k@x%V*rnPjZR64JWIE~|FqJJ+gb4H+{vNNOxN?il!1?uc`4 z=m^z3&>o^~6Ju#?F0JQ94YM<;_Eh=}TP(MSYbqYF8C@ z^uFxh(X+)pq^j^-_FRj?&eIc;NBVLi(FpxJ4Zg$N1Rz`oBN#&pJ!YCBHecnBH97@O zxO25_$x!i4cUqqk>4II{V{kU5#f7%7ue`6_!! zZ#)J_E6v2dmA&r-v!LN^59v$V>n{@x75D!VuX*rPqUgegj=E<(?DP*~Ug#3_7nU#N z>FIP9+n=G=d8fECm1*z6bc2dH9b-HSW2muK`1|WcQTN$w+CZ|)TdhCj9=#C!U7P<= z3%9>pLZzGP=CGe?2c9&Ze&4@H(XG;V{<7AU?-_%YPP-rFWHVet{qVQeA4tP`XrVTD<_Fs@u z&U2kDO1ly_p_Gi(KzP_GbUQdiYM4bm#M@-_$--=eWVyY8S&5%+M{&PyvadnqZVs|H zHv*<-MtxXZUqxju>Atvgc)j`Q&IgN4F3P))Q`qg@uu*axb1{a_zCqKQQ!6S?@D9{HL~Ri_~7I zI@)4R!6m^f%% zKPZv@zo`k*cJX==taY|ZFs0zFcaCbB&MxP3JIT0CZ&e#uuG~Ac>+poL`tyeS+x3at z55x|9i|~H!PrqkCZ&!x)GxDo@i^f?SH8Gev*#jw`=q-4O(nryLm7BUPnpk~8lEP- z`Q9K8^(%Z;;|FRlTfA4GmT2|Zc`W9NN717ncV;S{<{p>6CLm2bcO+1S_I{g~$r}Gd zUU}2+wA9r}PwjuDabW`xo=zDnugMz*&O+Mz@#{}d$=>xJ?Vs6wTkt&H8*dGxjc@ye zj^E8l5D-`9+I|)jmo*AXwd;N)Jo5bOsm&D;w6u<-fAN}ulkH{bl~i-+r?$(`Pha46 zAR36qF(CfYK<40f0Fh-xgyE{4d;uOjp~rTG7C>~a0$GHU|5YGn$AM6}0a+qohHgM; zErG0}GC$yEBpyf=A|>%ae!`
x{4u}lE63J;OdUz6Fb&|bbk)?qI{AT5Yw`M}U3 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 diff --git a/playground/nextjs-app-router/components/demo/Transaction.tsx b/playground/nextjs-app-router/components/demo/Transaction.tsx index 93862cd569..42de2b1f1a 100644 --- a/playground/nextjs-app-router/components/demo/Transaction.tsx +++ b/playground/nextjs-app-router/components/demo/Transaction.tsx @@ -1,4 +1,8 @@ -import { clickCalls, clickContracts } from '@/lib/transactions'; +import { + clickCalls, + clickContracts, + heterogeneousClickCalls, +} from '@/lib/transactions'; import type { Call } from '@/onchainkit/esm/transaction/types'; import type { LifecycleStatus } from '@/onchainkit/src/transaction'; import { TransactionTypes } from '@/types/onchainkit'; @@ -66,6 +70,12 @@ function TransactionDemo() { case TransactionTypes.Contracts: console.log('Playground.Transaction.contracts:', contracts); break; + case TransactionTypes.ContractsAndCalls: + console.log( + 'Playground.Transaction.contractsAndCalls:', + heterogeneousClickCalls, + ); + break; default: console.log(`Playground.Transaction.${transactionType}`); break; @@ -75,31 +85,21 @@ function TransactionDemo() { const transactions = useMemo(() => { switch (transactionType) { case TransactionTypes.Calls: - return { - calls, - contracts: undefined, - }; + return calls; case TransactionTypes.Contracts: - return { - calls: undefined, - contracts, - }; + return contracts; case TransactionTypes.CallsPromise: - return { - calls: promiseCalls, - contracts: undefined, - }; + return promiseCalls; case TransactionTypes.ContractsPromise: - return { - contracts: promiseContracts, - calls: undefined, - }; + return promiseContracts; case TransactionTypes.CallsCallback: - return { calls: callsCallback, contracts: undefined }; + return callsCallback; case TransactionTypes.ContractsCallback: - return { calls: undefined, contracts: contractsCallback }; + return contractsCallback; + case TransactionTypes.ContractsAndCalls: + return heterogeneousClickCalls; default: - return { calls, contracts: undefined }; + return calls; } }, [ calls, @@ -115,9 +115,9 @@ function TransactionDemo() {

{ console.log('Playground.Transaction.chainId:', chainId); }, [chainId]); - const handleOnStatus = useCallback((status) => { + const handleOnStatus = useCallback((status: LifecycleStatus) => { console.log('Playground.Transaction.onStatus:', status); }, []); @@ -32,7 +35,7 @@ export default function TransactionDefaultDemo() { chainId={chainId ?? 84532} // something breaks if we don't have default network? {...(transactionType === TransactionTypes.Calls ? { calls } - : { contracts })} + : { calls: contracts })} capabilities={capabilities} onStatus={handleOnStatus} disabled={!chainId && !transactionType} diff --git a/playground/nextjs-app-router/components/form/transaction-options.tsx b/playground/nextjs-app-router/components/form/transaction-options.tsx index 3342f9d614..6459721cdc 100644 --- a/playground/nextjs-app-router/components/form/transaction-options.tsx +++ b/playground/nextjs-app-router/components/form/transaction-options.tsx @@ -40,6 +40,9 @@ export function TransactionOptions() { Contracts Callback + + Contracts and Calls +
diff --git a/playground/nextjs-app-router/lib/transactions.ts b/playground/nextjs-app-router/lib/transactions.ts index 999401e9f8..f88db60483 100644 --- a/playground/nextjs-app-router/lib/transactions.ts +++ b/playground/nextjs-app-router/lib/transactions.ts @@ -35,3 +35,26 @@ export const clickCalls = [ to: deployedContracts[85432].click, }, ]; + +export const heterogeneousClickCalls = [ + { + data: encodeFunctionData({ + abi: clickAbi, + functionName: 'click', + args: [], + }), + to: deployedContracts[85432].click, + }, + { + address: deployedContracts[85432].click, + abi: clickAbi, + functionName: 'click', + args: [], + }, + { + address: deployedContracts[85432].click, + abi: clickAbi, + functionName: 'click', + args: [], + }, +]; diff --git a/playground/nextjs-app-router/package.json b/playground/nextjs-app-router/package.json index 595d34e213..59bac9eb42 100644 --- a/playground/nextjs-app-router/package.json +++ b/playground/nextjs-app-router/package.json @@ -35,13 +35,12 @@ "graphql-request": "^6.1.0", "lucide-react": "^0.416.0", "next": "^14.2.5", - "permissionless": "^0.1.29", "react": "^18", "react-dom": "^18", "tailwind-merge": "^2.4.0", "tailwindcss-animate": "^1.0.7", - "viem": "^2.17.4", - "wagmi": "^2.11.0" + "viem": "^2.21.33", + "wagmi": "^2.12.24" }, "devDependencies": { "@types/node": "^20", diff --git a/playground/nextjs-app-router/types/onchainkit.ts b/playground/nextjs-app-router/types/onchainkit.ts index a11530e0dc..93471f8cbf 100644 --- a/playground/nextjs-app-router/types/onchainkit.ts +++ b/playground/nextjs-app-router/types/onchainkit.ts @@ -22,6 +22,7 @@ export enum TransactionTypes { ContractsPromise = 'contractsPromise', CallsCallback = 'callsCallback', ContractsCallback = 'contractsCallback', + ContractsAndCalls = 'contractsAndCalls', } export type Paymaster = { diff --git a/src/transaction/components/TransactionDefault.tsx b/src/transaction/components/TransactionDefault.tsx index fa234b6145..230fbe82d7 100644 --- a/src/transaction/components/TransactionDefault.tsx +++ b/src/transaction/components/TransactionDefault.tsx @@ -11,7 +11,6 @@ export function TransactionDefault({ capabilities, chainId, className, - contracts, disabled, onError, onStatus, @@ -23,7 +22,6 @@ export function TransactionDefault({ capabilities={capabilities} chainId={chainId} className={className} - contracts={contracts} onError={onError} onStatus={onStatus} onSuccess={onSuccess} diff --git a/src/transaction/components/TransactionProvider.test.tsx b/src/transaction/components/TransactionProvider.test.tsx index db9a15b987..a3ad83884f 100644 --- a/src/transaction/components/TransactionProvider.test.tsx +++ b/src/transaction/components/TransactionProvider.test.tsx @@ -12,8 +12,6 @@ import { useCallsStatus } from '../hooks/useCallsStatus'; import { useSendCall } from '../hooks/useSendCall'; import { useSendCalls } from '../hooks/useSendCalls'; import { useSendWalletTransactions } from '../hooks/useSendWalletTransactions'; -import { useWriteContract } from '../hooks/useWriteContract'; -import { useWriteContracts } from '../hooks/useWriteContracts'; import { TransactionProvider, useTransactionContext, @@ -35,15 +33,6 @@ vi.mock('../hooks/useCallsStatus', () => ({ useCallsStatus: vi.fn(), })); -vi.mock('../hooks/useWriteContract', () => ({ - useWriteContract: vi.fn(), -})); - -vi.mock('../hooks/useWriteContracts', () => ({ - useWriteContracts: vi.fn(), - genericErrorMessage: 'Something went wrong. Please try again.', -})); - vi.mock('../hooks/useSendCall', () => ({ useSendCall: vi.fn(), })); @@ -142,15 +131,6 @@ describe('TransactionProvider', () => { transactionHash: null, status: 'idle', }); - (useWriteContract as ReturnType).mockReturnValue({ - status: 'idle', - writeContract: vi.fn(), - data: null, - }); - (useWriteContracts as ReturnType).mockReturnValue({ - status: 'idle', - writeContractsAsync: vi.fn(), - }); (useSendCall as ReturnType).mockReturnValue({ status: 'idle', sendCallAsync: vi.fn(), @@ -171,7 +151,7 @@ describe('TransactionProvider', () => { it('should emit onError when setLifecycleStatus is called with error', async () => { const onErrorMock = vi.fn(); render( - + , ); @@ -183,7 +163,7 @@ describe('TransactionProvider', () => { it('should emit onStatus when setLifecycleStatus is called with transactionLegacyExecuted', async () => { const onStatusMock = vi.fn(); render( - + , ); @@ -202,7 +182,7 @@ describe('TransactionProvider', () => { it('should emit onStatus when setLifecycleStatus is called', async () => { const onStatusMock = vi.fn(); render( - + , ); @@ -221,7 +201,7 @@ describe('TransactionProvider', () => { }); render( @@ -244,7 +224,7 @@ describe('TransactionProvider', () => { ); render( { const onErrorMock = vi.fn(); const contracts = () => Promise.reject(new Error('error')); render( - + , ); @@ -301,7 +281,7 @@ describe('TransactionProvider', () => { ); render( { it('should set setLifecycleStatus to transactionPending when writeContractsAsync is pending', async () => { const writeContractsAsyncMock = vi.fn(); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'pending', writeContractsAsync: writeContractsAsyncMock, }); @@ -336,7 +316,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -352,12 +332,12 @@ describe('TransactionProvider', () => { it('should set setLifecycleStatus to transactionPending when writeContractAsync is pending', async () => { const writeContractsAsyncMock = vi.fn(); - (useWriteContract as ReturnType).mockReturnValue({ + (useSendCall as ReturnType).mockReturnValue({ status: 'pending', writeContractsAsync: writeContractsAsyncMock, }); render( - + , ); @@ -382,7 +362,7 @@ describe('TransactionProvider', () => { sendWalletTransactionsMock, ); render( - + , ); @@ -397,7 +377,7 @@ describe('TransactionProvider', () => { const writeContractsAsyncMock = vi .fn() .mockRejectedValue(new Error('Test error')); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: writeContractsAsyncMock, }); @@ -407,7 +387,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -429,7 +409,7 @@ describe('TransactionProvider', () => { switchChainAsync: switchChainAsyncMock, }); render( - + , ); @@ -441,12 +421,12 @@ describe('TransactionProvider', () => { }); it('should display toast on error', async () => { - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: vi.fn().mockRejectedValue(new Error('Test error')), }); render( - + , ); @@ -465,7 +445,7 @@ describe('TransactionProvider', () => { const sendWalletTransactionsMock = vi.fn().mockRejectedValue({ cause: { name: 'UserRejectedRequestError' }, }); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: writeContractsAsyncMock, }); @@ -478,7 +458,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -497,7 +477,7 @@ describe('TransactionProvider', () => { }); (useAccount as ReturnType).mockReturnValue({ chainId: 1 }); render( - + , ); @@ -511,7 +491,7 @@ describe('TransactionProvider', () => { it('should set transactions based on contracts', async () => { const contracts = [{ address: '0x123', method: 'method' }]; render( - + , ); @@ -534,7 +514,7 @@ describe('TransactionProvider', () => { }); }); - it('should throw an error when neither contracts nor calls are provided', async () => { + it('should throw an error when calls are not provided', async () => { const restore = silenceError(); expect(() => { render( @@ -543,7 +523,7 @@ describe('TransactionProvider', () => { , ); }).toThrowError( - 'Transaction: One of contracts or calls must be provided as a prop to the Transaction component.', + 'Transaction: calls or contracts must be provided as a prop to the Transaction component.', ); restore(); }); @@ -576,12 +556,12 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); const mockWriteContractsAsync = vi.fn().mockResolvedValue({}); - (useWriteContracts as Mock).mockReturnValue({ + (useSendCalls as Mock).mockReturnValue({ status: 'success', writeContractsAsync: mockWriteContractsAsync, }); render( - + , ); diff --git a/src/transaction/components/TransactionProvider.tsx b/src/transaction/components/TransactionProvider.tsx index b7a5c26b90..bc5e744e0b 100644 --- a/src/transaction/components/TransactionProvider.tsx +++ b/src/transaction/components/TransactionProvider.tsx @@ -18,17 +18,11 @@ import { Capabilities } from '../../constants'; import { useCapabilitiesSafe } from '../../internal/hooks/useCapabilitiesSafe'; import { useValue } from '../../internal/hooks/useValue'; import { useOnchainKit } from '../../useOnchainKit'; -import { - GENERIC_ERROR_MESSAGE, - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; +import { GENERIC_ERROR_MESSAGE } from '../constants'; import { useCallsStatus } from '../hooks/useCallsStatus'; import { useSendCall } from '../hooks/useSendCall'; import { useSendCalls } from '../hooks/useSendCalls'; import { useSendWalletTransactions } from '../hooks/useSendWalletTransactions'; -import { useWriteContract } from '../hooks/useWriteContract'; -import { useWriteContracts } from '../hooks/useWriteContracts'; import type { LifecycleStatus, TransactionContextType, @@ -82,9 +76,6 @@ export function TransactionProvider({ >(); const [transactionHashList, setTransactionHashList] = useState([]); const transactions = calls || contracts; - const transactionType = calls - ? TRANSACTION_TYPE_CALLS - : TRANSACTION_TYPE_CONTRACTS; // Retrieve wallet capabilities const walletCapabilities = useCapabilitiesSafe({ @@ -96,72 +87,42 @@ export function TransactionProvider({ // Validate `calls` and `contracts` props if (!contracts && !calls) { throw new Error( - 'Transaction: One of contracts or calls must be provided as a prop to the Transaction component.', + 'Transaction: calls or contracts must be provided as a prop to the Transaction component.', ); } + + // Validate `calls` and `contracts` props if (calls && contracts) { throw new Error( 'Transaction: Only one of contracts or calls can be provided as a prop to the Transaction component.', ); } - // useWriteContracts or useWriteContract - // Used for contract calls with an ABI and functions. - const { status: statusWriteContracts, writeContractsAsync } = - useWriteContracts({ - setLifecycleStatus, - setTransactionId, - }); - const { - status: statusWriteContract, - writeContractAsync, - data: writeContractTransactionHash, - } = useWriteContract({ - setLifecycleStatus, - transactionHashList, - }); // useSendCalls or useSendCall // Used for contract calls with raw calldata. const { status: statusSendCalls, sendCallsAsync } = useSendCalls({ setLifecycleStatus, setTransactionId, }); + const { status: statusSendCall, sendCallAsync, - data: sendCallTransactionHash, + data: singleTransactionHash, } = useSendCall({ setLifecycleStatus, transactionHashList, }); // Transaction Status - // For batched, use statusSendCalls or statusWriteContracts - // For single, use statusSendCall or statusWriteContract + // For batched, use statusSendCalls + // For single, use statusSendCall const transactionStatus = useMemo(() => { - const transactionStatuses = walletCapabilities[Capabilities.AtomicBatch] - ?.supported - ? { - [TRANSACTION_TYPE_CALLS]: statusSendCalls, - [TRANSACTION_TYPE_CONTRACTS]: statusWriteContracts, - } - : { - [TRANSACTION_TYPE_CALLS]: statusSendCall, - [TRANSACTION_TYPE_CONTRACTS]: statusWriteContract, - }; - return transactionStatuses[transactionType]; - }, [ - statusSendCalls, - statusWriteContracts, - statusSendCall, - statusWriteContract, - transactionType, - walletCapabilities[Capabilities.AtomicBatch], - ]); - - // Transaction hash for single transaction (non-batched) - const singleTransactionHash = - writeContractTransactionHash || sendCallTransactionHash; + if (walletCapabilities[Capabilities.AtomicBatch]?.supported) { + return statusSendCalls; + } + return statusSendCall; + }, [statusSendCall, statusSendCalls, walletCapabilities]); const capabilities = useMemo(() => { if (isSponsored && paymaster) { @@ -181,10 +142,7 @@ export function TransactionProvider({ capabilities, sendCallAsync, sendCallsAsync, - transactionType, walletCapabilities, - writeContractAsync, - writeContractsAsync, }); const { transactionHash: batchedTransactionHash, status: callStatus } = @@ -192,6 +150,7 @@ export function TransactionProvider({ setLifecycleStatus, transactionId, }); + const { data: receipt } = useWaitForTransactionReceipt({ hash: singleTransactionHash || batchedTransactionHash, }); diff --git a/src/transaction/hooks/useSendWalletTransactions.test.tsx b/src/transaction/hooks/useSendWalletTransactions.test.tsx index 8d6047094e..d471188270 100644 --- a/src/transaction/hooks/useSendWalletTransactions.test.tsx +++ b/src/transaction/hooks/useSendWalletTransactions.test.tsx @@ -1,9 +1,5 @@ import { renderHook } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import { sendBatchedTransactions } from '../utils/sendBatchedTransactions'; import { sendSingleTransactions } from '../utils/sendSingleTransactions'; import { useSendWalletTransactions } from './useSendWalletTransactions'; @@ -22,10 +18,7 @@ describe('useSendWalletTransactions', () => { const capabilities = {}; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -40,8 +33,6 @@ describe('useSendWalletTransactions', () => { capabilities, sendCallsAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: expect.any(Function), }); }); @@ -52,10 +43,7 @@ describe('useSendWalletTransactions', () => { ]; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CALLS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -69,8 +57,6 @@ describe('useSendWalletTransactions', () => { expect(sendSingleTransactions).toHaveBeenCalledWith({ sendCallAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: expect.any(Function), }); }); @@ -79,10 +65,7 @@ describe('useSendWalletTransactions', () => { const capabilities = {}; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -97,18 +80,13 @@ describe('useSendWalletTransactions', () => { capabilities, sendCallsAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: expect.any(Function), }); }); it('should handle no transactions', async () => { const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { hasAtomicBatch: false }, @@ -126,10 +104,7 @@ describe('useSendWalletTransactions', () => { ]; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CALLS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: {}, @@ -139,8 +114,6 @@ describe('useSendWalletTransactions', () => { expect(sendSingleTransactions).toHaveBeenCalledWith({ sendCallAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: expect.any(Function), }); }); }); diff --git a/src/transaction/hooks/useSendWalletTransactions.tsx b/src/transaction/hooks/useSendWalletTransactions.tsx index b8bf2f6567..d78ec81772 100644 --- a/src/transaction/hooks/useSendWalletTransactions.tsx +++ b/src/transaction/hooks/useSendWalletTransactions.tsx @@ -10,10 +10,7 @@ export const useSendWalletTransactions = ({ capabilities, sendCallAsync, sendCallsAsync, - transactionType, walletCapabilities, - writeContractAsync, - writeContractsAsync, }: UseSendWalletTransactionsParams) => { return useCallback( async ( @@ -21,7 +18,8 @@ export const useSendWalletTransactions = ({ | Call[] | ContractFunctionParameters[] | Promise - | Promise, + | Promise + | (Call | ContractFunctionParameters)[], ) => { if (!transactions) { return; @@ -35,27 +33,15 @@ export const useSendWalletTransactions = ({ capabilities, sendCallsAsync, transactions: resolvedTransactions, - transactionType, - writeContractsAsync, }); } else { // Non-batched transactions await sendSingleTransactions({ sendCallAsync, transactions: resolvedTransactions, - transactionType, - writeContractAsync, }); } }, - [ - writeContractsAsync, - writeContractAsync, - sendCallsAsync, - sendCallAsync, - capabilities, - transactionType, - walletCapabilities, - ], + [sendCallsAsync, sendCallAsync, capabilities, walletCapabilities], ); }; diff --git a/src/transaction/types.ts b/src/transaction/types.ts index e839eb5aa5..2539a01846 100644 --- a/src/transaction/types.ts +++ b/src/transaction/types.ts @@ -8,10 +8,7 @@ import type { } from 'viem'; import type { WalletCapabilities as ViemWalletCapabilities } from 'viem'; import type { Config } from 'wagmi'; -import type { - SendTransactionMutateAsync, - WriteContractMutateAsync, -} from 'wagmi/query'; +import type { SendTransactionMutateAsync } from 'wagmi/query'; export type Call = { to: Hex; data?: Hex; value?: bigint }; @@ -93,7 +90,7 @@ export type TransactionContextType = { setIsToastVisible: (isVisible: boolean) => void; // A function to set the visibility of the transaction toast. setLifecycleStatus: (state: LifecycleStatus) => void; // A function to set the lifecycle status of the component setTransactionId: (id: string) => void; // A function to set the transaction ID. - transactions?: Calls | Contracts; // An array of transactions for the component or a promise that resolves to an array of transactions. + transactions?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of transactions for the component or a promise that resolves to an array of transactions. transactionId?: string; // An optional string representing the ID of the transaction. transactionHash?: string; // An optional string representing the hash of the transaction. transactionCount?: number; // Number of transactions being executed @@ -107,17 +104,12 @@ export type SendBatchedTransactionsParams = { capabilities?: WalletCapabilities; // biome-ignore lint: cannot find module 'wagmi/experimental/query' sendCallsAsync: any; - transactions?: Call[] | ContractFunctionParameters[]; - transactionType: string; - // biome-ignore lint: cannot find module 'wagmi/experimental/query' - writeContractsAsync: any; + transactions?: (Call | ContractFunctionParameters)[]; }; export type SendSingleTransactionParams = { sendCallAsync: SendTransactionMutateAsync | (() => void); - transactions: Call[] | ContractFunctionParameters[]; - transactionType: string; - writeContractAsync: WriteContractMutateAsync | (() => void); + transactions: (Call | ContractFunctionParameters)[]; }; /** @@ -137,21 +129,24 @@ export type TransactionError = { message: string; // The error message providing details about the transaction error. }; -type Calls = Call[] | Promise | (() => Promise); -type Contracts = +export type Calls = Call[] | Promise | (() => Promise); +export type Contracts = | ContractFunctionParameters[] | Promise | (() => Promise); export type TransactionProviderReact = { - calls?: Calls; // An array of calls to be made in the transaction. Mutually exclusive with the `contracts` prop. + calls?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. /** * @deprecated Use `isSponsored` instead. */ capabilities?: WalletCapabilities; // Capabilities that a wallet supports (e.g. paymasters, session keys, etc). chainId: number; // The chainId for the transaction. children: ReactNode; // The child components to be rendered within the provider component. - contracts?: Contracts; // An array of contract function parameters provided to the child components. Mutually exclusive with the `calls` prop. + /** + * @deprecated Use `calls` instead. + */ + contracts?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. isSponsored?: boolean; // Whether the transactions are sponsored (default: false) onError?: (e: TransactionError) => void; // An optional callback function that handles errors within the provider. onStatus?: (lifecycleStatus: LifecycleStatus) => void; // An optional callback function that exposes the component lifecycle state @@ -162,7 +157,7 @@ export type TransactionProviderReact = { * Note: exported as public Type */ export type TransactionReact = { - calls?: Calls; // An array of calls to be made in the transaction. Mutually exclusive with the `contracts` prop. + calls?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. /** * @deprecated Use `isSponsored` instead. */ @@ -170,7 +165,10 @@ export type TransactionReact = { chainId?: number; // The chainId for the transaction. children: ReactNode; // The child components to be rendered within the transaction component. className?: string; // An optional CSS class name for styling the component. - contracts?: Contracts; // An array of contract function parameters provided to the child components. Mutually exclusive with the `calls` prop. + /** + * @deprecated Use `calls` instead. + */ + contracts?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. isSponsored?: boolean; // Whether the transactions are sponsored (default: false) onError?: (e: TransactionError) => void; // An optional callback function that handles transaction errors. onStatus?: (lifecycleStatus: LifecycleStatus) => void; // An optional callback function that exposes the component lifecycle state @@ -274,11 +272,7 @@ export type UseSendWalletTransactionsParams = { // biome-ignore lint: cannot find module 'wagmi/experimental/query' sendCallsAsync: any; sendCallAsync: SendTransactionMutateAsync | (() => void); - transactionType: string; walletCapabilities: ViemWalletCapabilities; - // biome-ignore lint: cannot find module 'wagmi/experimental/query' - writeContractsAsync: any; - writeContractAsync: WriteContractMutateAsync | (() => void); }; /** diff --git a/src/transaction/utils/isContract.ts b/src/transaction/utils/isContract.ts new file mode 100644 index 0000000000..bc52b97109 --- /dev/null +++ b/src/transaction/utils/isContract.ts @@ -0,0 +1,8 @@ +import type { ContractFunctionParameters } from 'viem'; +import type { Call } from '../types'; + +export function isContract( + transaction: Call | ContractFunctionParameters, +): transaction is ContractFunctionParameters { + return 'abi' in transaction; +} diff --git a/src/transaction/utils/sendBatchedTransactions.test.ts b/src/transaction/utils/sendBatchedTransactions.test.ts index 1761f1b21f..4fe5f96bb9 100644 --- a/src/transaction/utils/sendBatchedTransactions.test.ts +++ b/src/transaction/utils/sendBatchedTransactions.test.ts @@ -1,12 +1,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import { sendBatchedTransactions } from './sendBatchedTransactions'; describe('sendBatchedTransactions', () => { - const mockWriteContractsAsync = vi.fn(); const mockSendCallsAsync = vi.fn(); const mockTransactions = []; const mockCapabilities = { paymasterService: '' }; @@ -15,19 +10,13 @@ describe('sendBatchedTransactions', () => { vi.clearAllMocks(); }); - it('should call writeContractsAsync for contract transactions', async () => { + it('should call sendCallsAsync for contract transactions', async () => { await sendBatchedTransactions({ capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: mockTransactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: mockWriteContractsAsync, }); - expect(mockWriteContractsAsync).toHaveBeenCalledWith({ - contracts: mockTransactions, - capabilities: mockCapabilities, - }); - expect(mockSendCallsAsync).not.toHaveBeenCalled(); + expect(mockSendCallsAsync).toHaveBeenCalled(); }); it('should call sendCallsAsync for call transactions', async () => { @@ -35,14 +24,11 @@ describe('sendBatchedTransactions', () => { capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: mockTransactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractsAsync: mockWriteContractsAsync, }); expect(mockSendCallsAsync).toHaveBeenCalledWith({ calls: mockTransactions, capabilities: mockCapabilities, }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); }); it('should not call any function if transactions are undefined', async () => { @@ -50,22 +36,31 @@ describe('sendBatchedTransactions', () => { capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: undefined, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: mockWriteContractsAsync, }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); expect(mockSendCallsAsync).not.toHaveBeenCalled(); }); - it('should not call any function if transaction type is invalid', async () => { + it('should transform contracts address prop', async () => { await sendBatchedTransactions({ capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, - transactions: mockTransactions, - transactionType: 'INVALID_TYPE', - writeContractsAsync: mockWriteContractsAsync, + transactions: [{ address: '0x123', abi: '123' }], + }); + expect(mockSendCallsAsync).toHaveBeenCalled({ + Capabilities: mockCapabilities, + calls: [{ to: '0x123', abi: '123' }], + }); + }); + + it('should transform not transform call', async () => { + await sendBatchedTransactions({ + capabilities: mockCapabilities, + sendCallsAsync: mockSendCallsAsync, + transactions: [{ to: '0x123', data: '123' }], + }); + expect(mockSendCallsAsync).toHaveBeenCalled({ + Capabilities: mockCapabilities, + calls: [{ to: '0x123', data: '123' }], }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); - expect(mockSendCallsAsync).not.toHaveBeenCalled(); }); }); diff --git a/src/transaction/utils/sendBatchedTransactions.ts b/src/transaction/utils/sendBatchedTransactions.ts index bc359442eb..54c16fd4e1 100644 --- a/src/transaction/utils/sendBatchedTransactions.ts +++ b/src/transaction/utils/sendBatchedTransactions.ts @@ -1,29 +1,28 @@ -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import type { SendBatchedTransactionsParams } from '../types'; +import { isContract } from './isContract'; export const sendBatchedTransactions = async ({ capabilities, sendCallsAsync, transactions, - transactionType, - writeContractsAsync, }: SendBatchedTransactionsParams) => { if (!transactions) { return; } - if (transactionType === TRANSACTION_TYPE_CONTRACTS) { - await writeContractsAsync({ - contracts: transactions, - capabilities, - }); - } - if (transactionType === TRANSACTION_TYPE_CALLS) { - await sendCallsAsync({ - calls: transactions, - capabilities, - }); - } + + const calls = transactions?.map((transaction) => { + if (isContract(transaction)) { + const { address, ...rest } = transaction; + return { + ...rest, + to: address, + }; + } + return transaction; + }); + + await sendCallsAsync({ + calls, + capabilities, + }); }; diff --git a/src/transaction/utils/sendSingleTransactions.test.ts b/src/transaction/utils/sendSingleTransactions.test.ts index d8958960d8..41970c9539 100644 --- a/src/transaction/utils/sendSingleTransactions.test.ts +++ b/src/transaction/utils/sendSingleTransactions.test.ts @@ -1,11 +1,14 @@ -import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { TRANSACTION_TYPE_CALLS } from '../constants'; +import { encodeFunctionData } from 'viem'; +import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest'; import type { Call } from '../types'; import { sendSingleTransactions } from './sendSingleTransactions'; +vi.mock('viem', () => ({ + encodeFunctionData: vi.fn(), +})); + describe('sendSingleTransactions', () => { const mockSendCallAsync = vi.fn(); - const mockWriteContractAsync = vi.fn(); const transactions: Call[] = [ { to: '0x123', data: '0x456' }, { to: '0x789', data: '0xabc' }, @@ -13,59 +16,55 @@ describe('sendSingleTransactions', () => { beforeEach(() => { vi.clearAllMocks(); + (encodeFunctionData as Mock).mockReturnValue('123'); }); it('should call sendCallAsync for each transaction when type is TRANSACTION_TYPE_CALLS', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); expect(mockSendCallAsync).toHaveBeenCalledTimes(2); expect(mockSendCallAsync).toHaveBeenNthCalledWith(1, transactions[0]); expect(mockSendCallAsync).toHaveBeenNthCalledWith(2, transactions[1]); - expect(mockWriteContractAsync).not.toHaveBeenCalled(); }); - it('should call writeContractAsync for each transaction when type is not TRANSACTION_TYPE_CALLS', async () => { + it('should call sendCallAsync for each transaction', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: 'SOME_OTHER_TYPE', - writeContractAsync: mockWriteContractAsync, }); - expect(mockWriteContractAsync).toHaveBeenCalledTimes(2); - expect(mockWriteContractAsync).toHaveBeenNthCalledWith(1, transactions[0]); - expect(mockWriteContractAsync).toHaveBeenNthCalledWith(2, transactions[1]); - expect(mockSendCallAsync).not.toHaveBeenCalled(); + expect(mockSendCallAsync).toHaveBeenCalled(); }); it('should not call any function if transactions array is empty', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions: [], - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); expect(mockSendCallAsync).not.toHaveBeenCalled(); - expect(mockWriteContractAsync).not.toHaveBeenCalled(); }); it('should handle mixed transaction types correctly', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); - expect(mockSendCallAsync).toHaveBeenCalledTimes(2); await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: 'CONTRACT_TYPE', - writeContractAsync: mockWriteContractAsync, }); - expect(mockWriteContractAsync).toHaveBeenCalledTimes(2); + expect(mockSendCallAsync).toHaveBeenCalledTimes(4); + }); + + it('should transform contracts to calls', async () => { + await sendSingleTransactions({ + sendCallAsync: mockSendCallAsync, + transactions: [{ abi: '123', address: '0x123' }], + }); + expect(mockSendCallAsync).toHaveBeenCalledWith({ + data: '123', + to: '0x123', + }); }); }); diff --git a/src/transaction/utils/sendSingleTransactions.ts b/src/transaction/utils/sendSingleTransactions.ts index b83d48b428..2906af9301 100644 --- a/src/transaction/utils/sendSingleTransactions.ts +++ b/src/transaction/utils/sendSingleTransactions.ts @@ -1,18 +1,26 @@ -import type { ContractFunctionParameters } from 'viem'; -import { TRANSACTION_TYPE_CALLS } from '../constants'; +import { encodeFunctionData } from 'viem'; import type { Call, SendSingleTransactionParams } from '../types'; +import { isContract } from './isContract'; export const sendSingleTransactions = async ({ sendCallAsync, transactions, - transactionType, - writeContractAsync, }: SendSingleTransactionParams) => { - for (const transaction of transactions) { - if (transactionType === TRANSACTION_TYPE_CALLS) { - await sendCallAsync(transaction as Call); - } else { - await writeContractAsync(transaction as ContractFunctionParameters); + const calls = transactions?.map((transaction) => { + if (isContract(transaction)) { + return { + data: encodeFunctionData({ + abi: transaction?.abi, + functionName: transaction?.functionName, + args: transaction?.args, + }), + to: transaction?.address, + }; } + return transaction; + }); + + for (const call of calls) { + await sendCallAsync(call as Call); } }; diff --git a/src/wallet/types.ts b/src/wallet/types.ts index 3e613d9b2b..3db91805e4 100644 --- a/src/wallet/types.ts +++ b/src/wallet/types.ts @@ -1,6 +1,6 @@ -import type { UserOperation } from 'permissionless'; import type { Dispatch, ReactNode, SetStateAction } from 'react'; import type { Address, Chain, PublicClient } from 'viem'; +import type { UserOperation } from 'viem/_types/account-abstraction'; import type { UseBalanceReturnType, UseReadContractReturnType } from 'wagmi'; import type { SwapError } from '../swap'; @@ -43,7 +43,7 @@ export type IsValidAAEntrypointOptions = { */ export type IsWalletACoinbaseSmartWalletOptions = { client: PublicClient; - userOp: UserOperation<'v0.6'>; + userOp: UserOperation<'0.6'>; }; /** diff --git a/src/wallet/utils/isValidAAEntrypoint.test.ts b/src/wallet/utils/isValidAAEntrypoint.test.ts index 9a6bcfb557..d8875e4fd5 100644 --- a/src/wallet/utils/isValidAAEntrypoint.test.ts +++ b/src/wallet/utils/isValidAAEntrypoint.test.ts @@ -1,9 +1,9 @@ -import { ENTRYPOINT_ADDRESS_V06 } from 'permissionless'; +import { entryPoint06Address } from 'viem/account-abstraction'; import { isValidAAEntrypoint } from './isValidAAEntrypoint'; describe('isValidAAEntrypoint', () => { it('should return true for a valid v6 entrypoint address', () => { - const result = isValidAAEntrypoint({ entrypoint: ENTRYPOINT_ADDRESS_V06 }); + const result = isValidAAEntrypoint({ entrypoint: entryPoint06Address }); expect(result).toEqual(true); }); it('should return false if the entrypoint is not ENTRYPOINT_ADDRESS_V06', () => { diff --git a/src/wallet/utils/isValidAAEntrypoint.ts b/src/wallet/utils/isValidAAEntrypoint.ts index 7aae9cd61f..b15529d397 100644 --- a/src/wallet/utils/isValidAAEntrypoint.ts +++ b/src/wallet/utils/isValidAAEntrypoint.ts @@ -1,4 +1,4 @@ -import { ENTRYPOINT_ADDRESS_V06 } from 'permissionless'; +import { entryPoint06Address } from 'viem/account-abstraction'; import type { IsValidAAEntrypointOptions } from '../types'; /** @@ -7,7 +7,7 @@ import type { IsValidAAEntrypointOptions } from '../types'; export function isValidAAEntrypoint({ entrypoint, }: IsValidAAEntrypointOptions): boolean { - if (entrypoint.toLowerCase() !== ENTRYPOINT_ADDRESS_V06.toLowerCase()) { + if (entrypoint.toLowerCase() !== entryPoint06Address.toLowerCase()) { return false; } return true; diff --git a/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts b/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts index cf07dae87d..e03d5c220d 100644 --- a/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts +++ b/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts @@ -1,5 +1,5 @@ -import type { UserOperation } from 'permissionless'; import type { PublicClient } from 'viem'; +import type { UserOperation } from 'viem/_types/account-abstraction'; import { type Mock, describe, expect, it, vi } from 'vitest'; import { CB_SW_PROXY_BYTECODE, diff --git a/src/wallet/utils/isWalletACoinbaseSmartWallet.ts b/src/wallet/utils/isWalletACoinbaseSmartWallet.ts index 6266f04ede..30843a0b81 100644 --- a/src/wallet/utils/isWalletACoinbaseSmartWallet.ts +++ b/src/wallet/utils/isWalletACoinbaseSmartWallet.ts @@ -25,7 +25,7 @@ export async function isWalletACoinbaseSmartWallet({ if (!code) { // no code at address, check that the initCode is deploying a Coinbase Smart Wallet // factory address is first 20 bytes of initCode after '0x' - const factoryAddress = userOp.initCode.slice(0, 42) as Address; + const factoryAddress = userOp?.initCode?.slice(0, 42) as Address; if ( checksumAddress(factoryAddress) !== checksumAddress(CB_SW_FACTORY_ADDRESS) diff --git a/yarn.lock b/yarn.lock index ae88e716be..fcc68d0df0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:1.11.0": + version: 1.11.0 + resolution: "@adraffy/ens-normalize@npm:1.11.0" + checksum: 5111d0f1a273468cb5661ed3cf46ee58de8f32f84e2ebc2365652e66c1ead82649df94c736804e2b9cfa831d30ef24e1cc3575d970dbda583416d3a98d8870a6 + languageName: node + linkType: hard + "@alloc/quick-lru@npm:^5.2.0": version: 5.2.0 resolution: "@alloc/quick-lru@npm:5.2.0" @@ -2201,7 +2208,6 @@ __metadata: graphql-request: "npm:^6.1.0" jsdom: "npm:^24.1.0" packemon: "npm:3.3.1" - permissionless: "npm:^0.1.29" react: "npm:^18" react-dom: "npm:^18" rimraf: "npm:^5.0.5" @@ -2210,10 +2216,10 @@ __metadata: tailwindcss: "npm:^3.4.3" tsup: "npm:^8.3.5" typescript: "npm:~5.3.3" - viem: "npm:^2.17.4" + viem: "npm:^2.21.33" vite: "npm:^5.3.3" vitest: "npm:^2.0.5" - wagmi: "npm:^2.11.0" + wagmi: "npm:^2.12.24" peerDependencies: "@types/react": ^18 "@xmtp/frames-validator": ^0.6.0 @@ -2222,17 +2228,24 @@ __metadata: languageName: unknown linkType: soft -"@coinbase/wallet-sdk@npm:4.0.4": - version: 4.0.4 - resolution: "@coinbase/wallet-sdk@npm:4.0.4" +"@coinbase/wallet-sdk@npm:4.1.0": + version: 4.1.0 + resolution: "@coinbase/wallet-sdk@npm:4.1.0" dependencies: - buffer: "npm:^6.0.3" + "@noble/hashes": "npm:^1.4.0" clsx: "npm:^1.2.1" eventemitter3: "npm:^5.0.1" - keccak: "npm:^3.0.3" preact: "npm:^10.16.0" - sha.js: "npm:^2.4.11" - checksum: 7c8c39688c144b5305ac59d847023f7dce9ccffdd8ed6fdcc690c03980ce7cf8f88caff4e0cf0a1f081bcfd61ebe6a590970771505f86700f9b798a0e8e2dc88 + checksum: 9ccd8171e8874a357f246fc3b8b9641cb015f12e0c8912c15b77c55cdca58c00ba59c68afdc3162d26421fedcaf8164a95ee39abce96e4dcde5b391e0920ca65 + languageName: node + linkType: hard + +"@ecies/ciphers@npm:^0.2.0": + version: 0.2.0 + resolution: "@ecies/ciphers@npm:0.2.0" + peerDependencies: + "@noble/ciphers": ^1.0.0 + checksum: 1aa83fd46c52325e267c67eb2ab1575751da008a18ef806b4ade3ff3db71df7e29155287c3b66e1dcc3c47bf5ce7b302509518569763b6c91cc5b6f9f6f12cb3 languageName: node linkType: hard @@ -3044,7 +3057,7 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^7.0.0, @metamask/json-rpc-engine@npm:^7.3.2": +"@metamask/json-rpc-engine@npm:^7.0.0": version: 7.3.3 resolution: "@metamask/json-rpc-engine@npm:7.3.3" dependencies: @@ -3055,15 +3068,26 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-middleware-stream@npm:^6.0.2": - version: 6.0.2 - resolution: "@metamask/json-rpc-middleware-stream@npm:6.0.2" +"@metamask/json-rpc-engine@npm:^8.0.1, @metamask/json-rpc-engine@npm:^8.0.2": + version: 8.0.2 + resolution: "@metamask/json-rpc-engine@npm:8.0.2" dependencies: - "@metamask/json-rpc-engine": "npm:^7.3.2" + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + checksum: 57a584e713be98837b56b1985fc14020b74939af200c304e9dcde0a59b622f0d4b1fd07a9032dd3652b72ce330e47db8b9aa13402a443ad8c09667a4204c4c17 + languageName: node + linkType: hard + +"@metamask/json-rpc-middleware-stream@npm:^7.0.1": + version: 7.0.2 + resolution: "@metamask/json-rpc-middleware-stream@npm:7.0.2" + dependencies: + "@metamask/json-rpc-engine": "npm:^8.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" "@metamask/utils": "npm:^8.3.0" readable-stream: "npm:^3.6.2" - checksum: a91b8d834253a1700d96cf0f08d2362e2db58365f751cb3e60b3c5e9422a1f443a8a515d5a653ced59535726717d0f827c1aaf2a33dd33efb96a05f653bb0915 + checksum: 5819e5cd1460046d309218110a76727d5b5b7b0fb379efd2e938e145905a359c2b6d4278d390760227ad5823e3f4bcaa001cbb5abeeeb014b08badbb1fa29f1f languageName: node linkType: hard @@ -3086,15 +3110,15 @@ __metadata: languageName: node linkType: hard -"@metamask/providers@npm:^15.0.0": - version: 15.0.0 - resolution: "@metamask/providers@npm:15.0.0" +"@metamask/providers@npm:16.1.0": + version: 16.1.0 + resolution: "@metamask/providers@npm:16.1.0" dependencies: - "@metamask/json-rpc-engine": "npm:^7.3.2" - "@metamask/json-rpc-middleware-stream": "npm:^6.0.2" + "@metamask/json-rpc-engine": "npm:^8.0.1" + "@metamask/json-rpc-middleware-stream": "npm:^7.0.1" "@metamask/object-multiplex": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^6.2.1" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "npm:^3.1.1" "@metamask/utils": "npm:^8.3.0" detect-browser: "npm:^5.2.0" extension-port-stream: "npm:^3.0.0" @@ -3102,7 +3126,7 @@ __metadata: is-stream: "npm:^2.0.0" readable-stream: "npm:^3.6.2" webextension-polyfill: "npm:^0.10.0" - checksum: c079cb8440f7cbd8ba863070a8c5c1ada4ad99e31694ec7b0c537b1cb11e66f9d4271e737633ce89f98248208ba076bfc90ddab94ce0299178fdab9a8489fb09 + checksum: ef0fe2cad0db6e2fd1c0b73894419e4dc153e1742e8b16e233164eaec941ef3d4859728e4a2e733e818b56093abd889fc96c7a75dccf9878cbdab45fd3b36e2c languageName: node linkType: hard @@ -3130,9 +3154,16 @@ __metadata: languageName: node linkType: hard -"@metamask/sdk-communication-layer@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk-communication-layer@npm:0.26.4" +"@metamask/safe-event-emitter@npm:^3.1.1": + version: 3.1.2 + resolution: "@metamask/safe-event-emitter@npm:3.1.2" + checksum: ca59aada3e79bae9609d3be2569c25c22f9b1df05821a2fbebfbcc835a811347e814eabf9dbbddf342fef9dcadac903492a49fdc0c9bcac0aff980c0d38daab2 + languageName: node + linkType: hard + +"@metamask/sdk-communication-layer@npm:0.30.0": + version: 0.30.0 + resolution: "@metamask/sdk-communication-layer@npm:0.30.0" dependencies: bufferutil: "npm:^4.0.8" date-fns: "npm:^2.29.3" @@ -3145,17 +3176,17 @@ __metadata: eventemitter2: ^6.4.7 readable-stream: ^3.6.2 socket.io-client: ^4.5.1 - checksum: 01f9704942f6751ba03819117ba611dae3712310bdf54fed1637a526d5fd972fc6fe097be27a5ed4b657a8dea8e497861ce81efa1879000d10696c787e8356e2 + checksum: e3f2b1a05e474142c1c92c89b4347cbefe4503143cd9e27ff961a341afe2bc2d593b111db5a9425231ff1661a9219449fb50c47c3f4ccc39c81c97e925aac477 languageName: node linkType: hard -"@metamask/sdk-install-modal-web@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk-install-modal-web@npm:0.26.4" +"@metamask/sdk-install-modal-web@npm:0.30.0": + version: 0.30.0 + resolution: "@metamask/sdk-install-modal-web@npm:0.30.0" dependencies: qr-code-styling: "npm:^1.6.0-rc.1" peerDependencies: - i18next: 23.2.3 + i18next: 23.11.5 react: ^18.2.0 react-dom: ^18.2.0 react-native: "*" @@ -3166,23 +3197,22 @@ __metadata: optional: true react-native: optional: true - checksum: 2bd87481e2630e739d19cfd211e5c68ebe7bd24ee4760764381ef93e4127afb5d6d4ca51b539c424c3bd2368dfe421daf86d689e1462b09c84509d0042968e45 + checksum: b515a356148179e74c80562d6127c59a21d25bce0a83bef3b190d02785d231936cc394fb87f6141a673ba0d8ba3f443f0572540aa6883b74ea17b9f6e771dc00 languageName: node linkType: hard -"@metamask/sdk@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk@npm:0.26.4" +"@metamask/sdk@npm:0.30.1": + version: 0.30.1 + resolution: "@metamask/sdk@npm:0.30.1" dependencies: "@metamask/onboarding": "npm:^1.0.1" - "@metamask/providers": "npm:^15.0.0" - "@metamask/sdk-communication-layer": "npm:0.26.4" - "@metamask/sdk-install-modal-web": "npm:0.26.4" - "@types/dom-screen-wake-lock": "npm:^1.0.0" + "@metamask/providers": "npm:16.1.0" + "@metamask/sdk-communication-layer": "npm:0.30.0" + "@metamask/sdk-install-modal-web": "npm:0.30.0" bowser: "npm:^2.9.0" cross-fetch: "npm:^4.0.0" debug: "npm:^4.3.4" - eciesjs: "npm:^0.3.15" + eciesjs: "npm:^0.4.8" eth-rpc-errors: "npm:^4.0.3" eventemitter2: "npm:^6.4.7" i18next: "npm:23.11.5" @@ -3192,7 +3222,6 @@ __metadata: qrcode-terminal-nooctal: "npm:^0.12.1" react-native-webview: "npm:^11.26.0" readable-stream: "npm:^3.6.2" - rollup-plugin-visualizer: "npm:^5.9.2" socket.io-client: "npm:^4.5.1" util: "npm:^0.12.4" uuid: "npm:^8.3.2" @@ -3204,7 +3233,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 74c671a1dae8f148ad6917f06c01a4d8f57ad9f4be911a7f9f0101be42871efa65a7836779e380a25644a4489a78bda54f68021d2e6066e09dcf08cfd57187f8 + checksum: e42a98471adecc6c291e322ec6772fa8f8d9ae9949887e59c77f7d916ff44f5e69fc57b74449b2e04603e8ecb550e782815a6dc8f81f8afc291fc61d06fe6722 languageName: node linkType: hard @@ -3347,12 +3376,10 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/curves@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:1.3.2" - checksum: 0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 +"@noble/ciphers@npm:^1.0.0": + version: 1.0.0 + resolution: "@noble/ciphers@npm:1.0.0" + checksum: 6c04d6e9d10a922fff170efc44622c95a25fb817f4b593e0f150dd27599576f3fe3c5b61eb02054b22d1507e3839879ddd5acb2d2acf8efbea4efab99bbcd333 languageName: node linkType: hard @@ -3374,10 +3401,12 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.3.2": - version: 1.3.2 - resolution: "@noble/hashes@npm:1.3.2" - checksum: 2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 +"@noble/curves@npm:1.6.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.6.0, @noble/curves@npm:~1.6.0": + version: 1.6.0 + resolution: "@noble/curves@npm:1.6.0" + dependencies: + "@noble/hashes": "npm:1.5.0" + checksum: f3262aa4d39148e627cd82b5ac1c93f88c5bb46dd2566b5e8e52ffac3a0fc381ad30c2111656fd2bd3b0d37d43d540543e0d93a5ff96a6cb184bc3bfe10d1cd9 languageName: node linkType: hard @@ -3388,10 +3417,10 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2": - version: 1.3.3 - resolution: "@noble/hashes@npm:1.3.3" - checksum: 23c020b33da4172c988e44100e33cd9f8f6250b68b43c467d3551f82070ebd9716e0d9d2347427aa3774c85934a35fa9ee6f026fca2117e3fa12db7bedae7668 +"@noble/hashes@npm:1.5.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.5.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: 1b46539695fbfe4477c0822d90c881a04d4fa2921c08c552375b444a48cac9930cb1ee68de0a3c7859e676554d0f3771999716606dc4d8f826e414c11692cdd9 languageName: node linkType: hard @@ -4038,23 +4067,23 @@ __metadata: languageName: node linkType: hard -"@safe-global/safe-apps-provider@npm:0.18.1": - version: 0.18.1 - resolution: "@safe-global/safe-apps-provider@npm:0.18.1" +"@safe-global/safe-apps-provider@npm:0.18.3": + version: 0.18.3 + resolution: "@safe-global/safe-apps-provider@npm:0.18.3" dependencies: - "@safe-global/safe-apps-sdk": "npm:^8.1.0" + "@safe-global/safe-apps-sdk": "npm:^9.1.0" events: "npm:^3.3.0" - checksum: 9e6375132930cedd0935baa83cd026eb7c76776c7285edb3ff8c463ccf48d1e30cea03e93ce7199d3d3efa3cd035495e5f85fc361e203a2c03a4459d1989e726 + checksum: 7209d761919969c0859e8b9df90fd46d06c3f99424ecd5fd2e0b8080355a880504ee5c46cebcbaa94739f8be272f3f7102a9f40cf18e6c1a9e1d7dd29d77ee5e languageName: node linkType: hard -"@safe-global/safe-apps-sdk@npm:8.1.0, @safe-global/safe-apps-sdk@npm:^8.1.0": - version: 8.1.0 - resolution: "@safe-global/safe-apps-sdk@npm:8.1.0" +"@safe-global/safe-apps-sdk@npm:9.1.0, @safe-global/safe-apps-sdk@npm:^9.1.0": + version: 9.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:9.1.0" dependencies: "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" - viem: "npm:^1.0.0" - checksum: b6ad0610ed39a1106ecaa91e43e411dd361c8d4d9712cb3fbf15342950b86fe387ce331bd91ae35c90ff036cded188272ea45ca4e3534c2b08e7e3d3c741fdc0 + viem: "npm:^2.1.1" + checksum: 13af12122a6b1388e7960a76c3c421ea5ed97197646cd1f720b9fc9364fad0cc8f21cda23773130cd6bf57935a36f9e93f5222569cc80382709430b5cad26fda languageName: node linkType: hard @@ -4065,21 +4094,17 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.6": +"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.6": version: 1.1.7 resolution: "@scure/base@npm:1.1.7" checksum: 2d06aaf39e6de4b9640eb40d2e5419176ebfe911597856dcbf3bc6209277ddb83f4b4b02cb1fd1208f819654268ec083da68111d3530bbde07bae913e2fc2e5d languageName: node linkType: hard -"@scure/bip32@npm:1.3.2": - version: 1.3.2 - resolution: "@scure/bip32@npm:1.3.2" - dependencies: - "@noble/curves": "npm:~1.2.0" - "@noble/hashes": "npm:~1.3.2" - "@scure/base": "npm:~1.1.2" - checksum: 2e9c1ce67f72b6c3329483f5fd39fb43ba6dcf732ed7ac63b80fa96341d2bc4cad1ea4c75bfeb91e801968c00df48b577b015fd4591f581e93f0d91178e630ca +"@scure/base@npm:~1.1.7, @scure/base@npm:~1.1.8": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 languageName: node linkType: hard @@ -4094,13 +4119,14 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.2.1": - version: 1.2.1 - resolution: "@scure/bip39@npm:1.2.1" +"@scure/bip32@npm:1.5.0": + version: 1.5.0 + resolution: "@scure/bip32@npm:1.5.0" dependencies: - "@noble/hashes": "npm:~1.3.0" - "@scure/base": "npm:~1.1.0" - checksum: fe951f69dd5a7cdcefbe865bce1b160d6b59ba19bd01d09f0718e54fce37a7d8be158b32f5455f0e9c426a7fbbede3e019bf0baa99bacc88ef26a76a07e115d4 + "@noble/curves": "npm:~1.6.0" + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.7" + checksum: 3319beda59e7f129d770cbe49709a2d1742f2deb6989b12e37aa1a47cd128a8c943bdd9286c6a5513ef4539307c4bca8f89f9aa91f294cac4598cbf95fa0c01d languageName: node linkType: hard @@ -4114,6 +4140,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip39@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.8" + checksum: dcdceeac348ed9c0f545c1a7ef8854ef62d6eb4e7b7aaafa4e2ef27f7e1c5744b0cd26292afd04e1ee59ae035b19abdd65174a444b8db8c238ccc662f6b90eac + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -5248,13 +5284,6 @@ __metadata: languageName: node linkType: hard -"@types/dom-screen-wake-lock@npm:^1.0.0": - version: 1.0.3 - resolution: "@types/dom-screen-wake-lock@npm:1.0.3" - checksum: bab45f6a797de562f1bd3c095c49b7c0464ad05e571f38d00adaa35da2b02109bfe587206cc55f420377634cf0f7b07caa5acb3257e49dfd2d94dab74c617bf1 - languageName: node - linkType: hard - "@types/emscripten@npm:^1.39.6": version: 1.39.13 resolution: "@types/emscripten@npm:1.39.13" @@ -5495,15 +5524,6 @@ __metadata: languageName: node linkType: hard -"@types/secp256k1@npm:^4.0.6": - version: 4.0.6 - resolution: "@types/secp256k1@npm:4.0.6" - dependencies: - "@types/node": "npm:*" - checksum: 0e391316ae30c218779583b626382a56546ddbefb65f1ff9cf5e078af8a7118f67f3e66e30914399cc6f8710c424d0d8c3f34262ffb1f429c6ad911fd0d0bc26 - languageName: node - linkType: hard - "@types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -5777,35 +5797,34 @@ __metadata: languageName: node linkType: hard -"@wagmi/connectors@npm:5.0.24": - version: 5.0.24 - resolution: "@wagmi/connectors@npm:5.0.24" +"@wagmi/connectors@npm:5.3.3": + version: 5.3.3 + resolution: "@wagmi/connectors@npm:5.3.3" dependencies: - "@coinbase/wallet-sdk": "npm:4.0.4" - "@metamask/sdk": "npm:0.26.4" - "@safe-global/safe-apps-provider": "npm:0.18.1" - "@safe-global/safe-apps-sdk": "npm:8.1.0" - "@walletconnect/ethereum-provider": "npm:2.13.0" - "@walletconnect/modal": "npm:2.6.2" + "@coinbase/wallet-sdk": "npm:4.1.0" + "@metamask/sdk": "npm:0.30.1" + "@safe-global/safe-apps-provider": "npm:0.18.3" + "@safe-global/safe-apps-sdk": "npm:9.1.0" + "@walletconnect/ethereum-provider": "npm:2.17.0" cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" peerDependencies: - "@wagmi/core": 2.12.0 + "@wagmi/core": 2.14.1 typescript: ">=5.0.4" viem: 2.x peerDependenciesMeta: typescript: optional: true - checksum: 117f6549c6323bd7ea6f8d0c85c7983bbf85ac680bb53801988013c90c6544c0de285e2c36388b917b0461e0946b6181fca411a971b8913e7e66592c36612fa0 + checksum: 78789ed27fca0bc1d54a3a8282584ddcbdcee26f2d95b27d7dd9663a7cd02e2728e0bcdd0ce0aaae8983dfac3ad966c03243dd08ce11b80d908c314f0d139cb7 languageName: node linkType: hard -"@wagmi/core@npm:2.12.0": - version: 2.12.0 - resolution: "@wagmi/core@npm:2.12.0" +"@wagmi/core@npm:2.14.1": + version: 2.14.1 + resolution: "@wagmi/core@npm:2.14.1" dependencies: eventemitter3: "npm:5.0.1" mipd: "npm:0.0.7" - zustand: "npm:4.4.1" + zustand: "npm:5.0.0" peerDependencies: "@tanstack/query-core": ">=5.0.0" typescript: ">=5.0.4" @@ -5815,13 +5834,13 @@ __metadata: optional: true typescript: optional: true - checksum: e7defa0c10e9e1be198b5abe115bedecdbcda02b61e90e72fa8e83bfec12e703ca7500d9c7f6efa915bf7c1a7e5cd4f058412a42a3fcc9a6b045468f24550d8a + checksum: 4cde494a8fcf218e79eb4e650fd598fbb273fcaa3cab52aa0a3b41a2a104de2bac602ed19d2d2c6b130f881300770d809b5e1bfd81a8375269bed7d4e9606fb0 languageName: node linkType: hard -"@walletconnect/core@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/core@npm:2.13.0" +"@walletconnect/core@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/core@npm:2.17.0" dependencies: "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-provider": "npm:1.0.14" @@ -5830,17 +5849,16 @@ __metadata: "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/relay-api": "npm:1.0.11" "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - isomorphic-unfetch: "npm:3.1.0" lodash.isequal: "npm:4.5.0" uint8arrays: "npm:3.1.0" - checksum: e1356eb8ac94f8f6743814337607244557280d43a6e2ec14591beb21dca0e73cc79b16f0a2ace60ef447149778c5383a1fd4eac67788372d249c8c5f6d8c7dc2 + checksum: 34ae5b9b68c08c1dd3ebb2a6ebff8697307e76fbfe4d6b51d5d090da5cd1613e1c66fa5ac3a87c914333458d7b5bf075bb664292f6b2c7d438c72f706d87416d languageName: node linkType: hard @@ -5853,21 +5871,21 @@ __metadata: languageName: node linkType: hard -"@walletconnect/ethereum-provider@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/ethereum-provider@npm:2.13.0" +"@walletconnect/ethereum-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/ethereum-provider@npm:2.17.0" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/modal": "npm:2.6.2" - "@walletconnect/sign-client": "npm:2.13.0" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/universal-provider": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/modal": "npm:2.7.0" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/universal-provider": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 4bc3c76b7a9e81ac505fcff99244bfa9f14419ee2de322e491dacd94669923adf5e9e1a2298ae84b33e3d5985a0bfab6b7715237e6f2ce23ec02c67dedb58898 + checksum: b046a9c296e95b22841f0b2efd28a4ce1a38529a9ba412d3c8ffc482879d79c3d2a24b8c0ec712baecf781938b4321ab5c1ecad5573d078add7c47b0cfd08a25 languageName: node linkType: hard @@ -5974,43 +5992,43 @@ __metadata: languageName: node linkType: hard -"@walletconnect/modal-core@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-core@npm:2.6.2" +"@walletconnect/modal-core@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-core@npm:2.7.0" dependencies: valtio: "npm:1.11.2" - checksum: 5e3fb21a1fc923ec0d2a3e33cc360e3d56278a211609d5fd4cc4d6e3b4f1acb40b9783fcc771b259b78c7e731af3862def096aa1da2e210e7859729808304c94 + checksum: 84b11735c005e37e661aa0f08b2e8c8098db3b2cacd957c4a73f4d3de11b2d5e04dd97ab970f8d22fc3e8269fea3297b9487e177343bbab8dd69b3b917fb7f60 languageName: node linkType: hard -"@walletconnect/modal-ui@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-ui@npm:2.6.2" +"@walletconnect/modal-ui@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-ui@npm:2.7.0" dependencies: - "@walletconnect/modal-core": "npm:2.6.2" + "@walletconnect/modal-core": "npm:2.7.0" lit: "npm:2.8.0" motion: "npm:10.16.2" qrcode: "npm:1.5.3" - checksum: 5d8f0a2703b9757dfa48ad3e48a40e64608f6a28db31ec93a2f10e942dcc5ee986c03ffdab94018e905836d339131fc928bc14614a94943011868cdddc36a32a + checksum: b717f1fc9854b7d14a4364720fce2d44167f547533340704644ed2fdf9d861b3798ffd19a3b51062a366a8bc39f84b9a8bb3dd04e9e33da742192359be00b051 languageName: node linkType: hard -"@walletconnect/modal@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal@npm:2.6.2" +"@walletconnect/modal@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal@npm:2.7.0" dependencies: - "@walletconnect/modal-core": "npm:2.6.2" - "@walletconnect/modal-ui": "npm:2.6.2" - checksum: 1cc309f63d061e49fdf7b10d28093d7ef1a47f4624f717f8fd3bf6097ac3b00cea4acc45c50e8bd386d4bcfdf10f4dcba960f7129c557b9dc42ef7d05b970807 + "@walletconnect/modal-core": "npm:2.7.0" + "@walletconnect/modal-ui": "npm:2.7.0" + checksum: 2f3074eebbca41a46e29680dc2565bc762133508774f05db0075a82b0b66ecc8defca40a94ad63669676090a7e3ef671804592b10e91636ab1cdeac014a1eb11 languageName: node linkType: hard -"@walletconnect/relay-api@npm:1.0.10": - version: 1.0.10 - resolution: "@walletconnect/relay-api@npm:1.0.10" +"@walletconnect/relay-api@npm:1.0.11": + version: 1.0.11 + resolution: "@walletconnect/relay-api@npm:1.0.11" dependencies: "@walletconnect/jsonrpc-types": "npm:^1.0.2" - checksum: 2709bbe45f60579cd2e1c74b0fd03c36ea409cd8a9117e00a7485428d0c9ba7eb02e525c21e5286db2b6ce563b1d29053b0249c2ed95f8adcf02b11e54f61fcd + checksum: 2595d7e68d3a93e7735e0b6204811762898b0ce1466e811d78be5bcec7ac1cde5381637615a99104099165bf63695da5ef9381d6ded29924a57a71b10712a91d languageName: node linkType: hard @@ -6037,20 +6055,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/sign-client@npm:2.13.0" +"@walletconnect/sign-client@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/sign-client@npm:2.17.0" dependencies: - "@walletconnect/core": "npm:2.13.0" + "@walletconnect/core": "npm:2.17.0" "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 58c702997f719cab9b183d23c53efee561a3a407de24e464e339e350124a71eeccb1bd651f0893ad0f39343ce42a7ff3666bbd28cb8dfc6a0e8d12c94eacc288 + checksum: 48f7d13b3db49584a40dc2653f49fabadd100a324e2213476b8d9e4d6fe0808a08ae14103d2e5b609abff3115197003d8570d606275dbd0f6774d0d49da10c61 languageName: node linkType: hard @@ -6063,9 +6081,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/types@npm:2.13.0" +"@walletconnect/types@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/types@npm:2.17.0" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" @@ -6073,46 +6091,48 @@ __metadata: "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" events: "npm:3.3.0" - checksum: 9962284daf92d6b27a009b90b908518b3f028f10f2168ddbc37ad2cb2b20cb0e65d170aa4343e2ea445c519cf79e78264480e2b2c4ab9f974f2c15962db5b012 + checksum: bdc0c062da1edb4410882d9cfca1bb30eb0afd7caea90d5e7a66eaf15e28380e9ef97635cd5e5a017947f4c814c1f780622b4d8946b11a335d415ae066ec7ade languageName: node linkType: hard -"@walletconnect/universal-provider@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/universal-provider@npm:2.13.0" +"@walletconnect/universal-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/universal-provider@npm:2.17.0" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.13.0" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 79d14cdce74054859f26f69a17215c59367d961d0f36e7868601ed98030bd0636b3806dd68b76cc66ec4a70d5f6ec107fbe18bb6a1022a5161ea6d71810a0ed9 + checksum: 7c1afc79054db5add4e937d7adaadb4fc26aecffb5d749d388418fa5d4eb153807ab4de301b642cd80669b4e5c6bcae917f18cf5ce8696d87da8b3705b60d1ec languageName: node linkType: hard -"@walletconnect/utils@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/utils@npm:2.13.0" +"@walletconnect/utils@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/utils@npm:2.17.0" dependencies: "@stablelib/chacha20poly1305": "npm:1.0.1" "@stablelib/hkdf": "npm:1.0.1" "@stablelib/random": "npm:1.0.2" "@stablelib/sha256": "npm:1.0.1" "@stablelib/x25519": "npm:1.0.3" - "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" "@walletconnect/window-getters": "npm:1.0.1" "@walletconnect/window-metadata": "npm:1.0.1" detect-browser: "npm:5.3.0" + elliptic: "npm:^6.5.7" query-string: "npm:7.1.3" uint8arrays: "npm:3.1.0" - checksum: 2dbdb9ed790492411eb5c4e6b06aa511f6c0204c4ff283ecb5a4d339bb1bf3da033ef3a0c0af66b94df0553676f408222c2feca8c601b0554be2bbfbef43d6ec + checksum: d1da74b2cd7af35f16d735fe408cfc820c611b2709bd00899e4e91b0b0a6dcd8f344f97df34d0ef8cabc121619a40b62118ffa2aa233ddba9863d1ba23480a0c languageName: node linkType: hard @@ -6186,24 +6206,24 @@ __metadata: languageName: node linkType: hard -"abitype@npm:0.9.8": - version: 0.9.8 - resolution: "abitype@npm:0.9.8" +"abitype@npm:1.0.5": + version: 1.0.5 + resolution: "abitype@npm:1.0.5" peerDependencies: typescript: ">=5.0.4" - zod: ^3 >=3.19.1 + zod: ^3 >=3.22.0 peerDependenciesMeta: typescript: optional: true zod: optional: true - checksum: ec559461d901d456820faf307e21b2c129583d44f4c68257ed9d0d44eae461114a7049046e715e069bc6fa70c410f644e06bdd2c798ac30d0ada794cd2a6c51e + checksum: dc954877fba19e2b7a70f1025807d69fa5aabec8bd58ce94e68d1a5ec1697fff3fe5214b4392508db7191762150f19a2396cf66ffb1d3ba8c1f37a89fd25e598 languageName: node linkType: hard -"abitype@npm:1.0.5": - version: 1.0.5 - resolution: "abitype@npm:1.0.5" +"abitype@npm:1.0.6": + version: 1.0.6 + resolution: "abitype@npm:1.0.6" peerDependencies: typescript: ">=5.0.4" zod: ^3 >=3.22.0 @@ -6212,7 +6232,7 @@ __metadata: optional: true zod: optional: true - checksum: dc954877fba19e2b7a70f1025807d69fa5aabec8bd58ce94e68d1a5ec1697fff3fe5214b4392508db7191762150f19a2396cf66ffb1d3ba8c1f37a89fd25e598 + checksum: 30ca97010bbf34b9aaed401858eeb6bc30419f7ff11eb34adcb243522dd56c9d8a9d3d406aa5d4f60a7c263902f5136043005698e3f073ea882a4922d43a2929 languageName: node linkType: hard @@ -7875,13 +7895,6 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 - languageName: node - linkType: hard - "define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" @@ -8110,14 +8123,15 @@ __metadata: languageName: node linkType: hard -"eciesjs@npm:^0.3.15": - version: 0.3.19 - resolution: "eciesjs@npm:0.3.19" +"eciesjs@npm:^0.4.8": + version: 0.4.10 + resolution: "eciesjs@npm:0.4.10" dependencies: - "@types/secp256k1": "npm:^4.0.6" - futoin-hkdf: "npm:^1.5.3" - secp256k1: "npm:^5.0.0" - checksum: 8fc86c7675f0e7bb169c546b5422992d52bbbeeeea6abb8e958815b09138873d195a00c708ffa239da29160344b594858ee0d04b3010598b25426029ec75b1c1 + "@ecies/ciphers": "npm:^0.2.0" + "@noble/ciphers": "npm:^1.0.0" + "@noble/curves": "npm:^1.6.0" + "@noble/hashes": "npm:^1.5.0" + checksum: f9e0603a839b763c1bb0a00a64686d553f2d8c10efcfab57461d9e052ebacc80dca0e28cbad8548015a99bee90c60cb085486be4c44261283535873d97aba59e languageName: node linkType: hard @@ -8135,9 +8149,9 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.4": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" +"elliptic@npm:^6.5.7": + version: 6.6.0 + resolution: "elliptic@npm:6.6.0" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -8146,7 +8160,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 799959b6c54ea3564e8961f35abdf8c77e37617f3051614b05ab1fb6a04ddb65bd1caa75ed1bae375b15dda312a0f79fed26ebe76ecf05c5a7af244152a601b8 + checksum: 42eb3492e218017bf8923a5d14a86f414952f2f771361805b3ae9f380923b5da53e203d0d92be95cb0a248858a78db7db5934a346e268abb757e6fe561d401c9 languageName: node linkType: hard @@ -9289,13 +9303,6 @@ __metadata: languageName: node linkType: hard -"futoin-hkdf@npm:^1.5.3": - version: 1.5.3 - resolution: "futoin-hkdf@npm:1.5.3" - checksum: fe87b50d2ac125ca2074e92588ca1df5016e9657267363cb77d8287080639dc31f90e7740f4737aa054c3e687b2ab3456f9b5c55950b94cd2c2010bc441aa5ae - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -10171,15 +10178,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc - languageName: node - linkType: hard - "is-docker@npm:^3.0.0": version: 3.0.0 resolution: "is-docker@npm:3.0.0" @@ -10436,15 +10434,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: "npm:^2.0.0" - checksum: a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e - languageName: node - linkType: hard - "is-wsl@npm:^3.1.0": version: 3.1.0 resolution: "is-wsl@npm:3.1.0" @@ -10498,31 +10487,21 @@ __metadata: languageName: node linkType: hard -"isomorphic-unfetch@npm:3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: "npm:^2.6.1" - unfetch: "npm:^4.2.0" - checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 - languageName: node - linkType: hard - -"isows@npm:1.0.3": - version: 1.0.3 - resolution: "isows@npm:1.0.3" +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" peerDependencies: ws: "*" - checksum: adec15db704bb66615dd8ef33f889d41ae2a70866b21fa629855da98cc82a628ae072ee221fe9779a9a19866cad2a3e72593f2d161a0ce0e168b4484c7df9cd2 + checksum: 46f43b07edcf148acba735ddfc6ed985e1e124446043ea32b71023e67671e46619c8818eda8c34a9ac91cb37c475af12a3aeeee676a88a0aceb5d67a3082313f languageName: node linkType: hard -"isows@npm:1.0.4": - version: 1.0.4 - resolution: "isows@npm:1.0.4" +"isows@npm:1.0.6": + version: 1.0.6 + resolution: "isows@npm:1.0.6" peerDependencies: ws: "*" - checksum: 46f43b07edcf148acba735ddfc6ed985e1e124446043ea32b71023e67671e46619c8818eda8c34a9ac91cb37c475af12a3aeeee676a88a0aceb5d67a3082313f + checksum: f89338f63ce2f497d6cd0f86e42c634209328ebb43b3bdfdc85d8f1589ee75f02b7e6d9e1ba274101d0f6f513b1b8cbe6985e6542b4aaa1f0c5fd50d9c1be95c languageName: node linkType: hard @@ -12219,15 +12198,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" - dependencies: - node-gyp: "npm:latest" - checksum: 0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d - languageName: node - linkType: hard - "node-addon-api@npm:^7.0.0": version: 7.1.0 resolution: "node-addon-api@npm:7.1.0" @@ -12253,7 +12223,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": +"node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.12": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -12553,17 +12523,6 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.4.0": - version: 8.4.2 - resolution: "open@npm:8.4.2" - dependencies: - define-lazy-prop: "npm:^2.0.0" - is-docker: "npm:^2.1.1" - is-wsl: "npm:^2.2.0" - checksum: bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 - languageName: node - linkType: hard - "optimal@npm:^5.1.1": version: 5.1.1 resolution: "optimal@npm:5.1.1" @@ -12950,15 +12909,6 @@ __metadata: languageName: node linkType: hard -"permissionless@npm:^0.1.29": - version: 0.1.38 - resolution: "permissionless@npm:0.1.38" - peerDependencies: - viem: ^2.14.1 - checksum: 332ef57d9124dd90ec43b8ba986494b99ceb075f0b57dc3c3c270185f00746b5473bbc84dc5658de4d2551c3759de03fd81a5da0357a0839fa6bc624a5ef36c8 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.0.1 resolution: "picocolors@npm:1.0.1" @@ -14148,25 +14098,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-visualizer@npm:^5.9.2": - version: 5.12.0 - resolution: "rollup-plugin-visualizer@npm:5.12.0" - dependencies: - open: "npm:^8.4.0" - picomatch: "npm:^2.3.1" - source-map: "npm:^0.7.4" - yargs: "npm:^17.5.1" - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true - bin: - rollup-plugin-visualizer: dist/bin/cli.js - checksum: 0e44a641223377ebb472bb10f2b22efa773b5f6fbe8d54f197f07c68d7a432cbf00abad79a0aa1570f70c673c792f24700d926d663ed9a4d0ad8406ae5a0f4e4 - languageName: node - linkType: hard - "rollup@npm:^4.13.0, rollup@npm:^4.9.6": version: 4.18.1 resolution: "rollup@npm:4.18.1" @@ -14387,18 +14318,6 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:^5.0.0": - version: 5.0.0 - resolution: "secp256k1@npm:5.0.0" - dependencies: - elliptic: "npm:^6.5.4" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: b9ab4c952babfe6103978b2f656265041ebe09b8a91b26a796cbcbe04d2252e28e12ec50d5ed3006bf2ca5feef6edcbd71c7c85122615f5ffbcd1acdd564f77f - languageName: node - linkType: hard - "semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -14769,13 +14688,6 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.7.4": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc - languageName: node - linkType: hard - "space-separated-tokens@npm:^2.0.0": version: 2.0.2 resolution: "space-separated-tokens@npm:2.0.2" @@ -15727,13 +15639,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -16110,24 +16015,25 @@ __metadata: languageName: node linkType: hard -"viem@npm:^1.0.0": - version: 1.21.4 - resolution: "viem@npm:1.21.4" +"viem@npm:^2.1.1, viem@npm:^2.21.33": + version: 2.21.35 + resolution: "viem@npm:2.21.35" dependencies: - "@adraffy/ens-normalize": "npm:1.10.0" - "@noble/curves": "npm:1.2.0" - "@noble/hashes": "npm:1.3.2" - "@scure/bip32": "npm:1.3.2" - "@scure/bip39": "npm:1.2.1" - abitype: "npm:0.9.8" - isows: "npm:1.0.3" - ws: "npm:8.13.0" + "@adraffy/ens-normalize": "npm:1.11.0" + "@noble/curves": "npm:1.6.0" + "@noble/hashes": "npm:1.5.0" + "@scure/bip32": "npm:1.5.0" + "@scure/bip39": "npm:1.4.0" + abitype: "npm:1.0.6" + isows: "npm:1.0.6" + webauthn-p256: "npm:0.0.10" + ws: "npm:8.18.0" peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: 8b29c790181e44c4c95b9ffed1a8c1b6c2396eb949b95697cc390ca8c49d88ef9e2cd56bd4800b90a9bbc93681ae8d63045fc6fa06e00d84f532bef77967e751 + checksum: d35c0004aa46099c45fdde142f074da124246cf9b58304246bf29c4ddd9218a1114ebc9eae08e7907238daabee6bb870fbf72219d5655c9980cd377c8e66941d languageName: node linkType: hard @@ -16152,27 +16058,6 @@ __metadata: languageName: node linkType: hard -"viem@npm:^2.17.4": - version: 2.17.4 - resolution: "viem@npm:2.17.4" - dependencies: - "@adraffy/ens-normalize": "npm:1.10.0" - "@noble/curves": "npm:1.4.0" - "@noble/hashes": "npm:1.4.0" - "@scure/bip32": "npm:1.4.0" - "@scure/bip39": "npm:1.3.0" - abitype: "npm:1.0.5" - isows: "npm:1.0.4" - ws: "npm:8.17.1" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8e44aaaba9865500f74be60e5e77473884a2157963114ec9cec491084bcc4f487ba296a473f6ebb7213ba21732727a98090e44dda4f17c5869f0f86faf48f214 - languageName: node - linkType: hard - "vite-node@npm:2.0.5": version: 2.0.5 resolution: "vite-node@npm:2.0.5" @@ -16286,12 +16171,12 @@ __metadata: languageName: node linkType: hard -"wagmi@npm:^2.11.0": - version: 2.11.0 - resolution: "wagmi@npm:2.11.0" +"wagmi@npm:^2.12.24": + version: 2.12.25 + resolution: "wagmi@npm:2.12.25" dependencies: - "@wagmi/connectors": "npm:5.0.24" - "@wagmi/core": "npm:2.12.0" + "@wagmi/connectors": "npm:5.3.3" + "@wagmi/core": "npm:2.14.1" use-sync-external-store: "npm:1.2.0" peerDependencies: "@tanstack/react-query": ">=5.0.0" @@ -16301,7 +16186,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 1b7fc33d5505f89537005f3db9deec1289dba062d1670058e1a3af70b4fb72a78154d551ea5fba48cc7d0448651f6e5a9225464a35572ca0c5e3646cb96898b0 + checksum: 18510c1a7528c28b013130ec84fefc5792ee3d4105d60b0b598075b5b6620d51ad0e890e936c6e549e44de4eb6a36e975d14745551dcff3d1d8a963e4d29b8df languageName: node linkType: hard @@ -16358,6 +16243,16 @@ __metadata: languageName: node linkType: hard +"webauthn-p256@npm:0.0.10": + version: 0.0.10 + resolution: "webauthn-p256@npm:0.0.10" + dependencies: + "@noble/curves": "npm:^1.4.0" + "@noble/hashes": "npm:^1.4.0" + checksum: 27d836d81a1fec24a31d2d9b652f8ff6876b51940d1003bbd14dc5cfa57c58d84223b5a4eece229516522fd997bc0bc7be618ac42b129fb5fa42fa530060b16d + languageName: node + linkType: hard + "webextension-polyfill@npm:>=0.10.0 <1.0": version: 0.12.0 resolution: "webextension-polyfill@npm:0.12.0" @@ -16636,9 +16531,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" +"ws@npm:8.17.1, ws@npm:~8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16647,13 +16542,13 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + checksum: f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe languageName: node linkType: hard -"ws@npm:8.17.1, ws@npm:~8.17.1": - version: 8.17.1 - resolution: "ws@npm:8.17.1" +"ws@npm:8.18.0, ws@npm:^8.17.0, ws@npm:^8.2.3": + version: 8.18.0 + resolution: "ws@npm:8.18.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16662,7 +16557,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + checksum: 25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 languageName: node linkType: hard @@ -16681,21 +16576,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.17.0, ws@npm:^8.2.3": - version: 8.18.0 - resolution: "ws@npm:8.18.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 - languageName: node - linkType: hard - "xml-name-validator@npm:^5.0.0": version: 5.0.0 resolution: "xml-name-validator@npm:5.0.0" @@ -16811,7 +16691,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.5.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -16842,15 +16722,14 @@ __metadata: languageName: node linkType: hard -"zustand@npm:4.4.1": - version: 4.4.1 - resolution: "zustand@npm:4.4.1" - dependencies: - use-sync-external-store: "npm:1.2.0" +"zustand@npm:5.0.0": + version: 5.0.0 + resolution: "zustand@npm:5.0.0" peerDependencies: - "@types/react": ">=16.8" - immer: ">=9.0" - react: ">=16.8" + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" peerDependenciesMeta: "@types/react": optional: true @@ -16858,6 +16737,8 @@ __metadata: optional: true react: optional: true - checksum: c119273886e5cdbd7a9f80c9e0fee8a2c736bb6428e283b25c6dfd428789a95e10b6ed6b18553c955ce0d5dd62e2f4a84af3e2a41f31fdb34fd25462d2b19a8c + use-sync-external-store: + optional: true + checksum: 7546df78aa512f1d2271e238c44699c0ac4bc57f12ae46fcfe8ba1e8a97686fc690596e654101acfabcd706099aa5d3519fc3f22d32b3082baa60699bb333e9a languageName: node linkType: hard