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.
Files changed (142) hide show
  1. package/dist/cjs/auth/core/verify-jwt.js +1 -1
  2. package/dist/cjs/auth/core/verify-jwt.js.map +1 -1
  3. package/dist/cjs/auth/verify-hash.js +98 -0
  4. package/dist/cjs/auth/verify-hash.js.map +1 -0
  5. package/dist/cjs/auth/verify-signature.js +5 -60
  6. package/dist/cjs/auth/verify-signature.js.map +1 -1
  7. package/dist/cjs/auth/verify-typed-data.js +80 -0
  8. package/dist/cjs/auth/verify-typed-data.js.map +1 -0
  9. package/dist/cjs/chains/chain-definitions/blast.js +17 -0
  10. package/dist/cjs/chains/chain-definitions/blast.js.map +1 -0
  11. package/dist/cjs/exports/chains.js +3 -1
  12. package/dist/cjs/exports/chains.js.map +1 -1
  13. package/dist/cjs/exports/extensions/erc20.js +3 -1
  14. package/dist/cjs/exports/extensions/erc20.js.map +1 -1
  15. package/dist/cjs/exports/utils.js +10 -1
  16. package/dist/cjs/exports/utils.js.map +1 -1
  17. package/dist/cjs/extensions/erc1271/checkContractWalletSignature.js +1 -0
  18. package/dist/cjs/extensions/erc1271/checkContractWalletSignature.js.map +1 -1
  19. package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js +1 -0
  20. package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
  21. package/dist/cjs/extensions/erc20/write/transferBatch.js +61 -0
  22. package/dist/cjs/extensions/erc20/write/transferBatch.js.map +1 -0
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +21 -12
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +1 -1
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +4 -4
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +1 -1
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -3
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +1 -4
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +4 -4
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.js +1 -1
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.js +1 -1
  37. package/dist/cjs/utils/hashing/hashTypedData.js +122 -0
  38. package/dist/cjs/utils/hashing/hashTypedData.js.map +1 -0
  39. package/dist/cjs/utils/jwt/decode-jwt.js +2 -2
  40. package/dist/cjs/utils/jwt/decode-jwt.js.map +1 -1
  41. package/dist/cjs/utils/jwt/refresh-jwt.js +1 -1
  42. package/dist/cjs/utils/jwt/refresh-jwt.js.map +1 -1
  43. package/dist/cjs/version.js +1 -1
  44. package/dist/esm/auth/core/verify-jwt.js +2 -2
  45. package/dist/esm/auth/core/verify-jwt.js.map +1 -1
  46. package/dist/esm/auth/verify-hash.js +95 -0
  47. package/dist/esm/auth/verify-hash.js.map +1 -0
  48. package/dist/esm/auth/verify-signature.js +6 -61
  49. package/dist/esm/auth/verify-signature.js.map +1 -1
  50. package/dist/esm/auth/verify-typed-data.js +77 -0
  51. package/dist/esm/auth/verify-typed-data.js.map +1 -0
  52. package/dist/esm/chains/chain-definitions/blast.js +14 -0
  53. package/dist/esm/chains/chain-definitions/blast.js.map +1 -0
  54. package/dist/esm/exports/chains.js +1 -0
  55. package/dist/esm/exports/chains.js.map +1 -1
  56. package/dist/esm/exports/extensions/erc20.js +1 -0
  57. package/dist/esm/exports/extensions/erc20.js.map +1 -1
  58. package/dist/esm/exports/utils.js +6 -0
  59. package/dist/esm/exports/utils.js.map +1 -1
  60. package/dist/esm/extensions/erc1271/checkContractWalletSignature.js +1 -0
  61. package/dist/esm/extensions/erc1271/checkContractWalletSignature.js.map +1 -1
  62. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js +1 -0
  63. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
  64. package/dist/esm/extensions/erc20/write/transferBatch.js +58 -0
  65. package/dist/esm/extensions/erc20/write/transferBatch.js.map +1 -0
  66. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +21 -12
  67. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  68. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +1 -1
  69. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +4 -4
  70. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +1 -1
  71. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -3
  72. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  73. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +1 -4
  74. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  75. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +1 -1
  76. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +4 -4
  77. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.js +1 -1
  79. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.js +1 -1
  80. package/dist/esm/utils/hashing/hashTypedData.js +118 -0
  81. package/dist/esm/utils/hashing/hashTypedData.js.map +1 -0
  82. package/dist/esm/utils/jwt/decode-jwt.js +1 -1
  83. package/dist/esm/utils/jwt/decode-jwt.js.map +1 -1
  84. package/dist/esm/utils/jwt/refresh-jwt.js +2 -2
  85. package/dist/esm/utils/jwt/refresh-jwt.js.map +1 -1
  86. package/dist/esm/version.js +1 -1
  87. package/dist/types/auth/verify-hash.d.ts +45 -0
  88. package/dist/types/auth/verify-hash.d.ts.map +1 -0
  89. package/dist/types/auth/verify-signature.d.ts.map +1 -1
  90. package/dist/types/auth/verify-typed-data.d.ts +75 -0
  91. package/dist/types/auth/verify-typed-data.d.ts.map +1 -0
  92. package/dist/types/chains/chain-definitions/blast.d.ts +27 -0
  93. package/dist/types/chains/chain-definitions/blast.d.ts.map +1 -0
  94. package/dist/types/exports/chains.d.ts +1 -0
  95. package/dist/types/exports/chains.d.ts.map +1 -1
  96. package/dist/types/exports/extensions/erc20.d.ts +1 -0
  97. package/dist/types/exports/extensions/erc20.d.ts.map +1 -1
  98. package/dist/types/exports/utils.d.ts +4 -0
  99. package/dist/types/exports/utils.d.ts.map +1 -1
  100. package/dist/types/extensions/erc1271/checkContractWalletSignature.d.ts +1 -0
  101. package/dist/types/extensions/erc1271/checkContractWalletSignature.d.ts.map +1 -1
  102. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts +1 -0
  103. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts.map +1 -1
  104. package/dist/types/extensions/erc20/write/transferBatch.d.ts +42 -0
  105. package/dist/types/extensions/erc20/write/transferBatch.d.ts.map +1 -0
  106. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
  107. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  108. package/dist/types/utils/hashing/hashTypedData.d.ts +17 -0
  109. package/dist/types/utils/hashing/hashTypedData.d.ts.map +1 -0
  110. package/dist/types/utils/jwt/decode-jwt.d.ts +1 -1
  111. package/dist/types/utils/jwt/decode-jwt.d.ts.map +1 -1
  112. package/dist/types/version.d.ts +1 -1
  113. package/package.json +1 -1
  114. package/src/auth/core/verify-jwt.ts +2 -2
  115. package/src/auth/verify-hash.test.ts +66 -0
  116. package/src/auth/verify-hash.ts +126 -0
  117. package/src/auth/verify-signature.ts +6 -77
  118. package/src/auth/verify-typed-data.test.ts +82 -0
  119. package/src/auth/verify-typed-data.ts +110 -0
  120. package/src/chains/chain-definitions/blast.ts +14 -0
  121. package/src/exports/chains.ts +1 -0
  122. package/src/exports/extensions/erc20.ts +4 -0
  123. package/src/exports/utils.ts +8 -0
  124. package/src/extensions/erc1271/checkContractWalletSignature.ts +1 -0
  125. package/src/extensions/erc1271/checkContractWalletSignedTypedData.ts +1 -0
  126. package/src/extensions/erc20/write/transferBatch.ts +78 -0
  127. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +42 -12
  128. package/src/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.tsx +1 -1
  129. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.tsx +5 -5
  130. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.tsx +1 -1
  131. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +1 -5
  132. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +1 -6
  133. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +2 -2
  134. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +4 -4
  135. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +1 -1
  136. package/src/react/web/ui/ConnectWallet/screens/Buy/tx-history/BuyTxHistoryButton.tsx +1 -1
  137. package/src/react/web/ui/ConnectWallet/screens/Buy/tx-history/TokenInfoRow.tsx +1 -1
  138. package/src/utils/hashing/hashTypedData.test.ts +207 -0
  139. package/src/utils/hashing/hashTypedData.ts +210 -0
  140. package/src/utils/jwt/decode-jwt.ts +1 -1
  141. package/src/utils/jwt/refresh-jwt.ts +2 -2
  142. 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,UAAU,CAAC,GAAW;IACpC,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
