thirdweb 5.84.0-nightly-0fdfb8aa778a344aa847503f668e48feb5f72548-20250115000312 → 5.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/cjs/ai/chat.js +55 -0
  2. package/dist/cjs/ai/chat.js.map +1 -0
  3. package/dist/cjs/ai/common.js +76 -0
  4. package/dist/cjs/ai/common.js.map +1 -0
  5. package/dist/cjs/ai/execute.js +67 -0
  6. package/dist/cjs/ai/execute.js.map +1 -0
  7. package/dist/cjs/ai/index.js +8 -0
  8. package/dist/cjs/ai/index.js.map +1 -0
  9. package/dist/cjs/analytics/track/pay.js +1 -0
  10. package/dist/cjs/analytics/track/pay.js.map +1 -1
  11. package/dist/cjs/chains/chain-definitions/mode.js +19 -0
  12. package/dist/cjs/chains/chain-definitions/mode.js.map +1 -0
  13. package/dist/cjs/contract/deployment/zksync/implementations.js +4 -0
  14. package/dist/cjs/contract/deployment/zksync/implementations.js.map +1 -1
  15. package/dist/cjs/exports/ai.js +5 -0
  16. package/dist/cjs/exports/ai.js.map +1 -0
  17. package/dist/cjs/exports/chains.js +3 -1
  18. package/dist/cjs/exports/chains.js.map +1 -1
  19. package/dist/cjs/exports/wallets/engine.js +6 -0
  20. package/dist/cjs/exports/wallets/engine.js.map +1 -0
  21. package/dist/cjs/extensions/prebuilts/deploy-published.js +2 -2
  22. package/dist/cjs/gas/fee-data.js +1 -0
  23. package/dist/cjs/gas/fee-data.js.map +1 -1
  24. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +34 -1
  25. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  26. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +1 -0
  27. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -1
  28. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +3 -1
  29. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -1
  30. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +3 -1
  31. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -1
  32. package/dist/cjs/utils/extensions/drops/get-claim-params.js +1 -2
  33. package/dist/cjs/utils/extensions/drops/get-claim-params.js.map +1 -1
  34. package/dist/cjs/version.js +1 -1
  35. package/dist/cjs/version.js.map +1 -1
  36. package/dist/cjs/wallets/connection/autoConnect.js +1 -0
  37. package/dist/cjs/wallets/connection/autoConnect.js.map +1 -1
  38. package/dist/cjs/wallets/engine/index.js +143 -0
  39. package/dist/cjs/wallets/engine/index.js.map +1 -0
  40. package/dist/cjs/wallets/smart/lib/signing.js +1 -1
  41. package/dist/esm/ai/chat.js +52 -0
  42. package/dist/esm/ai/chat.js.map +1 -0
  43. package/dist/esm/ai/common.js +73 -0
  44. package/dist/esm/ai/common.js.map +1 -0
  45. package/dist/esm/ai/execute.js +64 -0
  46. package/dist/esm/ai/execute.js.map +1 -0
  47. package/dist/esm/ai/index.js +3 -0
  48. package/dist/esm/ai/index.js.map +1 -0
  49. package/dist/esm/analytics/track/pay.js +1 -0
  50. package/dist/esm/analytics/track/pay.js.map +1 -1
  51. package/dist/esm/chains/chain-definitions/mode.js +16 -0
  52. package/dist/esm/chains/chain-definitions/mode.js.map +1 -0
  53. package/dist/esm/contract/deployment/zksync/implementations.js +4 -0
  54. package/dist/esm/contract/deployment/zksync/implementations.js.map +1 -1
  55. package/dist/esm/exports/ai.js +2 -0
  56. package/dist/esm/exports/ai.js.map +1 -0
  57. package/dist/esm/exports/chains.js +1 -0
  58. package/dist/esm/exports/chains.js.map +1 -1
  59. package/dist/esm/exports/wallets/engine.js +2 -0
  60. package/dist/esm/exports/wallets/engine.js.map +1 -0
  61. package/dist/esm/extensions/prebuilts/deploy-published.js +2 -2
  62. package/dist/esm/gas/fee-data.js +1 -0
  63. package/dist/esm/gas/fee-data.js.map +1 -1
  64. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +34 -1
  65. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  66. package/dist/esm/react/web/ui/prebuilt/NFT/description.js +1 -0
  67. package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -1
  68. package/dist/esm/react/web/ui/prebuilt/NFT/media.js +3 -1
  69. package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -1
  70. package/dist/esm/react/web/ui/prebuilt/NFT/name.js +3 -1
  71. package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -1
  72. package/dist/esm/utils/extensions/drops/get-claim-params.js +1 -2
  73. package/dist/esm/utils/extensions/drops/get-claim-params.js.map +1 -1
  74. package/dist/esm/version.js +1 -1
  75. package/dist/esm/version.js.map +1 -1
  76. package/dist/esm/wallets/connection/autoConnect.js +1 -0
  77. package/dist/esm/wallets/connection/autoConnect.js.map +1 -1
  78. package/dist/esm/wallets/engine/index.js +140 -0
  79. package/dist/esm/wallets/engine/index.js.map +1 -0
  80. package/dist/esm/wallets/smart/lib/signing.js +1 -1
  81. package/dist/types/ai/chat.d.ts +50 -0
  82. package/dist/types/ai/chat.d.ts.map +1 -0
  83. package/dist/types/ai/common.d.ts +28 -0
  84. package/dist/types/ai/common.d.ts.map +1 -0
  85. package/dist/types/ai/execute.d.ts +53 -0
  86. package/dist/types/ai/execute.d.ts.map +1 -0
  87. package/dist/types/ai/index.d.ts +4 -0
  88. package/dist/types/ai/index.d.ts.map +1 -0
  89. package/dist/types/analytics/track/pay.d.ts +1 -0
  90. package/dist/types/analytics/track/pay.d.ts.map +1 -1
  91. package/dist/types/chains/chain-definitions/mode.d.ts +7 -0
  92. package/dist/types/chains/chain-definitions/mode.d.ts.map +1 -0
  93. package/dist/types/contract/deployment/zksync/implementations.d.ts.map +1 -1
  94. package/dist/types/exports/ai.d.ts +2 -0
  95. package/dist/types/exports/ai.d.ts.map +1 -0
  96. package/dist/types/exports/chains.d.ts +1 -0
  97. package/dist/types/exports/chains.d.ts.map +1 -1
  98. package/dist/types/exports/wallets/engine.d.ts +2 -0
  99. package/dist/types/exports/wallets/engine.d.ts.map +1 -0
  100. package/dist/types/extensions/prebuilts/deploy-published.d.ts +2 -2
  101. package/dist/types/gas/fee-data.d.ts.map +1 -1
  102. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  103. package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -1
  104. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +2 -1
  105. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -1
  106. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +2 -1
  107. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -1
  108. package/dist/types/utils/extensions/drops/get-claim-params.d.ts +1 -2
  109. package/dist/types/utils/extensions/drops/get-claim-params.d.ts.map +1 -1
  110. package/dist/types/version.d.ts +1 -1
  111. package/dist/types/version.d.ts.map +1 -1
  112. package/dist/types/wallets/connection/autoConnect.d.ts +1 -0
  113. package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -1
  114. package/dist/types/wallets/engine/index.d.ts +54 -0
  115. package/dist/types/wallets/engine/index.d.ts.map +1 -0
  116. package/dist/types/wallets/smart/lib/signing.d.ts +1 -1
  117. package/package.json +10 -2
  118. package/src/ai/chat.test.ts +42 -0
  119. package/src/ai/chat.ts +52 -0
  120. package/src/ai/common.ts +131 -0
  121. package/src/ai/execute.test.ts +48 -0
  122. package/src/ai/execute.ts +68 -0
  123. package/src/ai/index.ts +3 -0
  124. package/src/analytics/track/pay.ts +2 -0
  125. package/src/auth/verify-signature.test.ts +11 -6
  126. package/src/chains/chain-definitions/mode.ts +16 -0
  127. package/src/contract/deployment/zksync/implementations.ts +4 -0
  128. package/src/exports/ai.ts +1 -0
  129. package/src/exports/chains.ts +1 -0
  130. package/src/exports/wallets/engine.ts +4 -0
  131. package/src/extensions/prebuilts/deploy-published.ts +2 -2
  132. package/src/gas/fee-data.ts +1 -0
  133. package/src/react/core/hooks/transaction/useSendTransaction.ts +34 -1
  134. package/src/react/web/ui/prebuilt/NFT/description.tsx +1 -0
  135. package/src/react/web/ui/prebuilt/NFT/media.test.tsx +14 -1
  136. package/src/react/web/ui/prebuilt/NFT/media.tsx +4 -1
  137. package/src/react/web/ui/prebuilt/NFT/name.test.tsx +44 -6
  138. package/src/react/web/ui/prebuilt/NFT/name.tsx +4 -1
  139. package/src/utils/extensions/drops/get-claim-params.ts +1 -2
  140. package/src/version.ts +1 -1
  141. package/src/wallets/connection/autoConnect.ts +1 -0
  142. package/src/wallets/engine/engine-account.test.ts +69 -0
  143. package/src/wallets/engine/index.ts +198 -0
  144. package/src/wallets/smart/lib/signing.ts +1 -1
