thirdweb 5.49.0 → 5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359

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 (56) hide show
  1. package/dist/cjs/exports/extensions/ens.js +6 -1
  2. package/dist/cjs/exports/extensions/ens.js.map +1 -1
  3. package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js +115 -0
  4. package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
  5. package/dist/cjs/extensions/ens/constants.js +3 -1
  6. package/dist/cjs/extensions/ens/constants.js.map +1 -1
  7. package/dist/cjs/extensions/ens/resolve-address.js +13 -1
  8. package/dist/cjs/extensions/ens/resolve-address.js.map +1 -1
  9. package/dist/cjs/extensions/ens/resolve-l2-name.js +80 -0
  10. package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -0
  11. package/dist/cjs/extensions/ens/resolve-name.js +1 -1
  12. package/dist/cjs/extensions/ens/resolve-name.js.map +1 -1
  13. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +64 -19
  14. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
  15. package/dist/cjs/version.js +1 -1
  16. package/dist/cjs/version.js.map +1 -1
  17. package/dist/esm/exports/extensions/ens.js +2 -0
  18. package/dist/esm/exports/extensions/ens.js.map +1 -1
  19. package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js +107 -0
  20. package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
  21. package/dist/esm/extensions/ens/constants.js +2 -0
  22. package/dist/esm/extensions/ens/constants.js.map +1 -1
  23. package/dist/esm/extensions/ens/resolve-address.js +13 -1
  24. package/dist/esm/extensions/ens/resolve-address.js.map +1 -1
  25. package/dist/esm/extensions/ens/resolve-l2-name.js +75 -0
  26. package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -0
  27. package/dist/esm/extensions/ens/resolve-name.js +1 -1
  28. package/dist/esm/extensions/ens/resolve-name.js.map +1 -1
  29. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +62 -17
  30. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
  31. package/dist/esm/version.js +1 -1
  32. package/dist/esm/version.js.map +1 -1
  33. package/dist/types/exports/extensions/ens.d.ts +2 -0
  34. package/dist/types/exports/extensions/ens.d.ts.map +1 -1
  35. package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts +84 -0
  36. package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts.map +1 -0
  37. package/dist/types/extensions/ens/constants.d.ts +2 -0
  38. package/dist/types/extensions/ens/constants.d.ts.map +1 -1
  39. package/dist/types/extensions/ens/resolve-address.d.ts +12 -0
  40. package/dist/types/extensions/ens/resolve-address.d.ts.map +1 -1
  41. package/dist/types/extensions/ens/resolve-l2-name.d.ts +48 -0
  42. package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -0
  43. package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -1
  44. package/dist/types/version.d.ts +1 -1
  45. package/dist/types/version.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/src/exports/extensions/ens.ts +10 -0
  48. package/src/extensions/ens/__generated__/L2Resolver/read/name.ts +122 -0
  49. package/src/extensions/ens/constants.ts +4 -0
  50. package/src/extensions/ens/resolve-address.test.ts +13 -0
  51. package/src/extensions/ens/resolve-address.ts +13 -1
  52. package/src/extensions/ens/resolve-l2-name.test.ts +30 -0
  53. package/src/extensions/ens/resolve-l2-name.ts +107 -0
  54. package/src/extensions/ens/resolve-name.ts +1 -1
  55. package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +75 -18
  56. package/src/version.ts +1 -1
