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.
- package/dist/cjs/ai/chat.js +55 -0
- package/dist/cjs/ai/chat.js.map +1 -0
- package/dist/cjs/ai/common.js +76 -0
- package/dist/cjs/ai/common.js.map +1 -0
- package/dist/cjs/ai/execute.js +67 -0
- package/dist/cjs/ai/execute.js.map +1 -0
- package/dist/cjs/ai/index.js +8 -0
- package/dist/cjs/ai/index.js.map +1 -0
- package/dist/cjs/analytics/track/pay.js +1 -0
- package/dist/cjs/analytics/track/pay.js.map +1 -1
- package/dist/cjs/chains/chain-definitions/mode.js +19 -0
- package/dist/cjs/chains/chain-definitions/mode.js.map +1 -0
- package/dist/cjs/contract/deployment/zksync/implementations.js +4 -0
- package/dist/cjs/contract/deployment/zksync/implementations.js.map +1 -1
- package/dist/cjs/exports/ai.js +5 -0
- package/dist/cjs/exports/ai.js.map +1 -0
- package/dist/cjs/exports/chains.js +3 -1
- package/dist/cjs/exports/chains.js.map +1 -1
- package/dist/cjs/exports/wallets/engine.js +6 -0
- package/dist/cjs/exports/wallets/engine.js.map +1 -0
- package/dist/cjs/extensions/prebuilts/deploy-published.js +2 -2
- package/dist/cjs/gas/fee-data.js +1 -0
- package/dist/cjs/gas/fee-data.js.map +1 -1
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +34 -1
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +3 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +3 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/cjs/utils/extensions/drops/get-claim-params.js +1 -2
- package/dist/cjs/utils/extensions/drops/get-claim-params.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/connection/autoConnect.js +1 -0
- package/dist/cjs/wallets/connection/autoConnect.js.map +1 -1
- package/dist/cjs/wallets/engine/index.js +143 -0
- package/dist/cjs/wallets/engine/index.js.map +1 -0
- package/dist/cjs/wallets/smart/lib/signing.js +1 -1
- package/dist/esm/ai/chat.js +52 -0
- package/dist/esm/ai/chat.js.map +1 -0
- package/dist/esm/ai/common.js +73 -0
- package/dist/esm/ai/common.js.map +1 -0
- package/dist/esm/ai/execute.js +64 -0
- package/dist/esm/ai/execute.js.map +1 -0
- package/dist/esm/ai/index.js +3 -0
- package/dist/esm/ai/index.js.map +1 -0
- package/dist/esm/analytics/track/pay.js +1 -0
- package/dist/esm/analytics/track/pay.js.map +1 -1
- package/dist/esm/chains/chain-definitions/mode.js +16 -0
- package/dist/esm/chains/chain-definitions/mode.js.map +1 -0
- package/dist/esm/contract/deployment/zksync/implementations.js +4 -0
- package/dist/esm/contract/deployment/zksync/implementations.js.map +1 -1
- package/dist/esm/exports/ai.js +2 -0
- package/dist/esm/exports/ai.js.map +1 -0
- package/dist/esm/exports/chains.js +1 -0
- package/dist/esm/exports/chains.js.map +1 -1
- package/dist/esm/exports/wallets/engine.js +2 -0
- package/dist/esm/exports/wallets/engine.js.map +1 -0
- package/dist/esm/extensions/prebuilts/deploy-published.js +2 -2
- package/dist/esm/gas/fee-data.js +1 -0
- package/dist/esm/gas/fee-data.js.map +1 -1
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +34 -1
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js +3 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js +3 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/esm/utils/extensions/drops/get-claim-params.js +1 -2
- package/dist/esm/utils/extensions/drops/get-claim-params.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/connection/autoConnect.js +1 -0
- package/dist/esm/wallets/connection/autoConnect.js.map +1 -1
- package/dist/esm/wallets/engine/index.js +140 -0
- package/dist/esm/wallets/engine/index.js.map +1 -0
- package/dist/esm/wallets/smart/lib/signing.js +1 -1
- package/dist/types/ai/chat.d.ts +50 -0
- package/dist/types/ai/chat.d.ts.map +1 -0
- package/dist/types/ai/common.d.ts +28 -0
- package/dist/types/ai/common.d.ts.map +1 -0
- package/dist/types/ai/execute.d.ts +53 -0
- package/dist/types/ai/execute.d.ts.map +1 -0
- package/dist/types/ai/index.d.ts +4 -0
- package/dist/types/ai/index.d.ts.map +1 -0
- package/dist/types/analytics/track/pay.d.ts +1 -0
- package/dist/types/analytics/track/pay.d.ts.map +1 -1
- package/dist/types/chains/chain-definitions/mode.d.ts +7 -0
- package/dist/types/chains/chain-definitions/mode.d.ts.map +1 -0
- package/dist/types/contract/deployment/zksync/implementations.d.ts.map +1 -1
- package/dist/types/exports/ai.d.ts +2 -0
- package/dist/types/exports/ai.d.ts.map +1 -0
- package/dist/types/exports/chains.d.ts +1 -0
- package/dist/types/exports/chains.d.ts.map +1 -1
- package/dist/types/exports/wallets/engine.d.ts +2 -0
- package/dist/types/exports/wallets/engine.d.ts.map +1 -0
- package/dist/types/extensions/prebuilts/deploy-published.d.ts +2 -2
- package/dist/types/gas/fee-data.d.ts.map +1 -1
- package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +2 -1
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +2 -1
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -1
- package/dist/types/utils/extensions/drops/get-claim-params.d.ts +1 -2
- package/dist/types/utils/extensions/drops/get-claim-params.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/connection/autoConnect.d.ts +1 -0
- package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -1
- package/dist/types/wallets/engine/index.d.ts +54 -0
- package/dist/types/wallets/engine/index.d.ts.map +1 -0
- package/dist/types/wallets/smart/lib/signing.d.ts +1 -1
- package/package.json +10 -2
- package/src/ai/chat.test.ts +42 -0
- package/src/ai/chat.ts +52 -0
- package/src/ai/common.ts +131 -0
- package/src/ai/execute.test.ts +48 -0
- package/src/ai/execute.ts +68 -0
- package/src/ai/index.ts +3 -0
- package/src/analytics/track/pay.ts +2 -0
- package/src/auth/verify-signature.test.ts +11 -6
- package/src/chains/chain-definitions/mode.ts +16 -0
- package/src/contract/deployment/zksync/implementations.ts +4 -0
- package/src/exports/ai.ts +1 -0
- package/src/exports/chains.ts +1 -0
- package/src/exports/wallets/engine.ts +4 -0
- package/src/extensions/prebuilts/deploy-published.ts +2 -2
- package/src/gas/fee-data.ts +1 -0
- package/src/react/core/hooks/transaction/useSendTransaction.ts +34 -1
- package/src/react/web/ui/prebuilt/NFT/description.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/media.test.tsx +14 -1
- package/src/react/web/ui/prebuilt/NFT/media.tsx +4 -1
- package/src/react/web/ui/prebuilt/NFT/name.test.tsx +44 -6
- package/src/react/web/ui/prebuilt/NFT/name.tsx +4 -1
- package/src/utils/extensions/drops/get-claim-params.ts +1 -2
- package/src/version.ts +1 -1
- package/src/wallets/connection/autoConnect.ts +1 -0
- package/src/wallets/engine/engine-account.test.ts +69 -0
- package/src/wallets/engine/index.ts +198 -0
- 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,
|
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,
|
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
|
-
* @
|
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
|
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"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.
|
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,
|
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
|
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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "thirdweb",
|
3
|
-
"version": "5.
|
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.
|
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
|
+
}
|
package/src/ai/common.ts
ADDED
@@ -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
|
+
}
|
package/src/ai/index.ts
ADDED
@@ -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
|
-
|
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
|
-
|
111
|
+
() => {
|
111
112
|
const message = "Hakuna matata";
|
112
113
|
const wallet = smartWallet({
|
113
114
|
chain: ethereum,
|
114
115
|
gasless: true,
|
115
116
|
});
|
116
|
-
|
117
|
-
|
118
|
-
|
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";
|
package/src/exports/chains.ts
CHANGED
@@ -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";
|