thirdweb 5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/extensions/erc20/read/isERC20.js +26 -8
  2. package/dist/cjs/extensions/erc20/read/isERC20.js.map +1 -1
  3. package/dist/cjs/merkletree/MerkleTree.js +1 -1
  4. package/dist/cjs/merkletree/MerkleTree.js.map +1 -1
  5. package/dist/cjs/react/core/hooks/wallets/useActiveWallet.js +29 -0
  6. package/dist/cjs/react/core/hooks/wallets/useActiveWallet.js.map +1 -1
  7. package/dist/cjs/utils/extensions/drops/fetch-proofs-for-claimers.js +3 -3
  8. package/dist/cjs/utils/extensions/drops/fetch-proofs-for-claimers.js.map +1 -1
  9. package/dist/cjs/version.js +1 -1
  10. package/dist/cjs/version.js.map +1 -1
  11. package/dist/esm/extensions/erc20/read/isERC20.js +26 -8
  12. package/dist/esm/extensions/erc20/read/isERC20.js.map +1 -1
  13. package/dist/esm/merkletree/MerkleTree.js +1 -1
  14. package/dist/esm/merkletree/MerkleTree.js.map +1 -1
  15. package/dist/esm/react/core/hooks/wallets/useActiveWallet.js +29 -0
  16. package/dist/esm/react/core/hooks/wallets/useActiveWallet.js.map +1 -1
  17. package/dist/esm/utils/extensions/drops/fetch-proofs-for-claimers.js +4 -4
  18. package/dist/esm/utils/extensions/drops/fetch-proofs-for-claimers.js.map +1 -1
  19. package/dist/esm/version.js +1 -1
  20. package/dist/esm/version.js.map +1 -1
  21. package/dist/types/extensions/erc20/read/isERC20.d.ts +3 -4
  22. package/dist/types/extensions/erc20/read/isERC20.d.ts.map +1 -1
  23. package/dist/types/react/core/hooks/wallets/useActiveWallet.d.ts +29 -0
  24. package/dist/types/react/core/hooks/wallets/useActiveWallet.d.ts.map +1 -1
  25. package/dist/types/version.d.ts +1 -1
  26. package/dist/types/version.d.ts.map +1 -1
  27. package/package.json +2 -2
  28. package/src/extensions/erc1155/read/getOwnedNFTs.test.ts +62 -0
  29. package/src/extensions/erc20/read/isERC20.ts +27 -9
  30. package/src/merkletree/MerkleTree.test.ts +30 -0
  31. package/src/merkletree/MerkleTree.ts +1 -1
  32. package/src/react/core/hooks/wallets/useActiveWallet.ts +29 -0
  33. package/src/utils/extensions/drops/fetch-proofs-for-claimers.ts +4 -4
  34. package/src/version.ts +1 -1
@@ -1,11 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isERC20 = isERC20;
4
- const supportsInterface_js_1 = require("../../erc165/__generated__/IERC165/read/supportsInterface.js");
4
+ const name_js_1 = require("../../common/__generated__/IContractMetadata/read/name.js");
5
+ const symbol_js_1 = require("../../common/__generated__/IContractMetadata/read/symbol.js");
6
+ const allowance_js_1 = require("../__generated__/IERC20/read/allowance.js");
7
+ const balanceOf_js_1 = require("../__generated__/IERC20/read/balanceOf.js");
8
+ const decimals_js_1 = require("../__generated__/IERC20/read/decimals.js");
9
+ const totalSupply_js_1 = require("../__generated__/IERC20/read/totalSupply.js");
10
+ const approve_js_1 = require("../__generated__/IERC20/write/approve.js");
11
+ const transfer_js_1 = require("../__generated__/IERC20/write/transfer.js");
12
+ const transferFrom_js_1 = require("../__generated__/IERC20/write/transferFrom.js");
5
13
  /**
6
- * Check if a contract supports the ERC20 interface.
14
+ * Check if a contract is an ERC20 token.
7
15
  * @param options - The transaction options.
8
- * @returns A boolean indicating whether the contract supports the ERC20 interface.
16
+ * @returns A boolean indicating whether the contract is an ERC20 token.
9
17
  * @extension ERC20
10
18
  * @example
11
19
  * ```ts
@@ -13,10 +21,20 @@ const supportsInterface_js_1 = require("../../erc165/__generated__/IERC165/read/
13
21
  * const result = await isERC20({ contract });
14
22
  * ```
15
23
  */