@@ -0,0 +1,75 @@
1
+ import { encodePacked, keccak256, namehash } from "viem";
2
+ import { getContract } from "../../contract/contract.js";
3
+ import { withCache } from "../../utils/promise/withCache.js";
4
+ import { name } from "./__generated__/L2Resolver/read/name.js";
5
+ /**
6
+ * Convert an address to a reverse node for ENS resolution
7
+ *
8
+ * @internal
9
+ */
10
+ export const convertReverseNodeToBytes = (address, chainId) => {
11
+ const addressFormatted = address.toLocaleLowerCase();
12
+ const addressNode = keccak256(addressFormatted.substring(2));
13
+ const cointype = (0x80000000 | chainId) >>> 0;
14
+ const chainCoinType = cointype.toString(16).toLocaleUpperCase();
15
+ const reverseNode = namehash(`${chainCoinType.toLocaleUpperCase()}.reverse`);
16
+ const addressReverseNode = keccak256(encodePacked(["bytes32", "bytes32"], [reverseNode, addressNode]));
17
+ return addressReverseNode;
18
+ };
19
+ /**
20
+ * Resolves the L2 name for a specified address.
21
+ * @param options - The options for resolving an L2 ENS address.
22
+ * @example
23
+ * ```ts
24
+ * import { resolveL2Name } from "thirdweb/extensions/ens";
25
+ * const name = await resolveL2Name({
26
+ * client,
27
+ * address: "0x1234...",
28
+ * resolverAddress: "0x...",
29
+ * resolverChain: base,
30
+ * });
31
+ * ```
32
+ *
33
+ * Resolve a Basename.
34
+ * ```ts
35
+ * import { resolveL2Name, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
36
+ * import { base } from "thirdweb/chains";
37
+ * const name = await resolveL2Name({
38
+ * client,
39
+ * address: "0x1234...",
40
+ * resolverAddress: BASENAME_RESOLVER_ADDRESS,
41
+ * resolverChain: base,
42
+ * });
43
+ * ```
44
+ * @extension ENS
45
+ * @returns A promise that resolves to the Ethereum address.
46
+ */
47
+ export async function resolveL2Name(options) {
48
+ const { client, address, resolverAddress, resolverChain } = options;
49
+ return withCache(async () => {
50
+ const contract = getContract({
51
+ client,
52
+ chain: resolverChain,
53
+ address: resolverAddress,
54
+ });
55
+ const reverseName = convertReverseNodeToBytes(address, resolverChain.id || 1);
56
+ const resolvedName = await name({
57
+ contract,
58
+ node: reverseName,
59
+ }).catch((e) => {
60
+ if ("data" in e && e.data === "0x7199966d") {
61
+ return null;
62
+ }
63
+ throw e;
64
+ });
65
+ if (resolvedName === "") {
66
+ return null;
67
+ }
68
+ return resolvedName;
69
+ }, {
70
+ cacheKey: `ens:name:${resolverChain}:${address}`,
71
+ // 1min cache
72
+ cacheTime: 60 * 1000,
73
+ });
74
+ }
75
+ //# sourceMappingURL=resolve-l2-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-l2-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-l2-name.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,yCAAyC,CAAC;AAY/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAgB,EAChB,OAAe,EACf,EAAE;IACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAa,CAAC;IAChE,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAE7E,MAAM,kBAAkB,GAAG,SAAS,CAClC,YAAY,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACjE,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,yBAAyB,CAC3C,OAAO,EACP,aAAa,CAAC,EAAE,IAAI,CAAC,CACtB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;YAC9B,QAAQ;YACR,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,IAAI,OAAO,EAAE;QAChD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
@@ -42,7 +42,7 @@ export async function resolveName(options) {
42
42
  }
43
43
  return name;
44
44
  }, {
45
- cacheKey: `ens:name:${address}`,
45
+ cacheKey: `ens:name:${resolverChain?.id || 1}:${address}`,
46
46
  // 1min cache
47
47
  cacheTime: 60 * 1000,
48
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mDAAmD,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAY5D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,QAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,0BAA0B;SACvD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,KAAK,CACvB,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CACpE,CAAC;QAEF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC;YAC5C,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,OAAO,EAAE;QAC/B,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mDAAmD,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAY5D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,QAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,0BAA0B;SACvD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,KAAK,CACvB,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CACpE,CAAC;QAEF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC;YAC5C,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE;QACzD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
@@ -2,7 +2,8 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useCallback } from "react";
4
4
  import { getContract } from "../../../../../../contract/contract.js";