@@ -113,10 +113,11 @@ export declare function NFTMedia({ loadingComponent, fallbackComponent, queryOpt
113
113
  * @internal
114
114
  */
115
115
  export declare function getQueryKey(props: {
116
+ contractAddress: string;
116
117
  chainId: number;
117
118
  tokenId: bigint;
118
119
  mediaResolver?: NFTMediaInfo | (() => NFTMediaInfo) | (() => Promise<NFTMediaInfo>);
119
- }): readonly ["_internal_nft_media_", number, string, {
120
+ }): readonly ["_internal_nft_media_", number, string, string, {
120
121
  readonly resolver: string | NFTMediaInfo | undefined;
121
122
  }];
122
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/media.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,kBAAkB,EAClB,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAC5B,GAAG;IACF,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IAC3E;;;;OAIG;IACH,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,GAAG,kBAAkB,EACtB,EAAE,aAAa,qDA6Bf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CACnC;;GAeA;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CA2BvD"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/media.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,kBAAkB,EAClB,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAC5B,GAAG;IACF,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IAC3E;;;;OAIG;IACH,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,GAAG,kBAAkB,EACtB,EAAE,aAAa,qDA8Bf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CACnC;;GAgBA;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,aAAa,CAAC,EACV,YAAY,GACZ,CAAC,MAAM,YAAY,CAAC,GACpB,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CA2BvD"}
@@ -81,10 +81,11 @@ export declare function NFTName({ loadingComponent, fallbackComponent, queryOpti
81
81
  * @internal
82
82
  */
83
83
  export declare function getQueryKey(props: {
84
+ contractAddress: string;
84
85
  chainId: number;
85
86
  tokenId: bigint;
86
87
  nameResolver?: string | (() => string) | (() => Promise<string>);
87
- }): readonly ["_internal_nft_name_", number, string, {
88
+ }): readonly ["_internal_nft_name_", number, string, string, {
88
89
  readonly resolver: string | undefined;
89
90
  }];
90
91
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/name.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,MAAM,WAAW,YACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC/D,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IACrE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,OAAO,CAAC,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,YAAY,qDAsBd;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CAClE;;GAeA;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB"}
1
+ {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/name.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,MAAM,WAAW,YACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC/D,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IACrE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,OAAO,CAAC,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,YAAY,qDAuBd;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CAClE;;GAgBA;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB"}
@@ -20,7 +20,6 @@ export type GetClaimParamsOptions = {
20
20
  * Get the claim parameters for a given drop
21
21
  * @param options - The options for getting the claim parameters
22
22
  * @returns The claim parameters
23
- * @extension ERC1155
24
23
  * @example
25
24
  * ```ts
26
25
  * import { getClaimParams } from "thirdweb/utils";
@@ -33,7 +32,7 @@ export type GetClaimParamsOptions = {
33
32
  * tokenId: 0n,
34
33
  * });
35
34
  * ```
36
- * @extension COMMON
35
+ * @utils
37
36
  */
38
37
  export declare function getClaimParams(options: GetClaimParamsOptions): Promise<{
39
38
  receiver: string;
@@ -1 +1 @@
1
- {"version":3,"file":"get-claim-params.d.ts","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/get-claim-params.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,CACA;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB;;;;;;;UA8IjD,GAAG;;;;;;;;GAMpB"}
1
+ {"version":3,"file":"get-claim-params.d.ts","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/get-claim-params.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,CACA;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB;;;;;;;UA8IjD,GAAG;;;;;;;;GAMpB"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.84.0-nightly-0fdfb8aa778a344aa847503f668e48feb5f72548-20250115000312";
1
+ export declare const version = "5.85.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,2EAA2E,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -20,6 +20,7 @@ import type { AutoConnectProps } from "./types.js";
20
20
  * @param props - The auto-connect configuration properties
21
21
  * @param props.wallets - Array of wallet instances to consider for auto-connection
22
22
  * @returns {boolean} a promise resolving to true or false depending on whether the auto connect function connected to a wallet or not
23
+ * @walletConnection
23
24
  */
24
25
  export declare const autoConnect: (props: AutoConnectProps & {
25
26
  wallets?: Wallet[];
@@ -1 +1 @@
1
- {"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../../../src/wallets/connection/autoConnect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,UACf,gBAAgB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,qBAwBF,CAAC"}
1
+ {"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../../../src/wallets/connection/autoConnect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,UACf,gBAAgB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,qBAwBF,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { Chain } from "../../chains/types.js";
2
+ import type { Account } from "../interfaces/wallet.js";
3
+ /**
4
+ * Options for creating an engine account.
5
+ */
6
+ export type EngineAccountOptions = {
7
+ /**
8
+ * The URL of your engine instance.
9
+ */
10
+ engineUrl: string;
11
+ /**
12
+ * The auth token to use with the engine instance.
13
+ */
14
+ authToken: string;
15
+ /**
16
+ * The backend wallet to use for sending transactions inside engine.
17
+ */
18
+ walletAddress: string;
19
+ /**
20
+ * The chain to use for signing messages and typed data (smart backend wallet only).
21
+ */
22
+ chain?: Chain;
23
+ };
24
+ /**
25
+ * Creates an account that uses your engine backend wallet for sending transactions and signing messages.
26
+ *
27
+ * @param options - The options for the engine account.
28
+ * @returns An account that uses your engine backend wallet.
29
+ *
30
+ * @beta
31
+ * @wallet
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { engineAccount } from "thirdweb/wallets/engine";
36
+ *
37
+ * const engineAcc = engineAccount({
38
+ * engineUrl: "https://engine.thirdweb.com",
39
+ * authToken: "your-auth-token",
40
+ * walletAddress: "0x...",
41
+ * });
42
+ *
43
+ * // then use the account as you would any other account
44
+ * const transaction = claimTo({
45
+ * contract,
46
+ * to: "0x...",
47
+ * quantity: 1n,
48
+ * });
49
+ * const result = await sendTransaction({ transaction, account: engineAcc });
50
+ * console.log("Transaction sent:", result.transactionHash);
51
+ * ```
52
+ */
53
+ export declare function engineAccount(options: EngineAccountOptions): Account;
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/wallets/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,yBAAyB,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CA6IpE"}
@@ -48,7 +48,7 @@ export declare function confirmContractDeployment(args: {
48
48
  * });
49
49
  * ```
50
50
  *
51
- * @wallets
51
+ * @wallet
52
52
  */
53
53
  export declare function deploySmartAccount(args: {
54
54
  smartAccount: Account;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.84.0-nightly-0fdfb8aa778a344aa847503f668e48feb5f72548-20250115000312",
3
+ "version": "5.85.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -123,6 +123,11 @@
123
123
  "import": "./dist/esm/exports/social.js",
124
124
  "default": "./dist/cjs/exports/social.js"
125
125
  },
126
+ "./ai": {
127
+ "types": "./dist/types/exports/ai.d.ts",
128
+ "import": "./dist/esm/exports/ai.js",
129
+ "default": "./dist/cjs/exports/ai.js"
130
+ },
126
131
  "./package.json": "./package.json"
127
132
  },
128
133
  "typesVersions": {
@@ -180,6 +185,9 @@
180
185
  ],
181
186
  "social": [
182
187
  "./dist/types/exports/social.d.ts"
188
+ ],
189
+ "ai": [
190
+ "./dist/types/exports/ai.d.ts"
183
191
  ]
184
192
  }
185
193
  },
@@ -330,7 +338,7 @@
330
338
  "prettier": "3.3.3",
331
339
  "react": "19.0.0",
332
340
  "react-dom": "19.0.0",
333
- "react-native": "0.76.5",
341
+ "react-native": "0.76.6",
334
342
  "react-native-aes-gcm-crypto": "0.2.2",
335
343
  "react-native-passkey": "3.0.0",
336
344
  "react-native-quick-crypto": "0.7.8",
@@ -0,0 +1,42 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { TEST_CLIENT } from "../../test/src/test-clients.js";
3
+ import { TEST_ACCOUNT_A, TEST_ACCOUNT_B } from "../../test/src/test-wallets.js";
4
+ import { sepolia } from "../chains/chain-definitions/sepolia.js";
5
+ import * as Nebula from "./index.js";
6
+
7
+ // reenable manually for nebula testing
8
+ describe.runIf(process.env.TW_SECRET_KEY).skip("chat", () => {
9
+ it("should respond with a message", async () => {
10
+ const response = await Nebula.chat({
11
+ client: TEST_CLIENT,
12
+ messages: [
13
+ {
14
+ role: "user",
15
+ content: `What's the symbol of this contract: 0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8`,
16
+ },
17
+ ],
18
+ contextFilter: {
19
+ chains: [sepolia],
20
+ },
21
+ });
22
+ expect(response.message).toContain("CAT");
23
+ });
24
+
25
+ it("should respond with a transaction", async () => {
26
+ const response = await Nebula.chat({
27
+ client: TEST_CLIENT,
28
+ messages: [
29
+ {
30
+ role: "user",
31
+ content: `send 0.0001 ETH on sepolia to ${TEST_ACCOUNT_B.address}`,
32
+ },
33
+ ],
34
+ account: TEST_ACCOUNT_A,
35
+ contextFilter: {
36
+ chains: [sepolia],
37
+ walletAddresses: [TEST_ACCOUNT_A.address],
38
+ },
39
+ });
40
+ expect(response.transactions.length).toBe(1);
41
+ });
42
+ });
package/src/ai/chat.ts ADDED
@@ -0,0 +1,52 @@
1
+ import { type Input, type Output, nebulaFetch } from "./common.js";
2
+
3
+ /**
4
+ * Chat with Nebula.
5
+ *
6
+ * @param input - The input for the chat.
7
+ * @returns The chat response.
8
+ * @beta This API is in early access and might change in the future.
9
+ * @nebula
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { Nebula } from "thirdweb/ai";
14
+ *
15
+ * const response = await Nebula.chat({
16
+ * client: TEST_CLIENT,
17
+ * message: "What's the symbol of this contract: 0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
18
+ * contextFilter: {
19
+ * chains: [sepolia],
20
+ * },
21
+ * });
22
+ * ```
23
+ *
24
+ * Multi message prompt:
25
+ *
26
+ * ```ts
27
+ * const response = await Nebula.chat({
28
+ * client,
29
+ * messages: [
30
+ * { role: "user", content: "What's my balance?" },
31
+ * { role: "assistant", content: "Your balance is 0.023 ETH" },
32
+ * { role: "user", content: "What about my NFTs?" },
33
+ * ],
34
+ * contextFilter: {
35
+ * chains: [sepolia],
36
+ * },
37
+ * });
38
+ * ```
39
+ *
40
+ * Extracting and sending transactions from a chat response:
41
+ *
42
+ * ```ts
43
+ * const response = await Nebula.chat({ ... });
44
+ * const transactions = response.transactions;
45
+ * for (const transaction of transactions) {
46
+ * await sendTransaction({ transaction, account });
47
+ * }
48
+ * ```
49
+ */
50
+ export async function chat(input: Input): Promise<Output> {
51
+ return nebulaFetch("chat", input);
52
+ }
@@ -0,0 +1,131 @@
1
+ import type { Chain } from "../chains/types.js";
2
+ import { getCachedChain } from "../chains/utils.js";
3
+ import type { ThirdwebClient } from "../client/client.js";
4
+ import {
5
+ type PreparedTransaction,
6
+ prepareTransaction,
7
+ } from "../transaction/prepare-transaction.js";
8
+ import type { Address } from "../utils/address.js";
9
+ import { toBigInt } from "../utils/bigint.js";
10
+ import type { Hex } from "../utils/encoding/hex.js";
11
+ import { getClientFetch } from "../utils/fetch.js";
12
+ import type { Account } from "../wallets/interfaces/wallet.js";
13
+
14
+ const NEBULA_API_URL = "https://nebula-api.thirdweb.com";
15
+
16
+ export type Input = {
17
+ client: ThirdwebClient;
18
+ account?: Account;
19
+ contextFilter?: {
20
+ chains?: Chain[];
21
+ walletAddresses?: string[];
22
+ contractAddresses?: string[];
23
+ };
24
+ sessionId?: string;
25
+ } & (
26
+ | {
27
+ messages: {
28
+ role: "user" | "assistant";
29
+ content: string;
30
+ }[];
31
+ }
32
+ | {
33
+ message: string;
34
+ }
35
+ );
36
+
37
+ export type Output = {
38
+ message: string;
39
+ sessionId: string;
40
+ transactions: PreparedTransaction[];
41
+ };
42
+
43
+ type ApiResponse = {
44
+ message: string;
45
+ session_id: string;
46
+ actions?: {
47
+ type: "init" | "presence" | "sign_transaction";
48
+ source: string;
49
+ data: string;
50
+ }[];
51
+ };
52
+
53
+ export async function nebulaFetch(
54
+ mode: "execute" | "chat",
55
+ input: Input,
56
+ ): Promise<Output> {
57
+ const fetch = getClientFetch(input.client);
58
+ const response = await fetch(`${NEBULA_API_URL}/${mode}`, {
59
+ method: "POST",
60
+ headers: {
61
+ "Content-Type": "application/json",
62
+ },
63
+ body: JSON.stringify({
64
+ ...("messages" in input
65
+ ? {
66
+ messages: input.messages,
67
+ }
68
+ : {
69
+ message: input.message,
70
+ }),
71
+ session_id: input.sessionId,
72
+ ...(input.account
73
+ ? {
74
+ execute_config: {
75
+ mode: "client",
76
+ signer_wallet_address: input.account.address,
77
+ },
78
+ }
79
+ : {}),
80
+ ...(input.contextFilter
81
+ ? {
82
+ context_filter: {
83
+ chain_ids:
84
+ input.contextFilter.chains?.map((c) => c.id.toString()) || [],
85
+ wallet_addresses:
86
+ input.contextFilter.walletAddresses ||
87
+ (input.account ? [input.account.address] : []),
88
+ contract_addresses: input.contextFilter.contractAddresses || [],
89
+ },
90
+ }
91
+ : {}),
92
+ }),
93
+ });
94
+ if (!response.ok) {
95
+ const error = await response.text();
96
+ throw new Error(`Nebula API error: ${error}`);
97
+ }
98
+ const data = (await response.json()) as ApiResponse;
99
+
100
+ // parse transactions if present
101
+ let transactions: PreparedTransaction[] = [];
102
+ if (data.actions) {
103
+ transactions = data.actions
104
+ .map((action) => {
105
+ // only parse sign_transaction actions
106
+ if (action.type === "sign_transaction") {
107
+ const tx = JSON.parse(action.data) as {
108
+ chainId: number;
109
+ to: Address | undefined;
110
+ value: Hex;
111
+ data: Hex;
112
+ };
113
+ return prepareTransaction({
114
+ chain: getCachedChain(tx.chainId),
115
+ client: input.client,
116
+ to: tx.to,
117
+ value: tx.value ? toBigInt(tx.value) : undefined,
118
+ data: tx.data,
119
+ });
120
+ }
121
+ return undefined;
122
+ })
123
+ .filter((tx) => tx !== undefined);
124
+ }
125
+
126
+ return {
127
+ message: data.message,
128
+ sessionId: data.session_id,
129
+ transactions,
130
+ };
131
+ }
@@ -0,0 +1,48 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { TEST_CLIENT } from "../../test/src/test-clients.js";
3
+ import { TEST_ACCOUNT_A, TEST_ACCOUNT_B } from "../../test/src/test-wallets.js";
4
+ import { sepolia } from "../chains/chain-definitions/sepolia.js";
5
+ import { getContract } from "../contract/contract.js";
6
+ import * as Nebula from "./index.js";
7
+
8
+ // reenable manually for nebula testing
9
+ describe.runIf(process.env.TW_SECRET_KEY).skip("execute", () => {
10
+ it("should execute a tx", async () => {
11
+ await expect(
12
+ Nebula.execute({
13
+ client: TEST_CLIENT,
14
+ message: `send 0.0001 ETH to ${TEST_ACCOUNT_B.address}`,
15
+ account: TEST_ACCOUNT_A,
16
+ contextFilter: {
17
+ chains: [sepolia],
18
+ walletAddresses: [TEST_ACCOUNT_A.address],
19
+ },
20
+ }),
21
+ ).rejects.toThrow(/insufficient funds for gas/); // shows that the tx was sent
22
+ });
23
+
24
+ // TODO make this work reliably
25
+ it("should execute a contract call", async () => {
26
+ const nftContract = getContract({
27
+ client: TEST_CLIENT,
28
+ chain: sepolia,
29
+ address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
30
+ });
31
+
32
+ const response = await Nebula.execute({
33
+ client: TEST_CLIENT,
34
+ messages: [
35
+ {
36
+ role: "user",
37
+ content: `approve 1 token of token id 0 to ${TEST_ACCOUNT_B.address} using the approve function`,
38
+ },
39
+ ],
40
+ account: TEST_ACCOUNT_A,
41
+ contextFilter: {
42
+ chains: [nftContract.chain],
43
+ contractAddresses: [nftContract.address],
44
+ },
45
+ });
46
+ expect(response.transactionHash).toBeDefined();
47
+ });
48
+ });
@@ -0,0 +1,68 @@
1
+ import { sendTransaction } from "../transaction/actions/send-transaction.js";
2
+ import type { SendTransactionResult } from "../transaction/types.js";
3
+ import type { Account } from "../wallets/interfaces/wallet.js";
4
+ import { type Input, nebulaFetch } from "./common.js";
5
+
6
+ /**
7
+ * Execute a transaction based on a prompt.
8
+ *
9
+ * @param input - The input for the transaction.
10
+ * @returns The transaction hash.
11
+ * @beta This API is in early access and might change in the future.
12
+ * @nebula
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { Nebula } from "thirdweb/ai";
17
+ *
18
+ * const wallet = createWallet("io.metamask");
19
+ * const account = wallet.connect({ client });
20
+ *
21
+ * const result = await Nebula.execute({
22
+ * client,
23
+ * account, // transactions will be sent from this account
24
+ * message: "send 0.0001 ETH to vitalik.eth",
25
+ * contextFilter: {
26
+ * chains: [sepolia],
27
+ * },
28
+ * });
29
+ * ```
30
+ *
31
+ * Multi message prompt:
32
+ *
33
+ * ```ts
34
+ * Nebula.execute({
35
+ * client,
36
+ * account,
37
+ * messages: [
38
+ * { role: "user", content: "What's the address of vitalik.eth" },
39
+ * {
40
+ * role: "assistant",
41
+ * content:
42
+ * "The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298",
43
+ * },
44
+ * { role: "user", content: "Send them 0.0001 ETH" },
45
+ * ],
46
+ * contextFilter: {
47
+ * chains: [sepolia],
48
+ * },
49
+ * });
50
+ * ```
51
+ */
52
+ export async function execute(
53
+ input: Input & { account: Account },
54
+ ): Promise<SendTransactionResult> {
55
+ const result = await nebulaFetch("execute", input);
56
+ // TODO: optionally only return the transaction without executing it?
57
+ if (result.transactions.length === 0) {
58
+ throw new Error(result.message);
59
+ }
60
+ const tx = result.transactions[0];
61
+ if (!tx) {
62
+ throw new Error(result.message);
63
+ }
64
+ return sendTransaction({
65
+ transaction: tx,
66
+ account: input.account,
67
+ });
68
+ }
@@ -0,0 +1,3 @@
1
+ export { chat } from "./chat.js";
2
+ export { execute } from "./execute.js";
3
+ export type { Input, Output } from "./common.js";
@@ -17,6 +17,7 @@ export async function trackPayEvent(args: {
17
17
  toAmount?: string;
18
18
  chainId?: number;
19
19
  dstChainId?: number;
20
+ error?: string;
20
21
  }) {
21
22
  return track({
22
23
  client: args.client,
@@ -32,6 +33,7 @@ export async function trackPayEvent(args: {
32
33
  amountWei: args.fromAmount,
33
34
  dstTokenAddress: args.toToken,
34
35
  dstChainId: args.chainId,
36
+ errorCode: args.error,
35
37
  },
36
38
  });
37
39
  }
@@ -1,10 +1,11 @@
1
1
  import * as ox__Bytes from "ox/Bytes";
2
- import { describe, expect, it, test } from "vitest";
2
+ import { beforeAll, describe, expect, it, test } from "vitest";
3
3
  import { FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
4
4
  import { TEST_CLIENT } from "../../test/src/test-clients.js";
5
5
  import { TEST_ACCOUNT_A } from "../../test/src/test-wallets.js";
6
6
  import { ethereum, mainnet } from "../chains/chain-definitions/ethereum.js";
7
7
  import { sepolia } from "../chains/chain-definitions/sepolia.js";
8
+ import type { Account } from "../wallets/interfaces/wallet.js";
8
9
  import { smartWallet } from "../wallets/smart/smart-wallet.js";
9
10
  import {
10
11
  verifyContractWalletSignature,
@@ -64,7 +65,7 @@ describe("verifyEOASignature", () => {
64
65
 
65
66
  describe.runIf(process.env.TW_SECRET_KEY)(
66
67
  "verifyContractWalletSignature",
67
- async () => {
68
+ () => {
68
69
  it("should verify a valid signature", async () => {
69
70
  expect(
70
71
  await verifySignature({
@@ -107,15 +108,19 @@ describe.runIf(process.env.TW_SECRET_KEY)(
107
108
 
108
109
  describe.runIf(process.env.TW_SECRET_KEY)(
109
110
  "verifyContractWalletSignature",
110
- async () => {
111
+ () => {
111
112
  const message = "Hakuna matata";
112
113
  const wallet = smartWallet({
113
114
  chain: ethereum,
114
115
  gasless: true,
115
116
  });
116
- const smartAccount = await wallet.connect({
117
- client: TEST_CLIENT,
118
- personalAccount: TEST_ACCOUNT_A,
117
+ let smartAccount: Account;
118
+
119
+ beforeAll(async () => {
120
+ smartAccount = await wallet.connect({
121
+ client: TEST_CLIENT,
122
+ personalAccount: TEST_ACCOUNT_A,
123
+ });
119
124
  });
120
125
 
121
126
  test("should verify a smart account signature", async () => {
@@ -0,0 +1,16 @@
1
+ import { defineChain } from "../utils.js";
2
+
3
+ /**
4
+ * @chain
5
+ */
6
+ export const mode = /* @__PURE__ */ defineChain({
7
+ id: 919,
8
+ name: "Mode",
9
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
10
+ blockExplorers: [
11
+ {
12
+ name: "Modescout",
13
+ url: "https://explorer.mode.network/",
14
+ },
15
+ ],
16
+ });
@@ -14,6 +14,9 @@ export const ZKSYNC_IMPLEMENTATIONS: Record<number, Record<string, string>> = {
14
14
  [37111]: {
15
15
  MarketplaceV3: "0x56Abb6a3f25DCcdaDa106191053b1CC54C196DEE",
16
16
  },
17
+ [555271]: {
18
+ MarketplaceV3: "0x9EB0830B0b10010F2a53383517A7D0B75531Bb1b",
19
+ },
17
20
  };
18
21
 
19
22
  export const ZKSYNC_WETH: Record<number, string> = {
@@ -21,4 +24,5 @@ export const ZKSYNC_WETH: Record<number, string> = {
21
24
  [324]: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
22
25
  [11124]: "0x9EDCde0257F2386Ce177C3a7FCdd97787F0D841d",
23
26
  [37111]: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16",
27
+ [555271]: "0xb0b8b267d44c64BA6dD1Daf442949887c85199f6",
24
28
  };
@@ -0,0 +1 @@
1
+ export * as Nebula from "../ai/index.js";
@@ -77,4 +77,5 @@ export { celoAlfajoresTestnet } from "../chains/chain-definitions/celo-alfajores
77
77
  export { fraxtalTestnet } from "../chains/chain-definitions/fraxtal-testnet.js";
78
78
  export { metalL2Testnet } from "../chains/chain-definitions/metal-l2-testnet.js";
79
79
  export { modeTestnet } from "../chains/chain-definitions/mode-testnet.js";
80
+ export { mode } from "../chains/chain-definitions/mode.js";
80
81
  export { soneiumMinato } from "../chains/chain-definitions/soneium-minato.js";
@@ -0,0 +1,4 @@
1
+ export {
2
+ type EngineAccountOptions,
3
+ engineAccount,
4
+ } from "../../wallets/engine/index.js";