16
- function isERC20(options) {
17
- return (0, supportsInterface_js_1.supportsInterface)({
18
- contract: options.contract,
19
- interfaceId: "0x36372b07",
20
- });
24
+ function isERC20(availableSelectors) {
25
+ // there is no trustworthy way to check if a contract is ERC20 via ERC165, so we do this manually.
26
+ // see: https://github.com/OpenZeppelin/openzeppelin-contracts/issues/3575
27
+ // see: https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
28
+ return [
29
+ (0, name_js_1.isNameSupported)(availableSelectors),
30
+ (0, symbol_js_1.isSymbolSupported)(availableSelectors),
31
+ (0, decimals_js_1.isDecimalsSupported)(availableSelectors),
32
+ (0, totalSupply_js_1.isTotalSupplySupported)(availableSelectors),
33
+ (0, balanceOf_js_1.isBalanceOfSupported)(availableSelectors),
34
+ (0, transfer_js_1.isTransferSupported)(availableSelectors),
35
+ (0, transferFrom_js_1.isTransferFromSupported)(availableSelectors),
36
+ (0, approve_js_1.isApproveSupported)(availableSelectors),
37
+ (0, allowance_js_1.isAllowanceSupported)(availableSelectors),
38
+ ].every(Boolean);
21
39
  }
22
40
  //# sourceMappingURL=isERC20.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isERC20.js","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":";;AAcA,0BAKC;AAlBD,uGAAiG;AAEjG;;;;;;;;;;GAUG;AACH,SAAgB,OAAO,CAAC,OAA+B;IACrD,OAAO,IAAA,wCAAiB,EAAC;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,YAAY;KAC1B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"isERC20.js","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":";;AAqBA,0BAgBC;AArCD,uFAA4F;AAC5F,2FAAgG;AAChG,4EAAiF;AACjF,4EAAiF;AACjF,0EAA+E;AAC/E,gFAAqF;AACrF,yEAA8E;AAC9E,2EAAgF;AAChF,mFAAwF;AAExF;;;;;;;;;;GAUG;AACH,SAAgB,OAAO,CAAC,kBAA4B;IAClD,kGAAkG;IAClG,0EAA0E;IAC1E,wEAAwE;IAExE,OAAO;QACL,IAAA,yBAAe,EAAC,kBAAkB,CAAC;QACnC,IAAA,6BAAiB,EAAC,kBAAkB,CAAC;QACrC,IAAA,iCAAmB,EAAC,kBAAkB,CAAC;QACvC,IAAA,uCAAsB,EAAC,kBAAkB,CAAC;QAC1C,IAAA,mCAAoB,EAAC,kBAAkB,CAAC;QACxC,IAAA,iCAAmB,EAAC,kBAAkB,CAAC;QACvC,IAAA,yCAAuB,EAAC,kBAAkB,CAAC;QAC3C,IAAA,+BAAkB,EAAC,kBAAkB,CAAC;QACtC,IAAA,mCAAoB,EAAC,kBAAkB,CAAC;KACzC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
@@ -25,7 +25,7 @@ class MerkleTree {
25
25
  value: []
26
26
  });
27
27
  this.leaves = leaves.map((el) => el instanceof Uint8Array ? el : (0, to_bytes_js_1.hexToBytes)(el));
28
- this.leaves = this.leaves.sort();
28
+ this.leaves = this.leaves.sort(uint8_array_js_1.compareUint8Arrays);
29
29
  this.createHashes(this.leaves);
30
30
  }
31
31
  getHexRoot() {
@@ -1 +1 @@
1
- {"version":3,"file":"MerkleTree.js","sourceRoot":"","sources":["../../../src/merkletree/MerkleTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MerkleTree.js","sourceRoot":"","sources":["../../../src/merkletree/MerkleTree.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,40 @@ const connection_manager_js_1 = require("../../providers/connection-manager.js")
7
7
  * A hook that returns the active wallet
8
8
  * @returns The active `Wallet` or `undefined` if no active wallet is set.
9
9
  * @example
10
+ *
11
+ * ### Basic usage
10
12
  * ```jsx
11
13
  * import { useActiveWallet } from "thirdweb/react";
12
14
  *
13
15
  * const wallet = useActiveWallet();
14
16
  * ```
17
+ *
18
+ * ### Listen to account change event
19
+ * ```jsx
20
+ * const wallet = useActiveWallet();
21
+ *
22
+ * wallet?.subscribe("accountChanged", (account) => {
23
+ * console.log(account);
24
+ * });
25
+ * ```
26
+ *
27
+ * ### Listen to multiple accounts changed event
28
+ * ```jsx
29
+ * const wallet = useActiveWallet();
30
+ *
31
+ * wallet?.subscribe("accountsChanged", (addresses) => {
32
+ * console.log(addresses);
33
+ * });
34
+ * ```
35
+ *
36
+ * ### Listen to network change event
37
+ * ```jsx
38
+ * const wallet = useActiveWallet();
39
+ *
40
+ * wallet?.subscribe("chainChanged", (chain) => {
41
+ * console.log(chain);
42
+ * });
43
+ * ```
15
44
  * @walletConnection
16
45
  */
17
46
  function useActiveWallet() {
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveWallet.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":";;AAcA,0CAIC;AAlBD,iCAA6C;AAC7C,iFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAA,+CAAuB,EAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxC,OAAO,IAAA,4BAAoB,EAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"useActiveWallet.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":";;AA2CA,0CAIC;AA/CD,iCAA6C;AAC7C,iFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAA,+CAAuB,EAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxC,OAAO,IAAA,4BAAoB,EAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC"}
@@ -51,8 +51,8 @@ async function fetchProofsForClaimer(options) {
51
51
  tokenDecimals: options.tokenDecimals,
52
52
  });
53
53
  }));