5
- import { getApprovalForTransaction } from "../../../../../../extensions/erc20/write/getApprovalForTransaction.js";
5
+ import { isERC721 } from "../../../../../../extensions/erc721/read/isERC721.js";
6
+ import { isERC1155 } from "../../../../../../extensions/erc1155/read/isERC1155.js";
6
7
  import { createListing, } from "../../../../../../extensions/marketplace/direct-listings/write/createListing.js";
7
8
  import { useReadContract } from "../../../../../core/hooks/contract/useReadContract.js";
8
9
  import { useSendAndConfirmTransaction } from "../../../../../core/hooks/transaction/useSendAndConfirmTransaction.js";
@@ -46,12 +47,13 @@ export function CreateDirectListingButton(props) {
46
47
  });
47
48
  const account = useActiveAccount();
48
49
  const defaultPayModalMetadata = payModal ? payModal.metadata : undefined;
50
+ const nftContract = getContract({
51
+ address: assetContractAddress,
52
+ chain,
53
+ client,
54
+ });
49
55
  const { data: payMetadata } = useReadContract(getPayMetadata, {
50
- contract: getContract({
51
- address: assetContractAddress,
52
- chain,
53
- client,
54
- }),
56
+ contract: nftContract,
55
57
  tokenId,
56
58
  queryOptions: {
57
59
  enabled: !defaultPayModalMetadata,
@@ -62,19 +64,64 @@ export function CreateDirectListingButton(props) {
62
64
  if (!account) {
63
65
  throw new Error("No account detected");
64
66
  }
67
+ const [is721, is1155] = await Promise.all([
68
+ isERC721({ contract: nftContract }),
69
+ isERC1155({ contract: nftContract }),
70
+ ]);
71
+ if (!is1155 && !is721) {
72
+ throw new Error("Asset must either be ERC721 or ERC1155");
73
+ }
74
+ // Check for token approval
75
+ if (is1155) {
76
+ const [{ isApprovedForAll }, { setApprovalForAll }] = await Promise.all([
77
+ import("../../../../../../extensions/erc1155/__generated__/IERC1155/read/isApprovedForAll.js"),
78
+ import("../../../../../../extensions/erc1155/__generated__/IERC1155/write/setApprovalForAll.js"),
79
+ ]);
80
+ const isApproved = await isApprovedForAll({
81
+ contract: nftContract,
82
+ operator: marketplaceContract.address,
83
+ owner: account.address,
84
+ });
85
+ if (!isApproved) {
86
+ const transaction = setApprovalForAll({
87
+ contract: nftContract,
88
+ operator: marketplaceContract.address,
89
+ approved: true,
90
+ });
91
+ await mutateAsync(transaction);
92
+ }
93
+ }
94
+ else {
95
+ const [{ isApprovedForAll }, { setApprovalForAll }, { getApproved }] = await Promise.all([
96
+ import("../../../../../../extensions/erc721/__generated__/IERC721A/read/isApprovedForAll.js"),
97
+ import("../../../../../../extensions/erc721/__generated__/IERC721A/write/setApprovalForAll.js"),
98
+ import("../../../../../../extensions/erc721/__generated__/IERC721A/read/getApproved.js"),
99
+ ]);
100
+ const [isApproved, tokenApproved] = await Promise.all([
101
+ isApprovedForAll({
102
+ contract: nftContract,
103
+ operator: marketplaceContract.address,
104
+ owner: account.address,
105
+ }),
106
+ getApproved({ contract: nftContract, tokenId: props.tokenId }),
107
+ ]);
108
+ if (!isApproved &&
109
+ tokenApproved.toLowerCase() !==
110
+ marketplaceContract.address.toLowerCase()) {
111
+ const transaction = setApprovalForAll({
112
+ contract: nftContract,
113
+ operator: marketplaceContract.address,
114
+ approved: true,
115
+ });
116
+ await mutateAsync(transaction);
117
+ }
118
+ }
65
119
  const listingTx = createListing({
66
120
  contract: marketplaceContract,
67
121
  ...props,
68
122
  });
69
- const approveTx = await getApprovalForTransaction({
70
- transaction: listingTx,
71
- account,
72
- });
73
- if (approveTx) {
74
- await mutateAsync(approveTx);
75
- }
76
123
  return listingTx;
77
- }, [marketplaceContract, props, account, mutateAsync]);
124
+ }, [marketplaceContract, props, account, mutateAsync, nftContract]);
78
125
  return (_jsx(TransactionButton, { transaction: () => prepareTransaction(), payModal: {
79
126
  metadata: defaultPayModalMetadata || payMetadata,
80
127
  ...payModal,
@@ -84,9 +131,7 @@ export function CreateDirectListingButton(props) {
84
131
  * @internal
85
132
  */
86
133
  async function getPayMetadata(options) {
87
- const [{ isERC721 }, { isERC1155 }, { getContractMetadata }, { getNFT: getERC721 }, { getNFT: getERC1155 },] = await Promise.all([
88
- import("../../../../../../extensions/erc721/read/isERC721.js"),
89
- import("../../../../../../extensions/erc1155/read/isERC1155.js"),
134
+ const [{ getContractMetadata }, { getNFT: getERC721 }, { getNFT: getERC1155 },] = await Promise.all([
90
135
  import("../../../../../../extensions/common/read/getContractMetadata.js"),
91
136
  import("../../../../../../extensions/erc721/read/getNFT.js"),
92
137
  import("../../../../../../extensions/erc1155/read/getNFT.js"),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = "5.49.0";
1
+ export const version = "5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359";
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,QAAQ,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,wEAAwE,CAAC"}
@@ -2,4 +2,6 @@ export { type ResolveAddressOptions, resolveAddress, } from "../../extensions/en
2
2
  export { type ResolveAvatarOptions, resolveAvatar, } from "../../extensions/ens/resolve-avatar.js";
3
3
  export { type ResolveTextOptions, resolveText, } from "../../extensions/ens/resolve-text.js";
4
4
  export { type ResolveNameOptions, resolveName, } from "../../extensions/ens/resolve-name.js";
5
+ export { type ResolveL2NameOptions, resolveL2Name, } from "../../extensions/ens/resolve-l2-name.js";
6
+ export { BASENAME_RESOLVER_ADDRESS, BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS, } from "../../extensions/ens/constants.js";
5
7
  //# sourceMappingURL=ens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ens.d.ts","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,cAAc,GACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,GACZ,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"ens.d.ts","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,cAAc,GACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,84 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
3
+ import type { Hex } from "../../../../../utils/encoding/hex.js";
4
+ /**
5
+ * Represents the parameters for the "name" function.
6
+ */
7
+ export type NameParams = {
8
+ node: AbiParameterToPrimitiveType<{
9
+ type: "bytes32";
10
+ name: "node";
11
+ }>;
12
+ };
13
+ export declare const FN_SELECTOR: "0x691f3431";
14
+ /**
15
+ * Checks if the `name` method is supported by the given contract.
16
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
17
+ * @returns A boolean indicating if the `name` method is supported.
18
+ * @extension ENS
19
+ * @example
20
+ * ```ts
21
+ * import { isNameSupported } from "thirdweb/extensions/ens";
22
+ *
23
+ * const supported = isNameSupported(["0x..."]);
24
+ * ```
25
+ */
26
+ export declare function isNameSupported(availableSelectors: string[]): boolean;
27
+ /**
28
+ * Encodes the parameters for the "name" function.
29
+ * @param options - The options for the name function.
30
+ * @returns The encoded ABI parameters.
31
+ * @extension ENS
32
+ * @example
33
+ * ```ts
34
+ * import { encodeNameParams } "thirdweb/extensions/ens";
35
+ * const result = encodeNameParams({
36
+ * node: ...,
37
+ * });
38
+ * ```
39
+ */
40
+ export declare function encodeNameParams(options: NameParams): `0x${string}`;
41
+ /**
42
+ * Encodes the "name" function into a Hex string with its parameters.
43
+ * @param options - The options for the name function.
44
+ * @returns The encoded hexadecimal string.
45
+ * @extension ENS
46
+ * @example
47
+ * ```ts
48
+ * import { encodeName } "thirdweb/extensions/ens";
49
+ * const result = encodeName({
50
+ * node: ...,
51
+ * });
52
+ * ```
53
+ */
54
+ export declare function encodeName(options: NameParams): `${typeof FN_SELECTOR}${string}`;
55
+ /**
56
+ * Decodes the result of the name function call.
57
+ * @param result - The hexadecimal result to decode.
58
+ * @returns The decoded result as per the FN_OUTPUTS definition.
59
+ * @extension ENS
60
+ * @example
61
+ * ```ts
62
+ * import { decodeNameResult } from "thirdweb/extensions/ens";
63
+ * const result = decodeNameResult("...");
64
+ * ```
65
+ */
66
+ export declare function decodeNameResult(result: Hex): string;
67
+ /**
68
+ * Calls the "name" function on the contract.
69
+ * @param options - The options for the name function.
70
+ * @returns The parsed result of the function call.
71
+ * @extension ENS
72
+ * @example
73
+ * ```ts
74
+ * import { name } from "thirdweb/extensions/ens";
75
+ *
76
+ * const result = await name({
77
+ * contract,
78
+ * node: ...,
79
+ * });
80
+ *
81
+ * ```
82
+ */
83
+ export declare function name(options: BaseTransactionOptions<NameParams>): Promise<string>;
84
+ //# sourceMappingURL=name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../../../../../../src/extensions/ens/__generated__/L2Resolver/read/name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAGlF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAGhE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,2BAA2B,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,WAAW,cAAwB,CAAC;AAajD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAK3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,iBAEnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAIH,GAAG,OAAO,WAAW,GAAG,MAAM,EAAE,CAC1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,UAE3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,UAAU,CAAC,mBAMrE"}
@@ -1,2 +1,4 @@
1
1
  export declare const UNIVERSAL_RESOLVER_ADDRESS = "0xce01f8eee7E479C928F8919abD53E553a36CeF67";
2
+ export declare const BASENAME_RESOLVER_ADDRESS = "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD";
3
+ export declare const BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS = "0x6533C94869D28fAA8dF77cc63f9e2b2D6Cf77eBA";
2
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,+CACO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAC/C,eAAO,MAAM,sCAAsC,+CACL,CAAC"}
@@ -20,6 +20,18 @@ export type ResolveAddressOptions = {
20
20
  * name: "vitalik.eth",
21
21
  * });
22
22
  * ```
23
+ *
24
+ * Resolve an address to a Basename.
25
+ * ```ts
26
+ * import { resolveAddress, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
27
+ * import { base } from "thirdweb/chains";
28
+ * const address = await resolveAddress({
29
+ * client,
30
+ * name: "myk.base.eth",
31
+ * resolverAddress: BASENAME_RESOLVER_ADDRESS,
32
+ * resolverChain: base,
33
+ * });
34
+ * ```
23
35
  * @extension ENS
24
36
  * @returns A promise that resolves to the Ethereum address.
25
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-address.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAW7D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,0BA4BlE"}
1
+ {"version":3,"file":"resolve-address.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAW7D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,0BA4BlE"}
@@ -0,0 +1,48 @@
1
+ import type { Address } from "abitype";
2
+ import type { Chain } from "../../chains/types.js";
3
+ import type { ThirdwebClient } from "../../client/client.js";
4
+ /**
5
+ * @extension ENS
6
+ */
7
+ export type ResolveL2NameOptions = {
8
+ client: ThirdwebClient;
9
+ address: Address;
10
+ resolverAddress: string;
11
+ resolverChain: Chain;
12
+ };
13
+ /**
14
+ * Convert an address to a reverse node for ENS resolution
15
+ *
16
+ * @internal
17
+ */
18
+ export declare const convertReverseNodeToBytes: (address: Address, chainId: number) => `0x${string}`;
19
+ /**
20
+ * Resolves the L2 name for a specified address.
21
+ * @param options - The options for resolving an L2 ENS address.
22
+ * @example
23
+ * ```ts
24
+ * import { resolveL2Name } from "thirdweb/extensions/ens";
25
+ * const name = await resolveL2Name({
26
+ * client,
27
+ * address: "0x1234...",
28
+ * resolverAddress: "0x...",
29
+ * resolverChain: base,
30
+ * });
31
+ * ```
32
+ *
33
+ * Resolve a Basename.
34
+ * ```ts
35
+ * import { resolveL2Name, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
36
+ * import { base } from "thirdweb/chains";
37
+ * const name = await resolveL2Name({
38
+ * client,
39
+ * address: "0x1234...",
40
+ * resolverAddress: BASENAME_RESOLVER_ADDRESS,
41
+ * resolverChain: base,
42
+ * });
43
+ * ```
44
+ * @extension ENS
45
+ * @returns A promise that resolves to the Ethereum address.
46
+ */
47
+ export declare function resolveL2Name(options: ResolveL2NameOptions): Promise<string | null>;
48
+ //# sourceMappingURL=resolve-l2-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-l2-name.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-l2-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,YAC3B,OAAO,WACP,MAAM,kBAahB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,0BAsChE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,iFAAiF,CAAC;AAGzF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mEAAmE,CAAC;AAKhH,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,sBAAsB,EACtB,aAAa,CACd,GACC,mBAAmB,GAAG;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,8CA6DtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,iFAAiF,CAAC;AAGzF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mEAAmE,CAAC;AAKhH,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,sBAAsB,EACtB,aAAa,CACd,GACC,mBAAmB,GAAG;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,8CAyHtC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.49.0";
1
+ export declare const version = "5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359";
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,WAAW,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,2EAA2E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.49.0",
3
+ "version": "5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -17,3 +17,13 @@ export {
17
17
  type ResolveNameOptions,
18
18
  resolveName,
19
19
  } from "../../extensions/ens/resolve-name.js";
20
+
21
+ export {
22
+ type ResolveL2NameOptions,
23
+ resolveL2Name,
24
+ } from "../../extensions/ens/resolve-l2-name.js";
25
+
26
+ export {
27
+ BASENAME_RESOLVER_ADDRESS,
28
+ BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS,
29
+ } from "../../extensions/ens/constants.js";
@@ -0,0 +1,122 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import { readContract } from "../../../../../transaction/read-contract.js";
3
+ import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
4
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
5
+ import { decodeAbiParameters } from "viem";
6
+ import type { Hex } from "../../../../../utils/encoding/hex.js";
7
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
8
+
9
+ /**
10
+ * Represents the parameters for the "name" function.
11
+ */
12
+ export type NameParams = {
13
+ node: AbiParameterToPrimitiveType<{ type: "bytes32"; name: "node" }>;
14
+ };
15
+
16
+ export const FN_SELECTOR = "0x691f3431" as const;
17
+ const FN_INPUTS = [
18
+ {
19
+ type: "bytes32",
20
+ name: "node",
21
+ },
22
+ ] as const;
23
+ const FN_OUTPUTS = [
24
+ {
25
+ type: "string",
26
+ },
27
+ ] as const;
28
+
29
+ /**
30
+ * Checks if the `name` method is supported by the given contract.
31
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
32
+ * @returns A boolean indicating if the `name` method is supported.
33
+ * @extension ENS
34
+ * @example
35
+ * ```ts
36
+ * import { isNameSupported } from "thirdweb/extensions/ens";
37
+ *
38
+ * const supported = isNameSupported(["0x..."]);
39
+ * ```
40
+ */
41
+ export function isNameSupported(availableSelectors: string[]) {
42
+ return detectMethod({
43
+ availableSelectors,
44
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
45
+ });
46
+ }
47
+
48
+ /**
49
+ * Encodes the parameters for the "name" function.
50
+ * @param options - The options for the name function.
51
+ * @returns The encoded ABI parameters.
52
+ * @extension ENS
53
+ * @example
54
+ * ```ts
55
+ * import { encodeNameParams } "thirdweb/extensions/ens";
56
+ * const result = encodeNameParams({
57
+ * node: ...,
58
+ * });
59
+ * ```
60
+ */
61
+ export function encodeNameParams(options: NameParams) {
62
+ return encodeAbiParameters(FN_INPUTS, [options.node]);
63
+ }
64
+
65
+ /**
66
+ * Encodes the "name" function into a Hex string with its parameters.
67
+ * @param options - The options for the name function.
68
+ * @returns The encoded hexadecimal string.
69
+ * @extension ENS
70
+ * @example
71
+ * ```ts
72
+ * import { encodeName } "thirdweb/extensions/ens";
73
+ * const result = encodeName({
74
+ * node: ...,
75
+ * });
76
+ * ```
77
+ */
78
+ export function encodeName(options: NameParams) {
79
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
80
+ // we can do this because we know the specific formats of the values
81
+ return (FN_SELECTOR +
82
+ encodeNameParams(options).slice(2)) as `${typeof FN_SELECTOR}${string}`;
83
+ }
84
+
85
+ /**
86
+ * Decodes the result of the name function call.
87
+ * @param result - The hexadecimal result to decode.
88
+ * @returns The decoded result as per the FN_OUTPUTS definition.
89
+ * @extension ENS
90
+ * @example
91
+ * ```ts
92
+ * import { decodeNameResult } from "thirdweb/extensions/ens";
93
+ * const result = decodeNameResult("...");
94
+ * ```
95
+ */
96
+ export function decodeNameResult(result: Hex) {
97
+ return decodeAbiParameters(FN_OUTPUTS, result)[0];
98
+ }
99
+
100
+ /**
101
+ * Calls the "name" function on the contract.
102
+ * @param options - The options for the name function.
103
+ * @returns The parsed result of the function call.
104
+ * @extension ENS
105
+ * @example
106
+ * ```ts
107
+ * import { name } from "thirdweb/extensions/ens";
108
+ *
109
+ * const result = await name({
110
+ * contract,
111
+ * node: ...,
112
+ * });
113
+ *
114
+ * ```
115
+ */
116
+ export async function name(options: BaseTransactionOptions<NameParams>) {
117
+ return readContract({
118
+ contract: options.contract,
119
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
120
+ params: [options.node],
121
+ });
122
+ }
@@ -1,2 +1,6 @@
1
1
  export const UNIVERSAL_RESOLVER_ADDRESS =
2
2
  "0xce01f8eee7E479C928F8919abD53E553a36CeF67";
3
+ export const BASENAME_RESOLVER_ADDRESS =
4
+ "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD";
5
+ export const BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS =
6
+ "0x6533C94869D28fAA8dF77cc63f9e2b2D6Cf77eBA";
@@ -1,5 +1,7 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { TEST_CLIENT } from "../../../test/src/test-clients.js";
3
+ import { base } from "../../chains/chain-definitions/base.js";
4
+ import { BASENAME_RESOLVER_ADDRESS } from "./constants.js";
3
5
  import { resolveAddress } from "./resolve-address.js";
4
6
 
5
7
  // skip this test suite if there is no secret key available to test with
@@ -22,4 +24,15 @@ describe.runIf(process.env.TW_SECRET_KEY)("ENS:resolve-address", () => {
22
24
  });
23
25
  expect(address).toBe("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045");
24
26
  });
27
+
28
+ it("should resolve Basename", async () => {
29
+ const name = "myk.base.eth";
30
+ const address = await resolveAddress({
31
+ client: TEST_CLIENT,
32
+ name,
33
+ resolverChain: base,
34
+ resolverAddress: BASENAME_RESOLVER_ADDRESS,
35
+ });
36
+ expect(address).toBe("0x653Ff253b0c7C1cc52f484e891b71f9f1F010Bfb");
37
+ });
25
38
  });