thirdweb 5.105.20 → 5.105.22
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/extensions/erc1155/read/getOwnedNFTs.js +1 -0
- package/dist/cjs/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js +1 -0
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/cjs/insight/get-nfts.js +3 -3
- package/dist/cjs/insight/get-nfts.js.map +1 -1
- package/dist/cjs/insight/get-tokens.js +3 -2
- package/dist/cjs/insight/get-tokens.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useConnect.js +10 -1
- package/dist/cjs/react/core/hooks/wallets/useConnect.js.map +1 -1
- package/dist/cjs/transaction/actions/estimate-gas.js +3 -24
- package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-web.js +56 -0
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/cjs/wallets/create-wallet.js +62 -13
- package/dist/cjs/wallets/create-wallet.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-calls-status.js +40 -63
- package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-capabilities.js +14 -49
- package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/cjs/wallets/eip5792/send-calls.js +34 -48
- package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
- package/dist/cjs/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
- package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js +650 -5
- package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +3 -3
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +18 -0
- package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/cjs/wallets/injected/index.js +55 -0
- package/dist/cjs/wallets/injected/index.js.map +1 -1
- package/dist/cjs/wallets/smart/index.js +63 -2
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/smart/smart-wallet.js +1 -1
- package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/cjs/wallets/wallet-connect/qr-overlay.js +231 -0
- package/dist/cjs/wallets/wallet-connect/qr-overlay.js.map +1 -0
- package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js +1 -0
- package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js +1 -0
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/esm/insight/get-nfts.js +3 -3
- package/dist/esm/insight/get-nfts.js.map +1 -1
- package/dist/esm/insight/get-tokens.js +3 -2
- package/dist/esm/insight/get-tokens.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useConnect.js +10 -1
- package/dist/esm/react/core/hooks/wallets/useConnect.js.map +1 -1
- package/dist/esm/transaction/actions/estimate-gas.js +3 -24
- package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/coinbase-web.js +56 -0
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/esm/wallets/create-wallet.js +62 -13
- package/dist/esm/wallets/create-wallet.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-calls-status.js +39 -63
- package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-capabilities.js +13 -49
- package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/esm/wallets/eip5792/send-calls.js +33 -48
- package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/esm/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
- package/dist/esm/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
- package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js +650 -5
- package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +3 -3
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +18 -0
- package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/esm/wallets/injected/index.js +56 -1
- package/dist/esm/wallets/injected/index.js.map +1 -1
- package/dist/esm/wallets/smart/index.js +63 -2
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/smart/smart-wallet.js +1 -1
- package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/esm/wallets/wallet-connect/qr-overlay.js +228 -0
- package/dist/esm/wallets/wallet-connect/qr-overlay.js.map +1 -0
- package/dist/types/bridge/Webhook.d.ts +2 -2
- package/dist/types/insight/get-nfts.d.ts +1 -0
- package/dist/types/insight/get-nfts.d.ts.map +1 -1
- package/dist/types/insight/get-tokens.d.ts +1 -0
- package/dist/types/insight/get-tokens.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useConnect.d.ts +1 -0
- package/dist/types/react/core/hooks/wallets/useConnect.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts +1 -1
- package/dist/types/react/core/utils/storage.d.ts +1 -1
- package/dist/types/react/web/utils/storage.d.ts +1 -1
- package/dist/types/transaction/actions/estimate-gas.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
- package/dist/types/wallets/create-wallet.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts +2 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-capabilities.d.ts +1 -0
- package/dist/types/wallets/eip5792/get-capabilities.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/send-calls.d.ts +6 -1
- package/dist/types/wallets/eip5792/send-calls.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.d.ts +3 -2
- package/dist/types/wallets/in-app/core/eip5792/in-app-wallet-calls.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/eip7702/minimal-account.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/enclave-wallet.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +18 -0
- package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
- package/dist/types/wallets/injected/index.d.ts.map +1 -1
- package/dist/types/wallets/interfaces/wallet.d.ts +22 -0
- package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/wallet-connect/qr-overlay.d.ts +58 -0
- package/dist/types/wallets/wallet-connect/qr-overlay.d.ts.map +1 -0
- package/dist/types/wallets/wallet-connect/types.d.ts +13 -0
- package/dist/types/wallets/wallet-connect/types.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/extensions/erc1155/read/getOwnedNFTs.ts +1 -0
- package/src/extensions/erc721/read/getOwnedNFTs.ts +1 -0
- package/src/insight/get-nfts.ts +4 -3
- package/src/insight/get-tokens.ts +4 -2
- package/src/react/core/hooks/wallets/useConnect.ts +11 -1
- package/src/transaction/actions/estimate-gas.ts +14 -42
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-web.ts +66 -0
- package/src/wallets/create-wallet.ts +85 -24
- package/src/wallets/eip5792/get-calls-status.test.ts +156 -146
- package/src/wallets/eip5792/get-calls-status.ts +44 -73
- package/src/wallets/eip5792/get-capabilities.test.ts +216 -205
- package/src/wallets/eip5792/get-capabilities.ts +23 -64
- package/src/wallets/eip5792/send-calls.test.ts +183 -189
- package/src/wallets/eip5792/send-calls.ts +53 -71
- package/src/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.ts +4 -8
- package/src/wallets/in-app/core/eip7702/minimal-account.ts +666 -5
- package/src/wallets/in-app/core/wallet/enclave-wallet.ts +36 -1
- package/src/wallets/in-app/core/wallet/in-app-core.ts +4 -4
- package/src/wallets/in-app/web/in-app.ts +18 -0
- package/src/wallets/injected/index.ts +63 -0
- package/src/wallets/interfaces/wallet.ts +31 -0
- package/src/wallets/smart/index.ts +71 -3
- package/src/wallets/smart/smart-wallet.ts +1 -1
- package/src/wallets/wallet-connect/qr-overlay.ts +322 -0
- package/src/wallets/wallet-connect/types.ts +13 -0
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -41
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js +0 -30
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -38
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js +0 -27
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +0 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts +0 -20
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts.map +0 -1
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts +0 -20
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts.map +0 -1
- package/src/wallets/in-app/core/eip5972/in-app-wallet-capabilities.ts +0 -47
- package/src/wallets/smart/lib/smart-wallet-capabilities.ts +0 -32
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vanilla JavaScript QR Code overlay utility for WalletConnect URIs
|
|
3
|
+
* Works in any browser context without requiring React or other frameworks
|
|
4
|
+
*/
|
|
5
|
+
interface QROverlayOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Custom styles to apply to the overlay
|
|
8
|
+
*/
|
|
9
|
+
overlayStyles?: Partial<CSSStyleDeclaration>;
|
|
10
|
+
/**
|
|
11
|
+
* Custom styles to apply to the modal container
|
|
12
|
+
*/
|
|
13
|
+
modalStyles?: Partial<CSSStyleDeclaration>;
|
|
14
|
+
/**
|
|
15
|
+
* QR code size in pixels
|
|
16
|
+
*/
|
|
17
|
+
qrSize?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Show close button
|
|
20
|
+
*/
|
|
21
|
+
showCloseButton?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Custom close button text
|
|
24
|
+
*/
|
|
25
|
+
closeButtonText?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Theme preference
|
|
28
|
+
*/
|
|
29
|
+
theme?: "light" | "dark";
|
|
30
|
+
/**
|
|
31
|
+
* Custom container element to append the overlay to
|
|
32
|
+
*/
|
|
33
|
+
container?: HTMLElement;
|
|
34
|
+
/**
|
|
35
|
+
* Callback called when user cancels the overlay (closes without connecting)
|
|
36
|
+
*/
|
|
37
|
+
onCancel?: () => void;
|
|
38
|
+
}
|
|
39
|
+
export interface QROverlay {
|
|
40
|
+
/**
|
|
41
|
+
* Remove the overlay from the DOM
|
|
42
|
+
*/
|
|
43
|
+
destroy: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Hide the overlay (without removing from DOM)
|
|
46
|
+
*/
|
|
47
|
+
hide: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* Show the overlay
|
|
50
|
+
*/
|
|
51
|
+
show: () => void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a QR code overlay for the given WalletConnect URI
|
|
55
|
+
*/
|
|
56
|
+
export declare function createQROverlay(uri: string, options?: QROverlayOptions): QROverlay;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=qr-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr-overlay.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/qr-overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,gBAAgB;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,GAC7B,SAAS,CA0OX"}
|
|
@@ -151,6 +151,19 @@ export type WCConnectOptions = {
|
|
|
151
151
|
* ```
|
|
152
152
|
*/
|
|
153
153
|
onDisplayUri?: (_uri: string) => void;
|
|
154
|
+
/**
|
|
155
|
+
* Callback that gets called when the user cancels the connection process (e.g., closes the QR modal).
|
|
156
|
+
* This is only called for user-initiated cancellations, not for programmatic cleanup.
|
|
157
|
+
*
|
|
158
|
+
* ```tsx
|
|
159
|
+
* await wallet.connect({
|
|
160
|
+
* onCancel: () => {
|
|
161
|
+
* console.log("User cancelled wallet connection");
|
|
162
|
+
* }
|
|
163
|
+
* })
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
onCancel?: () => void;
|
|
154
167
|
}>;
|
|
155
168
|
};
|
|
156
169
|
export type WCAutoConnectOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,+BAA+B,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB,aAAa,CAAC,EAAE,QAAQ,CACtB,mBAAmB,GAAG;QACpB;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;QACH,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;QACzB;;;;;;;;;;;;;;;;;WAiBG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;WAGG;QACH,cAAc,CAAC,EAAE,+BAA+B,CAAC;QACjD;;;;;;;;;;;;;WAaG;QACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,+BAA+B,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB,aAAa,CAAC,EAAE,QAAQ,CACtB,mBAAmB,GAAG;QACpB;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;QACH,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;QACzB;;;;;;;;;;;;;;;;;WAiBG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;WAGG;QACH,cAAc,CAAC,EAAE,+BAA+B,CAAC;QACjD;;;;;;;;;;;;;WAaG;QACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC;;;;;;;;;;;WAWG;QACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;KACvB,CACF,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -34,12 +34,13 @@
|
|
|
34
34
|
"ora": "8.2.0",
|
|
35
35
|
"ox": "0.7.0",
|
|
36
36
|
"prompts": "2.4.2",
|
|
37
|
+
"qrcode": "1.5.3",
|
|
37
38
|
"toml": "3.0.0",
|
|
38
39
|
"uqr": "0.1.2",
|
|
39
40
|
"viem": "2.28.1",
|
|
40
41
|
"zod": "3.25.75",
|
|
41
42
|
"@thirdweb-dev/engine": "3.2.1",
|
|
42
|
-
"@thirdweb-dev/insight": "1.1.
|
|
43
|
+
"@thirdweb-dev/insight": "1.1.1"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@aws-sdk/client-kms": "3.592.0",
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
"@testing-library/user-event": "^14.6.1",
|
|
62
63
|
"@types/cross-spawn": "^6.0.6",
|
|
63
64
|
"@types/prompts": "2.4.9",
|
|
65
|
+
"@types/qrcode": "1.5.5",
|
|
64
66
|
"@types/react": "19.1.8",
|
|
65
67
|
"@viem/anvil": "0.0.10",
|
|
66
68
|
"@vitejs/plugin-react": "^4.6.0",
|
|
@@ -375,7 +377,7 @@
|
|
|
375
377
|
}
|
|
376
378
|
},
|
|
377
379
|
"typings": "./dist/types/exports/thirdweb.d.ts",
|
|
378
|
-
"version": "5.105.
|
|
380
|
+
"version": "5.105.22",
|
|
379
381
|
"scripts": {
|
|
380
382
|
"bench": "vitest -c ./test/vitest.config.ts bench",
|
|
381
383
|
"bench:compare": "bun run ./benchmarks/run.ts",
|
package/src/insight/get-nfts.ts
CHANGED
|
@@ -33,6 +33,7 @@ export async function getOwnedNFTs(args: {
|
|
|
33
33
|
client: ThirdwebClient;
|
|
34
34
|
chains: Chain[];
|
|
35
35
|
ownerAddress: string;
|
|
36
|
+
contractAddress?: string;
|
|
36
37
|
includeMetadata?: boolean;
|
|
37
38
|
queryOptions?: Omit<GetV1NftsData["query"], "owner_address" | "chain">;
|
|
38
39
|
}): Promise<(NFT & { quantityOwned: bigint })[]> {
|
|
@@ -50,8 +51,7 @@ export async function getOwnedNFTs(args: {
|
|
|
50
51
|
import("viem"),
|
|
51
52
|
]);
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
const { client, chains, ownerAddress, queryOptions } = args;
|
|
54
|
+
const { client, chains, ownerAddress, contractAddress, queryOptions } = args;
|
|
55
55
|
|
|
56
56
|
await assertInsightEnabled(chains);
|
|
57
57
|
|
|
@@ -59,7 +59,8 @@ export async function getOwnedNFTs(args: {
|
|
|
59
59
|
chain: chains.map((chain) => chain.id),
|
|
60
60
|
// metadata: includeMetadata ? "true" : "false", TODO (insight): add support for this
|
|
61
61
|
limit: 50,
|
|
62
|
-
owner_address: ownerAddress,
|
|
62
|
+
owner_address: [ownerAddress],
|
|
63
|
+
contract_address: contractAddress ? [contractAddress] : undefined,
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
const result = await getV1Nfts({
|
|
@@ -26,6 +26,7 @@ export async function getOwnedTokens(args: {
|
|
|
26
26
|
client: ThirdwebClient;
|
|
27
27
|
chains: Chain[];
|
|
28
28
|
ownerAddress: string;
|
|
29
|
+
tokenAddress?: string;
|
|
29
30
|
queryOptions?: Omit<
|
|
30
31
|
GetV1TokensData["query"],
|
|
31
32
|
"owner_address" | "chain_id" | "chain"
|
|
@@ -45,7 +46,7 @@ export async function getOwnedTokens(args: {
|
|
|
45
46
|
import("../utils/json.js"),
|
|
46
47
|
]);
|
|
47
48
|
|
|
48
|
-
const { client, chains, ownerAddress, queryOptions } = args;
|
|
49
|
+
const { client, chains, ownerAddress, tokenAddress, queryOptions } = args;
|
|
49
50
|
|
|
50
51
|
await assertInsightEnabled(chains);
|
|
51
52
|
|
|
@@ -55,7 +56,8 @@ export async function getOwnedTokens(args: {
|
|
|
55
56
|
include_spam: "false",
|
|
56
57
|
limit: 50,
|
|
57
58
|
metadata: "true",
|
|
58
|
-
owner_address: ownerAddress,
|
|
59
|
+
owner_address: [ownerAddress],
|
|
60
|
+
token_address: tokenAddress ? [tokenAddress] : undefined,
|
|
59
61
|
};
|
|
60
62
|
|
|
61
63
|
const result = await getV1Tokens({
|
|
@@ -79,5 +79,15 @@ export function useConnect(options?: ConnectManagerOptions) {
|
|
|
79
79
|
[connect, options, setConnectionStatus],
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
const cancelConnection = useCallback(() => {
|
|
83
|
+
setIsConnecting(false);
|
|
84
|
+
setConnectionStatus("disconnected");
|
|
85
|
+
}, [setConnectionStatus]);
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
connect: handleConnection,
|
|
89
|
+
error,
|
|
90
|
+
isConnecting,
|
|
91
|
+
cancelConnection,
|
|
92
|
+
} as const;
|
|
83
93
|
}
|
|
@@ -2,7 +2,6 @@ import * as ox__Hex from "ox/Hex";
|
|
|
2
2
|
import { formatTransactionRequest } from "viem";
|
|
3
3
|
import { roundUpGas } from "../../gas/op-gas-fee-reducer.js";
|
|
4
4
|
import { getAddress } from "../../utils/address.js";
|
|
5
|
-
import { hexToBytes } from "../../utils/encoding/to-bytes.js";
|
|
6
5
|
import { resolvePromisedValue } from "../../utils/promise/resolve-promised-value.js";
|
|
7
6
|
import type { Prettify } from "../../utils/type-utils.js";
|
|
8
7
|
import type { Account } from "../../wallets/interfaces/wallet.js";
|
|
@@ -117,31 +116,20 @@ export async function estimateGas(
|
|
|
117
116
|
|
|
118
117
|
const rpcRequest = getRpcClient(options.transaction);
|
|
119
118
|
try {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
...(authorizationList && authorizationList?.length > 0
|
|
135
|
-
? {
|
|
136
|
-
gas:
|
|
137
|
-
minGas(
|
|
138
|
-
hexToBytes(encodedData),
|
|
139
|
-
BigInt(authorizationList?.length ?? 0),
|
|
140
|
-
) + 100_000n,
|
|
141
|
-
}
|
|
142
|
-
: {}),
|
|
143
|
-
}),
|
|
144
|
-
);
|
|
119
|
+
const formattedTx = formatTransactionRequest({
|
|
120
|
+
authorizationList: authorizationList?.map((auth) => ({
|
|
121
|
+
...auth,
|
|
122
|
+
contractAddress: getAddress(auth.address),
|
|
123
|
+
nonce: Number(auth.nonce),
|
|
124
|
+
r: ox__Hex.fromNumber(auth.r),
|
|
125
|
+
s: ox__Hex.fromNumber(auth.s),
|
|
126
|
+
})),
|
|
127
|
+
data: encodedData,
|
|
128
|
+
from: fromAddress ? getAddress(fromAddress) : undefined,
|
|
129
|
+
to: toAddress ? getAddress(toAddress) : undefined,
|
|
130
|
+
value,
|
|
131
|
+
});
|
|
132
|
+
let gas = await eth_estimateGas(rpcRequest, formattedTx);
|
|
145
133
|
|
|
146
134
|
if (options.transaction.chain.experimental?.increaseZeroByteCount) {
|
|
147
135
|
gas = roundUpGas(gas);
|
|
@@ -158,19 +146,3 @@ export async function estimateGas(
|
|
|
158
146
|
cache.set(txWithFrom, promise);
|
|
159
147
|
return promise;
|
|
160
148
|
}
|
|
161
|
-
|
|
162
|
-
// EIP-7623 + EIP-7702 floor calculation
|
|
163
|
-
const TxGas = 21_000n;
|
|
164
|
-
const TxCostFloorPerToken = 10n; // params.TxCostFloorPerToken
|
|
165
|
-
const TxTokenPerNonZero = 4n; // params.TxTokenPerNonZeroByte
|
|
166
|
-
const TxAuthTupleGas = 12_500n;
|
|
167
|
-
|
|
168
|
-
function minGas(data: Uint8Array, authCount = 0n) {
|
|
169
|
-
let nz = 0n;
|
|
170
|
-
for (const b of data) if (b !== 0) nz++;
|
|
171
|
-
const z = BigInt(data.length) - nz;
|
|
172
|
-
const tokens = nz * TxTokenPerNonZero + z;
|
|
173
|
-
const floor = TxGas + tokens * TxCostFloorPerToken;
|
|
174
|
-
const intrinsic = TxGas + authCount * TxAuthTupleGas;
|
|
175
|
-
return floor > intrinsic ? floor : intrinsic;
|
|
176
|
-
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = "5.105.
|
|
1
|
+
export const version = "5.105.22";
|
|
@@ -14,8 +14,16 @@ import {
|
|
|
14
14
|
stringToHex,
|
|
15
15
|
uint8ArrayToHex,
|
|
16
16
|
} from "../../utils/encoding/hex.js";
|
|
17
|
+
import { stringify } from "../../utils/json.js";
|
|
17
18
|
import { parseTypedData } from "../../utils/signatures/helpers/parse-typed-data.js";
|
|
18
19
|
import { COINBASE } from "../constants.js";
|
|
20
|
+
import { toGetCallsStatusResponse } from "../eip5792/get-calls-status.js";
|
|
21
|
+
import { toGetCapabilitiesResult } from "../eip5792/get-capabilities.js";
|
|
22
|
+
import { toProviderCallParams } from "../eip5792/send-calls.js";
|
|
23
|
+
import type {
|
|
24
|
+
GetCallsStatusRawResponse,
|
|
25
|
+
WalletCapabilities,
|
|
26
|
+
} from "../eip5792/types.js";
|
|
19
27
|
import type {
|
|
20
28
|
Account,
|
|
21
29
|
SendTransactionOption,
|
|
@@ -269,6 +277,64 @@ function createAccount({
|
|
|
269
277
|
}
|
|
270
278
|
return res;
|
|
271
279
|
},
|
|
280
|
+
sendCalls: async (options) => {
|
|
281
|
+
try {
|
|
282
|
+
const { callParams, chain } = await toProviderCallParams(
|
|
283
|
+
options,
|
|
284
|
+
account,
|
|
285
|
+
);
|
|
286
|
+
const callId = await provider.request({
|
|
287
|
+
method: "wallet_sendCalls",
|
|
288
|
+
params: callParams,
|
|
289
|
+
});
|
|
290
|
+
if (callId && typeof callId === "object" && "id" in callId) {
|
|
291
|
+
return { chain, client, id: callId.id as string };
|
|
292
|
+
}
|
|
293
|
+
return { chain, client, id: callId as string };
|
|
294
|
+
} catch (error) {
|
|
295
|
+
if (/unsupport|not support/i.test((error as Error).message)) {
|
|
296
|
+
throw new Error(
|
|
297
|
+
`${COINBASE} errored calling wallet_sendCalls, with error: ${error instanceof Error ? error.message : stringify(error)}`,
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
async getCallsStatus(options) {
|
|
304
|
+
try {
|
|
305
|
+
const rawResponse = (await provider.request({
|
|
306
|
+
method: "wallet_getCallsStatus",
|
|
307
|
+
params: [options.id],
|
|
308
|
+
})) as GetCallsStatusRawResponse;
|
|
309
|
+
return toGetCallsStatusResponse(rawResponse);
|
|
310
|
+
} catch (error) {
|
|
311
|
+
if (/unsupport|not support/i.test((error as Error).message)) {
|
|
312
|
+
throw new Error(
|
|
313
|
+
`${COINBASE} does not support wallet_getCallsStatus, reach out to them directly to request EIP-5792 support.`,
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
async getCapabilities(options) {
|
|
320
|
+
const chainId = options.chainId;
|
|
321
|
+
try {
|
|
322
|
+
const result = (await provider.request({
|
|
323
|
+
method: "wallet_getCapabilities",
|
|
324
|
+
params: [getAddress(account.address)],
|
|
325
|
+
})) as Record<string, WalletCapabilities>;
|
|
326
|
+
return toGetCapabilitiesResult(result, chainId);
|
|
327
|
+
} catch (error: unknown) {
|
|
328
|
+
if (
|
|
329
|
+
/unsupport|not support|not available/i.test((error as Error).message)
|
|
330
|
+
) {
|
|
331
|
+
return {
|
|
332
|
+
message: `${COINBASE} does not support wallet_getCapabilities, reach out to them directly to request EIP-5792 support.`,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
337
|
+
},
|
|
272
338
|
};
|
|
273
339
|
|
|
274
340
|
return account;
|
|
@@ -17,6 +17,7 @@ import { inAppWallet } from "./in-app/web/in-app.js";
|
|
|
17
17
|
import { getInjectedProvider } from "./injected/index.js";
|
|
18
18
|
import type { Account, Wallet } from "./interfaces/wallet.js";
|
|
19
19
|
import { smartWallet } from "./smart/smart-wallet.js";
|
|
20
|
+
import type { QROverlay } from "./wallet-connect/qr-overlay.js";
|
|
20
21
|
import type { WCConnectOptions } from "./wallet-connect/types.js";
|
|
21
22
|
import { createWalletEmitter } from "./wallet-emitter.js";
|
|
22
23
|
import type {
|
|
@@ -299,30 +300,90 @@ export function createWallet<const ID extends WalletId>(
|
|
|
299
300
|
"./wallet-connect/controller.js"
|
|
300
301
|
);
|
|
301
302
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
303
|
+
let qrOverlay: QROverlay | undefined;
|
|
304
|
+
|
|
305
|
+
try {
|
|
306
|
+
const [
|
|
307
|
+
connectedAccount,
|
|
308
|
+
connectedChain,
|
|
309
|
+
doDisconnect,
|
|
310
|
+
doSwitchChain,
|
|
311
|
+
] = await connectWC(
|
|
312
|
+
{
|
|
313
|
+
...wcOptions,
|
|
314
|
+
walletConnect: {
|
|
315
|
+
...wcOptions.walletConnect,
|
|
316
|
+
onDisplayUri: wcOptions.walletConnect?.showQrModal
|
|
317
|
+
? async (uri) => {
|
|
318
|
+
// Check if we're in a browser environment
|
|
319
|
+
if (
|
|
320
|
+
typeof window !== "undefined" &&
|
|
321
|
+
typeof document !== "undefined"
|
|
322
|
+
) {
|
|
323
|
+
try {
|
|
324
|
+
const { createQROverlay } = await import(
|
|
325
|
+
"./wallet-connect/qr-overlay.js"
|
|
326
|
+
);
|
|
327
|
+
|
|
328
|
+
// Clean up any existing overlay
|
|
329
|
+
if (qrOverlay) {
|
|
330
|
+
qrOverlay.destroy();
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Create new QR overlay
|
|
334
|
+
qrOverlay = createQROverlay(uri, {
|
|
335
|
+
theme:
|
|
336
|
+
wcOptions.walletConnect?.qrModalOptions
|
|
337
|
+
?.themeMode ?? "dark",
|
|
338
|
+
qrSize: 280,
|
|
339
|
+
showCloseButton: true,
|
|
340
|
+
onCancel: () => {
|
|
341
|
+
wcOptions.walletConnect?.onCancel?.();
|
|
342
|
+
},
|
|
343
|
+
});
|
|
344
|
+
} catch (error) {
|
|
345
|
+
console.error(
|
|
346
|
+
"Failed to create QR overlay:",
|
|
347
|
+
error,
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
: undefined,
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
emitter,
|
|
356
|
+
wallet.id as WCSupportedWalletIds | "walletConnect",
|
|
357
|
+
webLocalStorage,
|
|
358
|
+
sessionHandler,
|
|
359
|
+
);
|
|
360
|
+
|
|
361
|
+
// Clean up QR overlay on successful connection
|
|
362
|
+
if (qrOverlay) {
|
|
363
|
+
qrOverlay.destroy();
|
|
364
|
+
qrOverlay = undefined;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// set the states
|
|
368
|
+
account = connectedAccount;
|
|
369
|
+
chain = connectedChain;
|
|
370
|
+
handleDisconnect = doDisconnect;
|
|
371
|
+
handleSwitchChain = doSwitchChain;
|
|
372
|
+
trackConnect({
|
|
373
|
+
chainId: chain.id,
|
|
374
|
+
client: wcOptions.client,
|
|
375
|
+
walletAddress: account.address,
|
|
376
|
+
walletType: id,
|
|
377
|
+
});
|
|
378
|
+
return account;
|
|
379
|
+
} catch (error) {
|
|
380
|
+
// Clean up QR overlay on connection error
|
|
381
|
+
if (qrOverlay) {
|
|
382
|
+
qrOverlay.destroy();
|
|
383
|
+
qrOverlay = undefined;
|
|
384
|
+
}
|
|
385
|
+
throw error;
|
|
386
|
+
}
|
|
326
387
|
}
|
|
327
388
|
|
|
328
389
|
if (id === "walletConnect") {
|