+ {"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 { deccodeJWT } from "./decode-jwt.js";
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 = deccodeJWT(jwt).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,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACxC,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"}
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"}
@@ -1,2 +1,2 @@
1
- export const version = "5.34.0-nightly-f6ff5a78fc2d65f0f250b154f1405210ca57ce0a-20240707000358";
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":"AACA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,MAAM,CAAC;AACd,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;AAG3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AASvD,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,oBAgErC;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C,wBAAwB,GAAG,OAAO,CAAC,mCAAmC,CAAC,CACxE,CAAC;AAwBF,wBAAsB,eAAe,CAAC,OAAO,EAAE,qBAAqB,oBA2BnE"}
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;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,mCAAmC,oBAW7C"}
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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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"}
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":"AAGA,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;;EA6DA"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUISelectionStates.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts"],"names":[],"mappings":"AAKA,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;;;;;;;;;;;;;;gBAhB+D,CAAC;kBACvD,CAAC;oBAAsB,CAAC;;;;;kBACwB,CAAC;;;;iCACrB,CAAC;;;;;;;;;;;;;;;gBAHyB,CAAC;kBACvD,CAAC;oBAAsB,CAAC;;;;;kBACwB,CAAC;;;;iCACrB,CAAC;;;;;;;;;;;;;;;;gBAHyB,CAAC;kBACvD,CAAC;oBAAsB,CAAC;;;;;kBACwB,CAAC;;;;iCACrB,CAAC;;;;;;;;;;;;;;;gBAHyB,CAAC;kBACvD,CAAC;oBAAsB,CAAC;;;;;kBACwB,CAAC;;;;iCACrB,CAAC;;;;;;;;;;EA0FtC"}
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 deccodeJWT(jwt: string): {
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,UAAU,CAAC,GAAG,EAAE,MAAM;;;EAiBrC"}
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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.34.0-nightly-f6ff5a78fc2d65f0f250b154f1405210ca57ce0a-20240707000358";
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-f6ff5a78fc2d65f0f250b154f1405210ca57ce0a-20240707000358",
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 { deccodeJWT } from "../../utils/jwt/decode-jwt.js";
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 } = deccodeJWT(params.jwt);
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
+ }