thirdweb 5.34.0-nightly-f6ff5a78fc2d65f0f250b154f1405210ca57ce0a-20240707000358 → 5.34.0-nightly-325416ea19905901f30e795cbf93cb8a085be02f-20240708203622
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/auth/core/verify-jwt.js +1 -1
- package/dist/cjs/auth/core/verify-jwt.js.map +1 -1
- package/dist/cjs/auth/verify-hash.js +98 -0
- package/dist/cjs/auth/verify-hash.js.map +1 -0
- package/dist/cjs/auth/verify-signature.js +5 -60
- package/dist/cjs/auth/verify-signature.js.map +1 -1
- package/dist/cjs/auth/verify-typed-data.js +80 -0
- package/dist/cjs/auth/verify-typed-data.js.map +1 -0
- package/dist/cjs/chains/chain-definitions/blast.js +17 -0
- package/dist/cjs/chains/chain-definitions/blast.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/extensions/erc20.js +3 -1
- package/dist/cjs/exports/extensions/erc20.js.map +1 -1
- package/dist/cjs/exports/utils.js +10 -1
- package/dist/cjs/exports/utils.js.map +1 -1
- package/dist/cjs/extensions/erc1271/checkContractWalletSignature.js +1 -0
- package/dist/cjs/extensions/erc1271/checkContractWalletSignature.js.map +1 -1
- package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js +1 -0
- package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
- package/dist/cjs/extensions/erc20/write/transferBatch.js +61 -0
- package/dist/cjs/extensions/erc20/write/transferBatch.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +21 -12
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +4 -4
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -3
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +1 -4
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +4 -4
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.js +1 -1
- package/dist/cjs/utils/hashing/hashTypedData.js +122 -0
- package/dist/cjs/utils/hashing/hashTypedData.js.map +1 -0
- package/dist/cjs/utils/jwt/decode-jwt.js +2 -2
- package/dist/cjs/utils/jwt/decode-jwt.js.map +1 -1
- package/dist/cjs/utils/jwt/refresh-jwt.js +1 -1
- package/dist/cjs/utils/jwt/refresh-jwt.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/auth/core/verify-jwt.js +2 -2
- package/dist/esm/auth/core/verify-jwt.js.map +1 -1
- package/dist/esm/auth/verify-hash.js +95 -0
- package/dist/esm/auth/verify-hash.js.map +1 -0
- package/dist/esm/auth/verify-signature.js +6 -61
- package/dist/esm/auth/verify-signature.js.map +1 -1
- package/dist/esm/auth/verify-typed-data.js +77 -0
- package/dist/esm/auth/verify-typed-data.js.map +1 -0
- package/dist/esm/chains/chain-definitions/blast.js +14 -0
- package/dist/esm/chains/chain-definitions/blast.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/extensions/erc20.js +1 -0
- package/dist/esm/exports/extensions/erc20.js.map +1 -1
- package/dist/esm/exports/utils.js +6 -0
- package/dist/esm/exports/utils.js.map +1 -1
- package/dist/esm/extensions/erc1271/checkContractWalletSignature.js +1 -0
- package/dist/esm/extensions/erc1271/checkContractWalletSignature.js.map +1 -1
- package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js +1 -0
- package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
- package/dist/esm/extensions/erc20/write/transferBatch.js +58 -0
- package/dist/esm/extensions/erc20/write/transferBatch.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +21 -12
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +4 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -3
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +1 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +4 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.js +1 -1
- package/dist/esm/utils/hashing/hashTypedData.js +118 -0
- package/dist/esm/utils/hashing/hashTypedData.js.map +1 -0
- package/dist/esm/utils/jwt/decode-jwt.js +1 -1
- package/dist/esm/utils/jwt/decode-jwt.js.map +1 -1
- package/dist/esm/utils/jwt/refresh-jwt.js +2 -2
- package/dist/esm/utils/jwt/refresh-jwt.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/auth/verify-hash.d.ts +45 -0
- package/dist/types/auth/verify-hash.d.ts.map +1 -0
- package/dist/types/auth/verify-signature.d.ts.map +1 -1
- package/dist/types/auth/verify-typed-data.d.ts +75 -0
- package/dist/types/auth/verify-typed-data.d.ts.map +1 -0
- package/dist/types/chains/chain-definitions/blast.d.ts +27 -0
- package/dist/types/chains/chain-definitions/blast.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/extensions/erc20.d.ts +1 -0
- package/dist/types/exports/extensions/erc20.d.ts.map +1 -1
- package/dist/types/exports/utils.d.ts +4 -0
- package/dist/types/exports/utils.d.ts.map +1 -1
- package/dist/types/extensions/erc1271/checkContractWalletSignature.d.ts +1 -0
- package/dist/types/extensions/erc1271/checkContractWalletSignature.d.ts.map +1 -1
- package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts +1 -0
- package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts.map +1 -1
- package/dist/types/extensions/erc20/write/transferBatch.d.ts +42 -0
- package/dist/types/extensions/erc20/write/transferBatch.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
- package/dist/types/utils/hashing/hashTypedData.d.ts +17 -0
- package/dist/types/utils/hashing/hashTypedData.d.ts.map +1 -0
- package/dist/types/utils/jwt/decode-jwt.d.ts +1 -1
- package/dist/types/utils/jwt/decode-jwt.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/auth/core/verify-jwt.ts +2 -2
- package/src/auth/verify-hash.test.ts +66 -0
- package/src/auth/verify-hash.ts +126 -0
- package/src/auth/verify-signature.ts +6 -77
- package/src/auth/verify-typed-data.test.ts +82 -0
- package/src/auth/verify-typed-data.ts +110 -0
- package/src/chains/chain-definitions/blast.ts +14 -0
- package/src/exports/chains.ts +1 -0
- package/src/exports/extensions/erc20.ts +4 -0
- package/src/exports/utils.ts +8 -0
- package/src/extensions/erc1271/checkContractWalletSignature.ts +1 -0
- package/src/extensions/erc1271/checkContractWalletSignedTypedData.ts +1 -0
- package/src/extensions/erc20/write/transferBatch.ts +78 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +42 -12
- package/src/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.tsx +5 -5
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +1 -5
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +1 -6
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +2 -2
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +4 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.tsx +1 -1
- package/src/utils/hashing/hashTypedData.test.ts +207 -0
- package/src/utils/hashing/hashTypedData.ts +210 -0
- package/src/utils/jwt/decode-jwt.ts +1 -1
- package/src/utils/jwt/refresh-jwt.ts +2 -2
- package/src/version.ts +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decode-jwt.js","sourceRoot":"","sources":["../../../../src/utils/jwt/decode-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAGrE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,
|
1
|
+
{"version":3,"file":"decode-jwt.js","sourceRoot":"","sources":["../../../../src/utils/jwt/decode-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAGrE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzE,IAAI,aAAa,KAAK,kCAAkC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAe,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAQ,CAAC;IAE1D,OAAO;QACL,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { decodeJWT } from "./decode-jwt.js";
|
2
2
|
import { encodeJWT } from "./encode-jwt.js";
|
3
3
|
const DEFAULT_EXPIRATION_TIME = 60 * 60 * 24;
|
4
4
|
/**
|
@@ -18,7 +18,7 @@ const DEFAULT_EXPIRATION_TIME = 60 * 60 * 24;
|
|
18
18
|
*/
|
19
19
|
export async function refreshJWT(options) {
|
20
20
|
const { account, jwt, expirationTime = DEFAULT_EXPIRATION_TIME } = options;
|
21
|
-
const payload =
|
21
|
+
const payload = decodeJWT(jwt).payload;
|
22
22
|
return encodeJWT({
|
23
23
|
payload: {
|
24
24
|
iss: payload.iss,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"refresh-jwt.js","sourceRoot":"","sources":["../../../../src/utils/jwt/refresh-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"refresh-jwt.js","sourceRoot":"","sources":["../../../../src/utils/jwt/refresh-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAQ7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAyB;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC;IAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACvC,OAAO,SAAS,CAAC;QACf,OAAO,EAAE;YACP,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,IAAI,IAAI,EAAE;YACf,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;YAC1C,GAAG,EAAE,IAAI,IAAI,EAAE;YACf,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;QACD,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
package/dist/esm/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = "5.34.0-nightly-
|
1
|
+
export const version = "5.34.0-nightly-325416ea19905901f30e795cbf93cb8a085be02f-20240708203622";
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { type Signature } from "viem";
|
2
|
+
import type { Chain } from "../chains/types.js";
|
3
|
+
import type { ThirdwebClient } from "../client/client.js";
|
4
|
+
import { type Hex } from "../utils/encoding/hex.js";
|
5
|
+
export type VerifyHashParams = {
|
6
|
+
hash: Hex;
|
7
|
+
signature: string | Uint8Array | Signature;
|
8
|
+
address: string;
|
9
|
+
client: ThirdwebClient;
|
10
|
+
chain: Chain;
|
11
|
+
accountFactory?: {
|
12
|
+
address: string;
|
13
|
+
verificationCalldata: Hex;
|
14
|
+
};
|
15
|
+
};
|
16
|
+
/**
|
17
|
+
* @description Verify that an address created the provided signature for a given hash using [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492). This function is interoperable with all wallet types, including EOAs.
|
18
|
+
* This function should rarely be used directly, instead use @see {import("./verify-signature.js")} and @see {import("./verify-typed-data.js")}}
|
19
|
+
*
|
20
|
+
* @param {Hex} options.hash The hash that was signed
|
21
|
+
* @param {string | Uint8Array | Signature} options.signature The signature that was signed
|
22
|
+
* @param {string} options.address The address that signed the hash
|
23
|
+
* @param {ThirdwebClient} options.client The Thirdweb client
|
24
|
+
* @param {Chain} options.chain The chain that the address is on. For an EOA, this can be any chain.
|
25
|
+
* @param {string} [options.accountFactory.address] The address of the account factory that created the account if using a smart account with a custom account factory
|
26
|
+
* @param {Hex} [options.accountFactory.verificationCalldata] The calldata that was used to create the account if using a smart account with a custom account factory
|
27
|
+
*
|
28
|
+
* @returns {Promise<boolean>} A promise that resolves to `true` if the signature is valid, or `false` otherwise.
|
29
|
+
*
|
30
|
+
* @example
|
31
|
+
* ```ts
|
32
|
+
* import { verifyHash } from "thirdweb/utils";
|
33
|
+
* const isValid = await verifyHash({
|
34
|
+
* hash: "0x1234",
|
35
|
+
* signature: "0x1234",
|
36
|
+
* address: "0x1234",
|
37
|
+
* client,
|
38
|
+
* chain,
|
39
|
+
* });
|
40
|
+
* ```
|
41
|
+
*
|
42
|
+
* @auth
|
43
|
+
*/
|
44
|
+
export declare function verifyHash({ hash, signature, address, client, chain, accountFactory, }: VerifyHashParams): Promise<boolean>;
|
45
|
+
//# sourceMappingURL=verify-hash.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"verify-hash.d.ts","sourceRoot":"","sources":["../../../src/auth/verify-hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,MAAM,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,0BAA0B,CAAC;AAU3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,UAAU,CAAC,EAC/B,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,cAAc,GACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4DrC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../src/auth/verify-signature.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../src/auth/verify-signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,oBAgBzE;AAED,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CACxD,wBAAwB,GAAG;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;CACH,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,6BAA6B,CAAC,EAClD,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,cAAc,GACf,EAAE,mCAAmC,oBAUrC;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C,wBAAwB,GAAG,OAAO,CAAC,mCAAmC,CAAC,CACxE,CAAC;AAwBF,wBAAsB,eAAe,CAAC,OAAO,EAAE,qBAAqB,oBA2BnE"}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import type { Signature, TypedData, TypedDataDefinition } from "viem";
|
2
|
+
import type { Chain } from "../chains/types.js";
|
3
|
+
import type { ThirdwebClient } from "../client/client.js";
|
4
|
+
import type { Hex } from "../utils/encoding/hex.js";
|
5
|
+
import { type VerifyHashParams } from "./verify-hash.js";
|
6
|
+
export type VerifyTypedDataParams<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData> = Omit<VerifyHashParams, "hash"> & TypedDataDefinition<typedData, primaryType> & {
|
7
|
+
address: string;
|
8
|
+
signature: string | Uint8Array | Signature;
|
9
|
+
client: ThirdwebClient;
|
10
|
+
chain: Chain;
|
11
|
+
accountFactory?: {
|
12
|
+
address: string;
|
13
|
+
verificationCalldata: Hex;
|
14
|
+
};
|
15
|
+
};
|
16
|
+
/**
|
17
|
+
* @description Verify am [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed data signature. This function is interoperable with all wallet types (smart accounts or EOAs).
|
18
|
+
*
|
19
|
+
* @param {string} options.address The address that signed the typed data
|
20
|
+
* @param {string | Uint8Array | Signature} options.signature The signature that was signed
|
21
|
+
* @param {ThirdwebClient} options.client The Thirdweb client
|
22
|
+
* @param {Chain} options.chain The chain that the address is on. For an EOA, this can be any chain.
|
23
|
+
* @param {string} [options.accountFactory.address] The address of the account factory that created the account if using a smart account with a custom account factory
|
24
|
+
* @param {Hex} [options.accountFactory.verificationCalldata] The calldata that was used to create the account if using a smart account with a custom account factory
|
25
|
+
* @param {typeof VerifyTypedDataParams.message} options.message The EIP-712 message that was signed.
|
26
|
+
* @param {typeof VerifyTypedDataParams.domain} options.domain The EIP-712 domain that was signed.
|
27
|
+
* @param {typeof VerifyTypedDataParams.primaryType} options.primaryType The EIP-712 primary type that was signed.
|
28
|
+
* @param {typeof VerifyTypedDataParams.types} options.types The EIP-712 types that were signed.
|
29
|
+
*
|
30
|
+
* @returns {Promise<boolean>} A promise that resolves to `true` if the signature is valid, or `false` otherwise.
|
31
|
+
*
|
32
|
+
* @example
|
33
|
+
* ```ts
|
34
|
+
* import { verifyTypedData } from "thirdweb/utils";
|
35
|
+
* const isValid = await verifyTypedData({
|
36
|
+
* address: "0x...",
|
37
|
+
* signature: "0x...",
|
38
|
+
* client,
|
39
|
+
* chain,
|
40
|
+
* domain: {
|
41
|
+
name: "Ether Mail",
|
42
|
+
version: "1",
|
43
|
+
chainId: 1,
|
44
|
+
verifyingContract: "0x0000000000000000000000000000000000000000",
|
45
|
+
},
|
46
|
+
* primaryType: "Mail",
|
47
|
+
* types: {
|
48
|
+
Person: [
|
49
|
+
{ name: "name", type: "string" },
|
50
|
+
{ name: "wallet", type: "address" },
|
51
|
+
],
|
52
|
+
Mail: [
|
53
|
+
{ name: "from", type: "Person" },
|
54
|
+
{ name: "to", type: "Person" },
|
55
|
+
{ name: "contents", type: "string" },
|
56
|
+
],
|
57
|
+
},
|
58
|
+
message: {
|
59
|
+
from: {
|
60
|
+
name: "Cow",
|
61
|
+
wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826",
|
62
|
+
},
|
63
|
+
to: {
|
64
|
+
name: "Bob",
|
65
|
+
wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
|
66
|
+
},
|
67
|
+
contents: "Hello, Bob!",
|
68
|
+
},
|
69
|
+
* });
|
70
|
+
* ```
|
71
|
+
*
|
72
|
+
* @auth
|
73
|
+
*/
|
74
|
+
export declare function verifyTypedData<typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain">({ address, signature, client, chain, accountFactory, message, domain, primaryType, types, }: VerifyTypedDataParams<typedData, primaryType>): Promise<boolean>;
|
75
|
+
//# sourceMappingURL=verify-typed-data.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"verify-typed-data.d.ts","sourceRoot":"","sources":["../../../src/auth/verify-typed-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,qBAAqB,CAC/B,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAChC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;CACH,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAsB,eAAe,CACnC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EACpD,EACA,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,cAAc,EACd,OAAO,EACP,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAelE"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
export declare const blast: {
|
2
|
+
readonly id: number;
|
3
|
+
readonly name?: string;
|
4
|
+
readonly rpc: string;
|
5
|
+
readonly icon?: {
|
6
|
+
url: string;
|
7
|
+
width: number;
|
8
|
+
height: number;
|
9
|
+
format: string;
|
10
|
+
};
|
11
|
+
readonly nativeCurrency?: {
|
12
|
+
name?: string;
|
13
|
+
symbol?: string;
|
14
|
+
decimals?: number;
|
15
|
+
};
|
16
|
+
readonly blockExplorers?: Array<{
|
17
|
+
name: string;
|
18
|
+
url: string;
|
19
|
+
apiUrl?: string;
|
20
|
+
}>;
|
21
|
+
readonly testnet?: true;
|
22
|
+
readonly experimental?: {
|
23
|
+
increaseZeroByteCount?: boolean;
|
24
|
+
};
|
25
|
+
readonly faucets?: Array<string>;
|
26
|
+
};
|
27
|
+
//# sourceMappingURL=blast.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"blast.d.ts","sourceRoot":"","sources":["../../../../src/chains/chain-definitions/blast.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;YAOX,CAAC;cAAoB,CAAC;gBACb,CAAC;;;;;cAIyB,CAAC;;;;6BAA8E,CAAC;;;CADxH,CAAC"}
|
@@ -13,6 +13,7 @@ export { avalanche } from "../chains/chain-definitions/avalanche.js";
|
|
13
13
|
export { baseSepolia } from "../chains/chain-definitions/base-sepolia.js";
|
14
14
|
export { base } from "../chains/chain-definitions/base.js";
|
15
15
|
export { ethereum, mainnet } from "../chains/chain-definitions/ethereum.js";
|
16
|
+
export { blast } from "../chains/chain-definitions/blast.js";
|
16
17
|
export { optimismSepolia } from "../chains/chain-definitions/optimism-sepolia.js";
|
17
18
|
export { optimism } from "../chains/chain-definitions/optimism.js";
|
18
19
|
export { lineaSepolia } from "../chains/chain-definitions/linea-sepolia.js";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/exports/chains.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,MAAM,GACP,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,oCAAoC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/exports/chains.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,MAAM,GACP,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,oCAAoC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
|
@@ -8,6 +8,7 @@ export { getCurrencyMetadata, type GetCurrencyMetadataResult, } from "../../exte
|
|
8
8
|
export { mintTo, type MintToParams, } from "../../extensions/erc20/write/mintTo.js";
|
9
9
|
export { transfer, type TransferParams, } from "../../extensions/erc20/write/transfer.js";
|
10
10
|
export { transferFrom, type TransferFromParams, } from "../../extensions/erc20/write/transferFrom.js";
|
11
|
+
export { transferBatch, type TransferBatchParams, } from "../../extensions/erc20/write/transferBatch.js";
|
11
12
|
export { approve, type ApproveParams, } from "../../extensions/erc20/write/approve.js";
|
12
13
|
export { burn, type BurnParams, } from "../../extensions/erc20/__generated__/IBurnableERC20/write/burn.js";
|
13
14
|
export { burnFrom, type BurnFromParams, } from "../../extensions/erc20/__generated__/IBurnableERC20/write/burnFrom.js";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../../src/exports/extensions/erc20.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,SAAS,EACT,KAAK,eAAe,GACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iEAAiE,CAAC;AAC9F,OAAO,EACL,SAAS,EACT,KAAK,eAAe,GACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,oDAAoD,CAAC;AAG5D,OAAO,EACL,MAAM,EACN,KAAK,YAAY,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,GACxB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,KAAK,UAAU,GAChB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,uEAAuE,CAAC;AAE/E;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,+EAA+E,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,6EAA6E,CAAC;AAC7G,OAAO,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AACvG,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,KAAK,wBAAwB,GAC9B,MAAM,0DAA0D,CAAC;AAElE;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AAKjD,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,gEAAgE,CAAC;AACxE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,gEAAgE,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,4EAA4E,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,yEAAyE,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kFAAkF,CAAC;AAC/H,OAAO,EACL,8BAA8B,EAC9B,KAAK,qCAAqC,GAC3C,MAAM,8FAA8F,CAAC"}
|
1
|
+
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../../src/exports/extensions/erc20.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,SAAS,EACT,KAAK,eAAe,GACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iEAAiE,CAAC;AAC9F,OAAO,EACL,SAAS,EACT,KAAK,eAAe,GACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,oDAAoD,CAAC;AAG5D,OAAO,EACL,MAAM,EACN,KAAK,YAAY,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,GACxB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,GACzB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,KAAK,UAAU,GAChB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,uEAAuE,CAAC;AAE/E;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,+EAA+E,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,6EAA6E,CAAC;AAC7G,OAAO,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AACvG,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,KAAK,wBAAwB,GAC9B,MAAM,0DAA0D,CAAC;AAElE;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AAKjD,OAAO,EACL,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,GACpB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,gEAAgE,CAAC;AACxE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,gEAAgE,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,4EAA4E,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,yEAAyE,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kFAAkF,CAAC;AAC/H,OAAO,EACL,8BAA8B,EAC9B,KAAK,qCAAqC,GAC3C,MAAM,8FAA8F,CAAC"}
|
@@ -31,4 +31,8 @@ export { setThirdwebDomains } from "../utils/domains.js";
|
|
31
31
|
export { resolvePromisedValue } from "../utils/promise/resolve-promised-value.js";
|
32
32
|
export { stringify } from "../utils/json.js";
|
33
33
|
export { maxUint256 } from "viem";
|
34
|
+
export { decodeJWT } from "../utils/jwt/decode-jwt.js";
|
35
|
+
export { encodeJWT, type JWTPayloadInput } from "../utils/jwt/encode-jwt.js";
|
36
|
+
export { refreshJWT, type RefreshJWTParams } from "../utils/jwt/refresh-jwt.js";
|
37
|
+
export type { JWTPayload } from "../utils/jwt/types.js";
|
34
38
|
//# sourceMappingURL=utils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/exports/utils.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/exports/utils.ts"],"names":[],"mappings":"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"}
|
@@ -7,6 +7,7 @@ export type CheckContractWalletSignatureOptions = {
|
|
7
7
|
};
|
8
8
|
/**
|
9
9
|
* Checks if a contract wallet signature is valid.
|
10
|
+
* @deprecated Use `verifySignature` instead
|
10
11
|
* @param options - The options for the checkContractWalletSignature function.
|
11
12
|
* @param options.contract - The contract to check the signature against.
|
12
13
|
* @param options.message - The message to check the signature against.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"checkContractWalletSignature.d.ts","sourceRoot":"","sources":["../../../../src/extensions/erc1271/checkContractWalletSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAe,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF
|
1
|
+
{"version":3,"file":"checkContractWalletSignature.d.ts","sourceRoot":"","sources":["../../../../src/extensions/erc1271/checkContractWalletSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAe,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,mCAAmC,oBAW7C"}
|
@@ -7,6 +7,7 @@ export type CheckContractWalletSignTypedDataOptions<typedData extends TypedData
|
|
7
7
|
};
|
8
8
|
/**
|
9
9
|
* Checks if a contract wallet signature is valid.
|
10
|
+
* @deprecated Use `verifyTypedData` instead
|
10
11
|
* @param options - The options for the checkContractWalletSignature function.
|
11
12
|
* @param options.contract - The contract to check the signature against.
|
12
13
|
* @param options.message - The message to check the signature against.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"checkContractWalletSignedTypedData.d.ts","sourceRoot":"","sources":["../../../../src/extensions/erc1271/checkContractWalletSignedTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAiB,MAAM,MAAM,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,MAAM,uCAAuC,CACjD,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE;IACF,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF
|
1
|
+
{"version":3,"file":"checkContractWalletSignedTypedData.d.ts","sourceRoot":"","sources":["../../../../src/extensions/erc1271/checkContractWalletSignedTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAiB,MAAM,MAAM,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,MAAM,uCAAuC,CACjD,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE;IACF,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EACtE,OAAO,EAAE,uCAAuC,CAAC,SAAS,EAAE,WAAW,CAAC,oBAUzE"}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
2
|
+
import type { Prettify } from "../../../utils/type-utils.js";
|
3
|
+
/**
|
4
|
+
* Represents the parameters for a batch transfer operation.
|
5
|
+
*/
|
6
|
+
export type TransferBatchParams = Prettify<{
|
7
|
+
batch: Array<{
|
8
|
+
to: string;
|
9
|
+
} & ({
|
10
|
+
amount: number | string;
|
11
|
+
} | {
|
12
|
+
amountWei: bigint;
|
13
|
+
})>;
|
14
|
+
}>;
|
15
|
+
/**
|
16
|
+
* Transfers a batch of ERC20 tokens from the sender's address to the specified recipient address.
|
17
|
+
* @param options - The options for the batch transfer transaction.
|
18
|
+
* @returns A promise that resolves to the prepared transaction.
|
19
|
+
* @extension ERC20
|
20
|
+
* @example
|
21
|
+
* ```ts
|
22
|
+
* import { transferBatch } from "thirdweb/extensions/erc20";
|
23
|
+
* import { sendTransaction } from "thirdweb";
|
24
|
+
*
|
25
|
+
* const transaction = transferBatch({
|
26
|
+
* contract,
|
27
|
+
* batch: [
|
28
|
+
* {
|
29
|
+
* to: "0x...",
|
30
|
+
* amount: 100,
|
31
|
+
* },
|
32
|
+
* {
|
33
|
+
* to: "0x...",
|
34
|
+
* amount: "0.1",
|
35
|
+
* },
|
36
|
+
* ]);
|
37
|
+
*
|
38
|
+
* await sendTransaction({ transaction, account });
|
39
|
+
* ```
|
40
|
+
*/
|
41
|
+
export declare function transferBatch(options: BaseTransactionOptions<TransferBatchParams>): import("../../../transaction/prepare-transaction.js").PreparedTransaction<any, import("abitype").AbiFunction, import("../../../transaction/prepare-transaction.js").PrepareTransactionOptions>;
|
42
|
+
//# sourceMappingURL=transferBatch.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transferBatch.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc20/write/transferBatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAI7D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,KAAK,CACV;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,CACb;QACE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;KACzB,GACD;QACE,SAAS,EAAE,MAAM,CAAC;KACnB,CACJ,CACF,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,kMA6BrD"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useBuyTxStates.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"useBuyTxStates.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mDAAmD,CAAC;AAGjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;;EA0DA"}
|
package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useUISelectionStates.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"useUISelectionStates.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+DAA+D,CAAC;AAGlG,OAAO,EAAE,KAAK,kBAAkB,EAAgB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,qBAAqB,EAAE,uBAAuB,CAAC;CAChD;;;;;;;;;;;;;;gBAdA,CAAC;kBAAoB,CAAC;oBAAsB,CAAC;;;;;kBACZ,CAAC;;;;iCACf,CAAC;;;;;;;;;;;;;;;gBAFpB,CAAC;kBAAoB,CAAC;oBAAsB,CAAC;;;;;kBACZ,CAAC;;;;iCACf,CAAC;;;;;;;;;;;;;;;;gBAFpB,CAAC;kBAAoB,CAAC;oBAAsB,CAAC;;;;;kBACZ,CAAC;;;;iCACf,CAAC;;;;;;;;;;;;;;;gBAFpB,CAAC;kBAAoB,CAAC;oBAAsB,CAAC;;;;;kBACZ,CAAC;;;;iCACf,CAAC;;;;;;;;;;EAqFpB"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { type TypedData, type TypedDataDefinition } from "viem";
|
2
|
+
import { type Hex } from "../encoding/hex.js";
|
3
|
+
type MessageTypeProperty = {
|
4
|
+
name: string;
|
5
|
+
type: string;
|
6
|
+
};
|
7
|
+
export type HashTypedDataParams<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData> = TypedDataDefinition<typedData, primaryType>;
|
8
|
+
/**
|
9
|
+
* @internal
|
10
|
+
*/
|
11
|
+
export declare function hashTypedData<const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain">(parameters: HashTypedDataParams<typedData, primaryType>): Hex;
|
12
|
+
export declare function encodeType({ primaryType, types, }: {
|
13
|
+
primaryType: string;
|
14
|
+
types: Record<string, MessageTypeProperty[]>;
|
15
|
+
}): string;
|
16
|
+
export {};
|
17
|
+
//# sourceMappingURL=hashTypedData.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"hashTypedData.d.ts","sourceRoot":"","sources":["../../../../src/utils/hashing/hashTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,mBAAmB,EAKzB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,oBAAoB,CAAC;AAGrD,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAC7B,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEhD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EACpD,UAAU,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,GAAG,CA2C9D;AAwCD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,KAAK,GACN,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;CAC9C,UAcA"}
|
@@ -11,7 +11,7 @@ import type { JWTPayload } from "./types.js";
|
|
11
11
|
* const { payload, signature } = decodeJWT(jwt);
|
12
12
|
* ```
|
13
13
|
*/
|
14
|
-
export declare function
|
14
|
+
export declare function decodeJWT(jwt: string): {
|
15
15
|
payload: JWTPayload;
|
16
16
|
signature: `0x${string}`;
|
17
17
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decode-jwt.d.ts","sourceRoot":"","sources":["../../../../src/utils/jwt/decode-jwt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,wBAAgB,
|
1
|
+
{"version":3,"file":"decode-jwt.d.ts","sourceRoot":"","sources":["../../../../src/utils/jwt/decode-jwt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM;;;EAiBpC"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.34.0-nightly-
|
1
|
+
export declare const version = "5.34.0-nightly-325416ea19905901f30e795cbf93cb8a085be02f-20240708203622";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "thirdweb",
|
3
|
-
"version": "5.34.0-nightly-
|
3
|
+
"version": "5.34.0-nightly-325416ea19905901f30e795cbf93cb8a085be02f-20240708203622",
|
4
4
|
"repository": {
|
5
5
|
"type": "git",
|
6
6
|
"url": "git+https://github.com/thirdweb-dev/js.git#main"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { decodeJWT } from "../../utils/jwt/decode-jwt.js";
|
2
2
|
import type { JWTPayload } from "../../utils/jwt/types.js";
|
3
3
|
import { verifyEOASignature } from "../verify-signature.js";
|
4
4
|
import type { AuthOptions } from "./types.js";
|
@@ -26,7 +26,7 @@ export type VerifyJWTResult =
|
|
26
26
|
*/
|
27
27
|
export function verifyJWT(options: AuthOptions) {
|
28
28
|
return async (params: VerifyJWTParams): Promise<VerifyJWTResult> => {
|
29
|
-
const { payload, signature } =
|
29
|
+
const { payload, signature } = decodeJWT(params.jwt);
|
30
30
|
|
31
31
|
if (!options.adminAccount) {
|
32
32
|
throw new Error("No admin account provided. Cannot verify JWT.");
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { parseSignature } from "viem";
|
2
|
+
import { describe, expect, test } from "vitest";
|
3
|
+
import { FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
|
4
|
+
import { TEST_CLIENT } from "../../test/src/test-clients.js";
|
5
|
+
import { ANVIL_PKEY_A, TEST_ACCOUNT_A } from "../../test/src/test-wallets.js";
|
6
|
+
import { toBytes } from "../utils/encoding/to-bytes.js";
|
7
|
+
import { hashMessage } from "../utils/hashing/hashMessage.js";
|
8
|
+
import { signMessage } from "../utils/signatures/sign-message.js";
|
9
|
+
import { verifyHash } from "./verify-hash.js";
|
10
|
+
|
11
|
+
describe("verifyHash", async () => {
|
12
|
+
describe("EOA", async () => {
|
13
|
+
test("hex", async () => {
|
14
|
+
const signature = signMessage({
|
15
|
+
message: "hello world",
|
16
|
+
privateKey: ANVIL_PKEY_A,
|
17
|
+
});
|
18
|
+
|
19
|
+
expect(
|
20
|
+
verifyHash({
|
21
|
+
address: TEST_ACCOUNT_A.address,
|
22
|
+
hash: hashMessage("hello world"),
|
23
|
+
signature,
|
24
|
+
client: TEST_CLIENT,
|
25
|
+
chain: FORKED_ETHEREUM_CHAIN,
|
26
|
+
}),
|
27
|
+
).resolves.toBe(true);
|
28
|
+
});
|
29
|
+
|
30
|
+
test("bytes", async () => {
|
31
|
+
const signature = signMessage({
|
32
|
+
message: "hello world",
|
33
|
+
privateKey: ANVIL_PKEY_A,
|
34
|
+
});
|
35
|
+
|
36
|
+
expect(
|
37
|
+
verifyHash({
|
38
|
+
address: TEST_ACCOUNT_A.address,
|
39
|
+
hash: hashMessage("hello world"),
|
40
|
+
signature: toBytes(signature),
|
41
|
+
client: TEST_CLIENT,
|
42
|
+
chain: FORKED_ETHEREUM_CHAIN,
|
43
|
+
}),
|
44
|
+
).resolves.toBe(true);
|
45
|
+
});
|
46
|
+
|
47
|
+
test("object", async () => {
|
48
|
+
const signature = signMessage({
|
49
|
+
message: "hello world",
|
50
|
+
privateKey: ANVIL_PKEY_A,
|
51
|
+
});
|
52
|
+
|
53
|
+
expect(
|
54
|
+
verifyHash({
|
55
|
+
address: TEST_ACCOUNT_A.address,
|
56
|
+
hash: hashMessage("hello world"),
|
57
|
+
signature: parseSignature(signature),
|
58
|
+
client: TEST_CLIENT,
|
59
|
+
chain: FORKED_ETHEREUM_CHAIN,
|
60
|
+
}),
|
61
|
+
).resolves.toBe(true);
|
62
|
+
});
|
63
|
+
});
|
64
|
+
});
|
65
|
+
|
66
|
+
// TODO: Create utilities to mock smart accounts on anvil so we can test them here
|
@@ -0,0 +1,126 @@
|
|
1
|
+
import { equalBytes } from "@noble/curves/abstract/utils";
|
2
|
+
import { type Signature, encodeDeployData, serializeSignature } from "viem";
|
3
|
+
import type { Chain } from "../chains/types.js";
|
4
|
+
import type { ThirdwebClient } from "../client/client.js";
|
5
|
+
import { getContract } from "../contract/contract.js";
|
6
|
+
import { eth_call } from "../rpc/actions/eth_call.js";
|
7
|
+
import { getRpcClient } from "../rpc/rpc.js";
|
8
|
+
import { fromBytes } from "../utils/encoding/from-bytes.js";
|
9
|
+
import { type Hex, isHex } from "../utils/encoding/hex.js";
|
10
|
+
import { toBytes } from "../utils/encoding/to-bytes.js";
|
11
|
+
import { DEFAULT_ACCOUNT_FACTORY } from "../wallets/smart/lib/constants.js";
|
12
|
+
import {
|
13
|
+
universalSignatureValidatorAbi,
|
14
|
+
universalSignatureValidatorByteCode,
|
15
|
+
} from "./constants.js";
|
16
|
+
import { isErc6492Signature } from "./is-erc6492-signature.js";
|
17
|
+
import { serializeErc6492Signature } from "./serialize-erc6492-signature.js";
|
18
|
+
|
19
|
+
export type VerifyHashParams = {
|
20
|
+
hash: Hex;
|
21
|
+
signature: string | Uint8Array | Signature;
|
22
|
+
address: string;
|
23
|
+
client: ThirdwebClient;
|
24
|
+
chain: Chain;
|
25
|
+
accountFactory?: {
|
26
|
+
address: string;
|
27
|
+
verificationCalldata: Hex;
|
28
|
+
};
|
29
|
+
};
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @description Verify that an address created the provided signature for a given hash using [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492). This function is interoperable with all wallet types, including EOAs.
|
33
|
+
* This function should rarely be used directly, instead use @see {import("./verify-signature.js")} and @see {import("./verify-typed-data.js")}}
|
34
|
+
*
|
35
|
+
* @param {Hex} options.hash The hash that was signed
|
36
|
+
* @param {string | Uint8Array | Signature} options.signature The signature that was signed
|
37
|
+
* @param {string} options.address The address that signed the hash
|
38
|
+
* @param {ThirdwebClient} options.client The Thirdweb client
|
39
|
+
* @param {Chain} options.chain The chain that the address is on. For an EOA, this can be any chain.
|
40
|
+
* @param {string} [options.accountFactory.address] The address of the account factory that created the account if using a smart account with a custom account factory
|
41
|
+
* @param {Hex} [options.accountFactory.verificationCalldata] The calldata that was used to create the account if using a smart account with a custom account factory
|
42
|
+
*
|
43
|
+
* @returns {Promise<boolean>} A promise that resolves to `true` if the signature is valid, or `false` otherwise.
|
44
|
+
*
|
45
|
+
* @example
|
46
|
+
* ```ts
|
47
|
+
* import { verifyHash } from "thirdweb/utils";
|
48
|
+
* const isValid = await verifyHash({
|
49
|
+
* hash: "0x1234",
|
50
|
+
* signature: "0x1234",
|
51
|
+
* address: "0x1234",
|
52
|
+
* client,
|
53
|
+
* chain,
|
54
|
+
* });
|
55
|
+
* ```
|
56
|
+
*
|
57
|
+
* @auth
|
58
|
+
*/
|
59
|
+
export async function verifyHash({
|
60
|
+
hash,
|
61
|
+
signature,
|
62
|
+
address,
|
63
|
+
client,
|
64
|
+
chain,
|
65
|
+
accountFactory,
|
66
|
+
}: VerifyHashParams): Promise<boolean> {
|
67
|
+
const signatureHex = (() => {
|
68
|
+
if (isHex(signature)) return signature;
|
69
|
+
if (typeof signature === "object" && "r" in signature && "s" in signature)
|
70
|
+
return serializeSignature(signature);
|
71
|
+
if (signature instanceof Uint8Array) return fromBytes(signature, "hex");
|
72
|
+
// We should never hit this but TS doesn't know that
|
73
|
+
throw new Error(
|
74
|
+
`Invalid signature type for signature ${signature}: ${typeof signature}`,
|
75
|
+
);
|
76
|
+
})();
|
77
|
+
|
78
|
+
const accountContract = getContract({
|
79
|
+
address,
|
80
|
+
chain,
|
81
|
+
client,
|
82
|
+
});
|
83
|
+
|
84
|
+
const wrappedSignature = await (async () => {
|
85
|
+
// If this sigature was already wrapped for ERC-6492, carry on
|
86
|
+
if (isErc6492Signature(signatureHex)) return signatureHex;
|
87
|
+
|
88
|
+
// If the contract is already deployed, return the original signature
|
89
|
+
const { isContractDeployed } = await import(
|
90
|
+
"../utils/bytecode/is-contract-deployed.js"
|
91
|
+
);
|
92
|
+
const isDeployed = await isContractDeployed(accountContract);
|
93
|
+
if (!isDeployed) return signatureHex;
|
94
|
+
|
95
|
+
// Otherwise, serialize the signature for ERC-6492 validation
|
96
|
+
return serializeErc6492Signature({
|
97
|
+
address: accountFactory?.address ?? DEFAULT_ACCOUNT_FACTORY,
|
98
|
+
data: accountFactory?.verificationCalldata ?? "0x",
|
99
|
+
signature: signatureHex,
|
100
|
+
});
|
101
|
+
})();
|
102
|
+
|
103
|
+
const verificationData = encodeDeployData({
|
104
|
+
abi: universalSignatureValidatorAbi,
|
105
|
+
args: [address, hash, wrappedSignature],
|
106
|
+
bytecode: universalSignatureValidatorByteCode,
|
107
|
+
});
|
108
|
+
|
109
|
+
const rpcRequest = getRpcClient({
|
110
|
+
chain,
|
111
|
+
client,
|
112
|
+
});
|
113
|
+
|
114
|
+
try {
|
115
|
+
const result = await eth_call(rpcRequest, {
|
116
|
+
data: verificationData,
|
117
|
+
});
|
118
|
+
|
119
|
+
const hexResult = isHex(result) ? toBytes(result) : result;
|
120
|
+
return equalBytes(hexResult, toBytes("0x1"));
|
121
|
+
} catch (error) {
|
122
|
+
// TODO: Improve overall RPC error handling so we can tell if this was an actual verification failure or some other error
|
123
|
+
// Verification failed somehow
|
124
|
+
return false;
|
125
|
+
}
|
126
|
+
}
|