54
- const tree = new MerkleTree_js_1.MerkleTree(hashedEntries);
55
54
  // 5. get the proof for the claimer + the sub merkle tree root
55
+ const tree = new MerkleTree_js_1.MerkleTree(hashedEntries);
56
56
  const entry = shardData.entries.find((i) => i.address.toLowerCase() === claimer.toLowerCase());
57
57
  if (!entry) {
58
58
  return null;
@@ -66,10 +66,10 @@ async function fetchProofsForClaimer(options) {
66
66
  }))
67
67
  .concat(shardData.proofs);
68
68
  // 6. return the proof and the entry data for the contract call
69
- const currencyAddress = (entry.currencyAddress || addresses_js_1.ADDRESS_ZERO);
69
+ const currencyAddress = (entry.currencyAddress || addresses_js_1.ZERO_ADDRESS);
70
70
  const currencyDecimals = await (async () => {
71
71
  if ((0, addresses_js_1.isNativeTokenAddress)(currencyAddress) ||
72
- currencyAddress === addresses_js_1.ADDRESS_ZERO) {
72
+ currencyAddress === addresses_js_1.ZERO_ADDRESS) {
73
73
  return 18;
74
74
  }
75
75
  const [{ getContract }, { decimals: getDecimals }] = await Promise.all([
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-proofs-for-claimers.js","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/fetch-proofs-for-claimers.ts"],"names":[],"mappings":";;AAiBA,sDAyGC;AA1HD,kEAGyC;AAEzC,mGAA6F;AAC7F,qEAA+D;AAC/D,8DAAwD;AAExD,+DAAwD;AACxD,mDAA4C;AAOrC,KAAK,UAAU,qBAAqB,CAAC,OAK3C;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClD,yCAAyC;IACzC,MAAM,QAAQ,GAAG,MAAM,IAAA,4CAAmB,EAAC;QACzC,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,UAAU,GAA2B,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACjE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAQ,EAAC;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IACH,MAAM,UAAU,GAA0B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEhE,oDAAoD;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5E,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,OAAO;QACpB,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC;IAC7B,IAAI,SAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAQ,EAAC;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,mBAAmB;SACzB,CAAC,CAAC;QACH,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,IAAA,yBAAS,EAAC;YACf,KAAK;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,0BAAU,CAAC,aAAa,CAAC,CAAC;IAC3C,8DAA8D;IAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACzD,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI;SACf,WAAW,CACV,MAAM,IAAA,yBAAS,EAAC;QACd,KAAK;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CACH;SACA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,+DAA+D;IAC/D,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,2BAAY,CAAY,CAAC;IAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACzC,IACE,IAAA,mCAAoB,EAAC,eAAe,CAAC;YACrC,eAAe,KAAK,2BAAY,EAChC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;iDAC9D,+BAA+B;iDAC/B,4CAA4C;SACpD,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;YACnC,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,KAAK;QACL,sBAAsB,EAAE,IAAA,qCAAe,EAAC;YACtC,QAAQ,EAAE,KAAK,CAAC,YAAY,IAAI,WAAW;YAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QACF,aAAa,EAAE,IAAA,qCAAe,EAAC;YAC7B,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,WAAW;YACpC,aAAa,EAAE,gBAAgB;SAChC,CAAC;QACF,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fetch-proofs-for-claimers.js","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/fetch-proofs-for-claimers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412";
4
+ exports.version = "5.50.0";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,wEAAwE,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC"}
@@ -1,8 +1,16 @@
1
- import { supportsInterface } from "../../erc165/__generated__/IERC165/read/supportsInterface.js";
1
+ import { isNameSupported } from "../../common/__generated__/IContractMetadata/read/name.js";
2
+ import { isSymbolSupported } from "../../common/__generated__/IContractMetadata/read/symbol.js";
3
+ import { isAllowanceSupported } from "../__generated__/IERC20/read/allowance.js";
4
+ import { isBalanceOfSupported } from "../__generated__/IERC20/read/balanceOf.js";
5
+ import { isDecimalsSupported } from "../__generated__/IERC20/read/decimals.js";
6
+ import { isTotalSupplySupported } from "../__generated__/IERC20/read/totalSupply.js";
7
+ import { isApproveSupported } from "../__generated__/IERC20/write/approve.js";
8
+ import { isTransferSupported } from "../__generated__/IERC20/write/transfer.js";
9
+ import { isTransferFromSupported } from "../__generated__/IERC20/write/transferFrom.js";
2
10
  /**
3
- * Check if a contract supports the ERC20 interface.
11
+ * Check if a contract is an ERC20 token.
4
12
  * @param options - The transaction options.
5
- * @returns A boolean indicating whether the contract supports the ERC20 interface.
13
+ * @returns A boolean indicating whether the contract is an ERC20 token.
6
14
  * @extension ERC20
7
15
  * @example
8
16
  * ```ts
@@ -10,10 +18,20 @@ import { supportsInterface } from "../../erc165/__generated__/IERC165/read/suppo
10
18
  * const result = await isERC20({ contract });
11
19
  * ```
12
20
  */
13
- export function isERC20(options) {
14
- return supportsInterface({
15
- contract: options.contract,
16
- interfaceId: "0x36372b07",
17
- });
21
+ export function isERC20(availableSelectors) {
22
+ // there is no trustworthy way to check if a contract is ERC20 via ERC165, so we do this manually.
23
+ // see: https://github.com/OpenZeppelin/openzeppelin-contracts/issues/3575
24
+ // see: https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
25
+ return [
26
+ isNameSupported(availableSelectors),
27
+ isSymbolSupported(availableSelectors),
28
+ isDecimalsSupported(availableSelectors),
29
+ isTotalSupplySupported(availableSelectors),
30
+ isBalanceOfSupported(availableSelectors),
31
+ isTransferSupported(availableSelectors),
32
+ isTransferFromSupported(availableSelectors),
33
+ isApproveSupported(availableSelectors),
34
+ isAllowanceSupported(availableSelectors),
35
+ ].every(Boolean);
18
36
  }
19
37
  //# sourceMappingURL=isERC20.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isERC20.js","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAEjG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,OAA+B;IACrD,OAAO,iBAAiB,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,YAAY;KAC1B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"isERC20.js","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,kBAA4B;IAClD,kGAAkG;IAClG,0EAA0E;IAC1E,wEAAwE;IAExE,OAAO;QACL,eAAe,CAAC,kBAAkB,CAAC;QACnC,iBAAiB,CAAC,kBAAkB,CAAC;QACrC,mBAAmB,CAAC,kBAAkB,CAAC;QACvC,sBAAsB,CAAC,kBAAkB,CAAC;QAC1C,oBAAoB,CAAC,kBAAkB,CAAC;QACxC,mBAAmB,CAAC,kBAAkB,CAAC;QACvC,uBAAuB,CAAC,kBAAkB,CAAC;QAC3C,kBAAkB,CAAC,kBAAkB,CAAC;QACtC,oBAAoB,CAAC,kBAAkB,CAAC;KACzC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
@@ -22,7 +22,7 @@ export class MerkleTree {
22
22
  value: []
23
23
  });
24
24
  this.leaves = leaves.map((el) => el instanceof Uint8Array ? el : hexToBytes(el));
25
- this.leaves = this.leaves.sort();
25
+ this.leaves = this.leaves.sort(compareUint8Arrays);
26
26
  this.createHashes(this.leaves);
27
27
  }
28
28
  getHexRoot() {
@@ -1 +1 @@
1
- {"version":3,"file":"MerkleTree.js","sourceRoot":"","sources":["../../../src/merkletree/MerkleTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MerkleTree.js","sourceRoot":"","sources":["../../../src/merkletree/MerkleTree.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,40 @@ import { useConnectionManagerCtx } from "../../providers/connection-manager.js";
4
4
  * A hook that returns the active wallet
5
5
  * @returns The active `Wallet` or `undefined` if no active wallet is set.
6
6
  * @example
7
+ *
8
+ * ### Basic usage
7
9
  * ```jsx
8
10
  * import { useActiveWallet } from "thirdweb/react";
9
11
  *
10
12
  * const wallet = useActiveWallet();
11
13
  * ```
14
+ *
15
+ * ### Listen to account change event
16
+ * ```jsx
17
+ * const wallet = useActiveWallet();
18
+ *
19
+ * wallet?.subscribe("accountChanged", (account) => {
20
+ * console.log(account);
21
+ * });
22
+ * ```
23
+ *
24
+ * ### Listen to multiple accounts changed event
25
+ * ```jsx
26
+ * const wallet = useActiveWallet();
27
+ *
28
+ * wallet?.subscribe("accountsChanged", (addresses) => {
29
+ * console.log(addresses);
30
+ * });
31
+ * ```
32
+ *
33
+ * ### Listen to network change event
34
+ * ```jsx
35
+ * const wallet = useActiveWallet();
36
+ *
37
+ * wallet?.subscribe("chainChanged", (chain) => {
38
+ * console.log(chain);
39
+ * });
40
+ * ```
12
41
  * @walletConnection
13
42
  */
14
43
  export function useActiveWallet() {
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveWallet.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxC,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"useActiveWallet.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxC,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ADDRESS_ZERO, isNativeTokenAddress, } from "../../../constants/addresses.js";
1
+ import { ZERO_ADDRESS, isNativeTokenAddress, } from "../../../constants/addresses.js";
2
2
  import { getContractMetadata } from "../../../extensions/common/read/getContractMetadata.js";
3
3
  import { MerkleTree } from "../../../merkletree/MerkleTree.js";
4
4
  import { download } from "../../../storage/download.js";
@@ -48,8 +48,8 @@ export async function fetchProofsForClaimer(options) {
48
48
  tokenDecimals: options.tokenDecimals,
49
49
  });
50
50
  }));
51
- const tree = new MerkleTree(hashedEntries);
52
51
  // 5. get the proof for the claimer + the sub merkle tree root
52
+ const tree = new MerkleTree(hashedEntries);
53
53
  const entry = shardData.entries.find((i) => i.address.toLowerCase() === claimer.toLowerCase());
54
54
  if (!entry) {
55
55
  return null;
@@ -63,10 +63,10 @@ export async function fetchProofsForClaimer(options) {
63
63
  }))
64
64
  .concat(shardData.proofs);
65
65
  // 6. return the proof and the entry data for the contract call
66
- const currencyAddress = (entry.currencyAddress || ADDRESS_ZERO);
66
+ const currencyAddress = (entry.currencyAddress || ZERO_ADDRESS);
67
67
  const currencyDecimals = await (async () => {
68
68
  if (isNativeTokenAddress(currencyAddress) ||
69
- currencyAddress === ADDRESS_ZERO) {
69
+ currencyAddress === ZERO_ADDRESS) {
70
70
  return 18;
71
71
  }
72
72
  const [{ getContract }, { decimals: getDecimals }] = await Promise.all([
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-proofs-for-claimers.js","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/fetch-proofs-for-claimers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-proofs-for-claimers.js","sourceRoot":"","sources":["../../../../../src/utils/extensions/drops/fetch-proofs-for-claimers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAK3C;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClD,yCAAyC;IACzC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC;QACzC,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,UAAU,GAA2B,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACjE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IACH,MAAM,UAAU,GAA0B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEhE,oDAAoD;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5E,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,OAAO;QACpB,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC;IAC7B,IAAI,SAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,mBAAmB;SACzB,CAAC,CAAC;QACH,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;YACf,KAAK;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IACF,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACzD,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI;SACf,WAAW,CACV,MAAM,SAAS,CAAC;QACd,KAAK;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CACH;SACA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,+DAA+D;IAC/D,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,YAAY,CAAY,CAAC;IAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACzC,IACE,oBAAoB,CAAC,eAAe,CAAC;YACrC,eAAe,KAAK,YAAY,EAChC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrE,MAAM,CAAC,+BAA+B,CAAC;YACvC,MAAM,CAAC,4CAA4C,CAAC;SACrD,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;YACnC,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,KAAK;QACL,sBAAsB,EAAE,eAAe,CAAC;YACtC,QAAQ,EAAE,KAAK,CAAC,YAAY,IAAI,WAAW;YAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QACF,aAAa,EAAE,eAAe,CAAC;YAC7B,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,WAAW;YACpC,aAAa,EAAE,gBAAgB;SAChC,CAAC;QACF,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412";
1
+ export const version = "5.50.0";
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,wEAAwE,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC"}
@@ -1,8 +1,7 @@
1
- import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
1
  /**
3
- * Check if a contract supports the ERC20 interface.
2
+ * Check if a contract is an ERC20 token.
4
3
  * @param options - The transaction options.
5
- * @returns A boolean indicating whether the contract supports the ERC20 interface.
4
+ * @returns A boolean indicating whether the contract is an ERC20 token.
6
5
  * @extension ERC20
7
6
  * @example
8
7
  * ```ts
@@ -10,5 +9,5 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
10
9
  * const result = await isERC20({ contract });
11
10
  * ```
12
11
  */
13
- export declare function isERC20(options: BaseTransactionOptions): Promise<boolean>;
12
+ export declare function isERC20(availableSelectors: string[]): boolean;
14
13
  //# sourceMappingURL=isERC20.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isERC20.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,sBAAsB,oBAKtD"}
1
+ {"version":3,"file":"isERC20.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc20/read/isERC20.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAgBnD"}
@@ -2,11 +2,40 @@
2
2
  * A hook that returns the active wallet
3
3
  * @returns The active `Wallet` or `undefined` if no active wallet is set.
4
4
  * @example
5
+ *
6
+ * ### Basic usage
5
7
  * ```jsx
6
8
  * import { useActiveWallet } from "thirdweb/react";
7
9
  *
8
10
  * const wallet = useActiveWallet();
9
11
  * ```
12
+ *
13
+ * ### Listen to account change event
14
+ * ```jsx
15
+ * const wallet = useActiveWallet();
16
+ *
17
+ * wallet?.subscribe("accountChanged", (account) => {
18
+ * console.log(account);
19
+ * });
20
+ * ```
21
+ *
22
+ * ### Listen to multiple accounts changed event
23
+ * ```jsx
24
+ * const wallet = useActiveWallet();
25
+ *
26
+ * wallet?.subscribe("accountsChanged", (addresses) => {
27
+ * console.log(addresses);
28
+ * });
29
+ * ```
30
+ *
31
+ * ### Listen to network change event
32
+ * ```jsx
33
+ * const wallet = useActiveWallet();
34
+ *
35
+ * wallet?.subscribe("chainChanged", (chain) => {
36
+ * console.log(chain);
37
+ * });
38
+ * ```
10
39
  * @walletConnection
11
40
  */
12
41
  export declare function useActiveWallet(): import("../../../../exports/wallets.js").Wallet | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,gEAI9B"}
1
+ {"version":3,"file":"useActiveWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useActiveWallet.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,eAAe,gEAI9B"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412";
1
+ export declare const version = "5.50.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,2EAA2E,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412",
3
+ "version": "5.50.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -204,7 +204,7 @@
204
204
  "mipd": "0.0.7",
205
205
  "node-libs-browser": "2.2.1",
206
206
  "uqr": "0.1.2",
207
- "viem": "2.19.3"
207
+ "viem": "2.21.1"
208
208
  },
209
209
  "peerDependencies": {
210
210
  "@aws-sdk/client-lambda": "^3",
@@ -0,0 +1,62 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
4
+ import { TEST_CLIENT } from "~test/test-clients.js";
5
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
6
+ import { getContract } from "../../../contract/contract.js";
7
+ import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
8
+ import { deployERC1155Contract } from "../../prebuilts/deploy-erc1155.js";
9
+ import { mintTo } from "../write/mintTo.js";
10
+ import { getOwnedNFTs } from "./getOwnedNFTs.js";
11
+
12
+ const account = TEST_ACCOUNT_A;
13
+ const client = TEST_CLIENT;
14
+ const chain = ANVIL_CHAIN;
15
+
16
+ describe.runIf(process.env.TW_SECRET_KEY)("ERC1155 getOwnedTokenIds", () => {
17
+ it("should fetch owned tokenIds", async () => {
18
+ const address = await deployERC1155Contract({
19
+ type: "TokenERC1155",
20
+ chain,
21
+ client,
22
+ account,
23
+ params: {
24
+ name: "edition",
25
+ contractURI: TEST_CONTRACT_URI,
26
+ },
27
+ });
28
+
29
+ const contract = getContract({
30
+ address,
31
+ chain,
32
+ client,
33
+ });
34
+
35
+ const transaction = mintTo({
36
+ contract,
37
+ nft: { name: "token 0" },
38
+ to: account.address,
39
+ supply: 20n,
40
+ });
41
+ await sendAndConfirmTransaction({ transaction, account });
42
+
43
+ const ownedTokenIds = await getOwnedNFTs({
44
+ contract,
45
+ address: account.address,
46
+ });
47
+
48
+ expect(ownedTokenIds).toStrictEqual([
49
+ {
50
+ id: 0n,
51
+ metadata: {
52
+ name: "token 0",
53
+ },
54
+ owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
55
+ quantityOwned: 20n,
56
+ supply: 20n,
57
+ tokenURI: "ipfs://QmPZ6LpGqMuFbHKTXrNW1NRNLHf1nrxS4dtoFqdZZTKvPX/0",
58
+ type: "ERC1155",
59
+ },
60
+ ]);
61
+ });
62
+ });
@@ -1,10 +1,17 @@
1
- import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
- import { supportsInterface } from "../../erc165/__generated__/IERC165/read/supportsInterface.js";
1
+ import { isNameSupported } from "../../common/__generated__/IContractMetadata/read/name.js";
2
+ import { isSymbolSupported } from "../../common/__generated__/IContractMetadata/read/symbol.js";
3
+ import { isAllowanceSupported } from "../__generated__/IERC20/read/allowance.js";
4
+ import { isBalanceOfSupported } from "../__generated__/IERC20/read/balanceOf.js";
5
+ import { isDecimalsSupported } from "../__generated__/IERC20/read/decimals.js";
6
+ import { isTotalSupplySupported } from "../__generated__/IERC20/read/totalSupply.js";
7
+ import { isApproveSupported } from "../__generated__/IERC20/write/approve.js";
8
+ import { isTransferSupported } from "../__generated__/IERC20/write/transfer.js";
9
+ import { isTransferFromSupported } from "../__generated__/IERC20/write/transferFrom.js";
3
10
 
4
11
  /**
5
- * Check if a contract supports the ERC20 interface.
12
+ * Check if a contract is an ERC20 token.
6
13
  * @param options - The transaction options.
7
- * @returns A boolean indicating whether the contract supports the ERC20 interface.
14
+ * @returns A boolean indicating whether the contract is an ERC20 token.
8
15
  * @extension ERC20
9
16
  * @example
10
17
  * ```ts
@@ -12,9 +19,20 @@ import { supportsInterface } from "../../erc165/__generated__/IERC165/read/suppo
12
19
  * const result = await isERC20({ contract });
13
20
  * ```
14
21
  */
15
- export function isERC20(options: BaseTransactionOptions) {
16
- return supportsInterface({
17
- contract: options.contract,
18
- interfaceId: "0x36372b07",
19
- });
22
+ export function isERC20(availableSelectors: string[]) {
23
+ // there is no trustworthy way to check if a contract is ERC20 via ERC165, so we do this manually.
24
+ // see: https://github.com/OpenZeppelin/openzeppelin-contracts/issues/3575
25
+ // see: https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
26
+
27
+ return [
28
+ isNameSupported(availableSelectors),
29
+ isSymbolSupported(availableSelectors),
30
+ isDecimalsSupported(availableSelectors),
31
+ isTotalSupplySupported(availableSelectors),
32
+ isBalanceOfSupported(availableSelectors),
33
+ isTransferSupported(availableSelectors),
34
+ isTransferFromSupported(availableSelectors),
35
+ isApproveSupported(availableSelectors),
36
+ isAllowanceSupported(availableSelectors),
37
+ ].every(Boolean);
20
38
  }
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
+ import type { Hex } from "../utils/encoding/hex.js";
2
3
  import { stringToBytes } from "../utils/encoding/to-bytes.js";
3
4
  import { MerkleTree } from "./MerkleTree.js";
4
5
 
@@ -14,6 +15,35 @@ describe("MerkleTree", () => {
14
15
  `"0xebd2ffa91ce49e68a5ae1283e5babdf2655f8ea9ea0ee36ed525cc41d171a882"`,
15
16
  );
16
17
  });
18
+
19
+ it("should return root for large merkle trees", () => {
20
+ const leaves: Hex[] = [
21
+ "0xe1b12834247548c6bf6a9d37d2090a5f41beda62be633f705bc7c6e924342b4d",
22
+ "0x232570d6677f4e4b8947d8369750a4da492511d19e104db19dfae1200c3ff4db",
23
+ "0xe30d909533984527552083c16f23927cb9928c2e01b7252989f1c4fb9714deca",
24
+ "0xd13d5d1bf095147532482f25aac6d72905850864aab58f9dac28beb655dc4726",
25
+ "0xa0eea66d581045e22cbeccd59027e62b5d753fd3118f068b444bceec601be03f",
26
+ "0x222cd80957bf16ed8ce63a492a5035830cc2bfe04e2d46cc28e3aacb5db1277a",
27
+ "0xb1525c3a1a9d0fa632857acd0216609a80c19293fc3273f4cac664ca49a9e323",
28
+ "0x18b19c2a11bd54e98cc841bc8863d3e8582da3dd21903aedfe6745d41083653b",
29
+ "0xc198129437401b73388fa41dfaa82457015716050c6632364a1db94db1f0fb19",
30
+ "0x7621bd1c73bb5d8487459d8be36c5445a65a7fda457972d7f9de22a826739281",
31
+ "0x1cc9ca923d763f8de998921de43da79d6415eaff9b875e3e619c246fc26160b7",
32
+ "0xb4526c4f954e3230701cb7a392081007c050e950d886a25bac5fb14e3639e258",
33
+ "0x7d00f9a67344ed46afab13a398ea4bbf40915283f08f5caaf7d128a836361943",
34
+ "0xb11d4116f885aa50e9e9cbddf61b4d582413cd959302c68bfc0430fe8d5f609b",
35
+ "0xd474bee9ba879f0e0ae0827601642460e5439b4c3acb69da07b77ae2779a4eb2",
36
+ "0xb2b902dfab66d5dbee090467f02abd14c49e11f92a7d58fda53982f006f4360c",
37
+ "0x7ed8ec6456a2418c91d362f5ef5b4865d68a1df05722fe0fa9ecf23e0fc7e935",
38
+ "0xb1efbe628e4a0062c6f241f2ccd3663269fafb4305d2cbe33c6f94d0aea8e195",
39
+ ];
40
+ const merkleTree = new MerkleTree(leaves);
41
+ const hexProof = merkleTree.getHexRoot();
42
+
43
+ expect(hexProof).toBe(
44
+ "0x58053466a63f980211c457688c927035d61a7717b7744afe3758138ce66a6fda",
45
+ );
46
+ });
17
47
  });
18
48
 
19
49
  describe("getHexProof", () => {
@@ -26,7 +26,7 @@ export class MerkleTree {
26
26
  el instanceof Uint8Array ? el : hexToBytes(el),
27
27
  );
28
28
 
29
- this.leaves = this.leaves.sort();
29
+ this.leaves = this.leaves.sort(compareUint8Arrays);
30
30
 
31
31
  this.createHashes(this.leaves);
32
32
  }
@@ -5,11 +5,40 @@ import { useConnectionManagerCtx } from "../../providers/connection-manager.js";
5
5
  * A hook that returns the active wallet
6
6
  * @returns The active `Wallet` or `undefined` if no active wallet is set.
7
7
  * @example
8
+ *
9
+ * ### Basic usage
8
10
  * ```jsx
9
11
  * import { useActiveWallet } from "thirdweb/react";
10
12
  *
11
13
  * const wallet = useActiveWallet();
12
14
  * ```
15
+ *
16
+ * ### Listen to account change event
17
+ * ```jsx
18
+ * const wallet = useActiveWallet();
19
+ *
20
+ * wallet?.subscribe("accountChanged", (account) => {
21
+ * console.log(account);
22
+ * });
23
+ * ```
24
+ *
25
+ * ### Listen to multiple accounts changed event
26
+ * ```jsx
27
+ * const wallet = useActiveWallet();
28
+ *
29
+ * wallet?.subscribe("accountsChanged", (addresses) => {
30
+ * console.log(addresses);
31
+ * });
32
+ * ```
33
+ *
34
+ * ### Listen to network change event
35
+ * ```jsx
36
+ * const wallet = useActiveWallet();
37
+ *
38
+ * wallet?.subscribe("chainChanged", (chain) => {
39
+ * console.log(chain);
40
+ * });
41
+ * ```
13
42
  * @walletConnection
14
43
  */
15
44
  export function useActiveWallet() {
@@ -1,5 +1,5 @@
1
1
  import {
2
- ADDRESS_ZERO,
2
+ ZERO_ADDRESS,
3
3
  isNativeTokenAddress,
4
4
  } from "../../../constants/addresses.js";
5
5
  import type { ThirdwebContract } from "../../../contract/contract.js";
@@ -69,8 +69,8 @@ export async function fetchProofsForClaimer(options: {
69
69
  });
70
70
  }),
71
71
  );
72
- const tree = new MerkleTree(hashedEntries);
73
72
  // 5. get the proof for the claimer + the sub merkle tree root
73
+ const tree = new MerkleTree(hashedEntries);
74
74
  const entry = shardData.entries.find(
75
75
  (i) => i.address.toLowerCase() === claimer.toLowerCase(),
76
76
  );
@@ -88,11 +88,11 @@ export async function fetchProofsForClaimer(options: {
88
88
  )
89
89
  .concat(shardData.proofs);
90
90
  // 6. return the proof and the entry data for the contract call
91
- const currencyAddress = (entry.currencyAddress || ADDRESS_ZERO) as Address;
91
+ const currencyAddress = (entry.currencyAddress || ZERO_ADDRESS) as Address;
92
92
  const currencyDecimals = await (async () => {
93
93
  if (
94
94
  isNativeTokenAddress(currencyAddress) ||
95
- currencyAddress === ADDRESS_ZERO
95
+ currencyAddress === ZERO_ADDRESS
96
96
  ) {
97
97
  return 18;
98
98
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412";
1
+ export const version = "5.50.0";