viem 2.34.0 → 2.35.0-canary-20250821143721

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 (199) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +6 -0
  3. package/_cjs/actions/ens/getEnsAddress.js +9 -6
  4. package/_cjs/actions/ens/getEnsAddress.js.map +1 -1
  5. package/_cjs/actions/ens/getEnsName.js +16 -22
  6. package/_cjs/actions/ens/getEnsName.js.map +1 -1
  7. package/_cjs/actions/ens/getEnsResolver.js +5 -1
  8. package/_cjs/actions/ens/getEnsResolver.js.map +1 -1
  9. package/_cjs/actions/ens/getEnsText.js +2 -2
  10. package/_cjs/actions/ens/getEnsText.js.map +1 -1
  11. package/_cjs/actions/public/waitForTransactionReceipt.js +5 -5
  12. package/_cjs/actions/public/waitForTransactionReceipt.js.map +1 -1
  13. package/_cjs/chains/definitions/avalanche.js +1 -0
  14. package/_cjs/chains/definitions/avalanche.js.map +1 -1
  15. package/_cjs/chains/definitions/berachain.js +3 -2
  16. package/_cjs/chains/definitions/berachain.js.map +1 -1
  17. package/_cjs/chains/definitions/berachainBepolia.js +1 -0
  18. package/_cjs/chains/definitions/berachainBepolia.js.map +1 -1
  19. package/_cjs/chains/definitions/bsc.js +1 -0
  20. package/_cjs/chains/definitions/bsc.js.map +1 -1
  21. package/_cjs/chains/definitions/eduChain.js +6 -0
  22. package/_cjs/chains/definitions/eduChain.js.map +1 -1
  23. package/_cjs/chains/definitions/etherlink.js +1 -0
  24. package/_cjs/chains/definitions/etherlink.js.map +1 -1
  25. package/_cjs/chains/definitions/hemi.js +1 -0
  26. package/_cjs/chains/definitions/hemi.js.map +1 -1
  27. package/_cjs/chains/definitions/holesky.js +2 -6
  28. package/_cjs/chains/definitions/holesky.js.map +1 -1
  29. package/_cjs/chains/definitions/linea.js +2 -2
  30. package/_cjs/chains/definitions/linea.js.map +1 -1
  31. package/_cjs/chains/definitions/lineaSepolia.js +2 -2
  32. package/_cjs/chains/definitions/lineaSepolia.js.map +1 -1
  33. package/_cjs/chains/definitions/mainnet.js +2 -5
  34. package/_cjs/chains/definitions/mainnet.js.map +1 -1
  35. package/_cjs/chains/definitions/mantraDuKongEVMTestnet.js +24 -0
  36. package/_cjs/chains/definitions/mantraDuKongEVMTestnet.js.map +1 -0
  37. package/_cjs/chains/definitions/megaethTestnet.js +1 -0
  38. package/_cjs/chains/definitions/megaethTestnet.js.map +1 -1
  39. package/_cjs/chains/definitions/monadTestnet.js +1 -0
  40. package/_cjs/chains/definitions/monadTestnet.js.map +1 -1
  41. package/_cjs/chains/definitions/sepolia.js +2 -3
  42. package/_cjs/chains/definitions/sepolia.js.map +1 -1
  43. package/_cjs/chains/definitions/sonic.js +1 -0
  44. package/_cjs/chains/definitions/sonic.js.map +1 -1
  45. package/_cjs/chains/index.js +9 -7
  46. package/_cjs/chains/index.js.map +1 -1
  47. package/_cjs/constants/abis.js +78 -45
  48. package/_cjs/constants/abis.js.map +1 -1
  49. package/_cjs/ens/index.js +3 -1
  50. package/_cjs/ens/index.js.map +1 -1
  51. package/_cjs/errors/ens.js +9 -1
  52. package/_cjs/errors/ens.js.map +1 -1
  53. package/_cjs/errors/version.js +1 -1
  54. package/_cjs/errors/version.js.map +1 -1
  55. package/_cjs/index.js +8 -5
  56. package/_cjs/index.js.map +1 -1
  57. package/_cjs/utils/ens/errors.js +6 -9
  58. package/_cjs/utils/ens/errors.js.map +1 -1
  59. package/_cjs/utils/ens/toCoinType.js +13 -0
  60. package/_cjs/utils/ens/toCoinType.js.map +1 -0
  61. package/_esm/actions/ens/getEnsAddress.js +9 -6
  62. package/_esm/actions/ens/getEnsAddress.js.map +1 -1
  63. package/_esm/actions/ens/getEnsName.js +16 -22
  64. package/_esm/actions/ens/getEnsName.js.map +1 -1
  65. package/_esm/actions/ens/getEnsResolver.js +5 -1
  66. package/_esm/actions/ens/getEnsResolver.js.map +1 -1
  67. package/_esm/actions/ens/getEnsText.js +2 -2
  68. package/_esm/actions/ens/getEnsText.js.map +1 -1
  69. package/_esm/actions/public/waitForTransactionReceipt.js +5 -5
  70. package/_esm/actions/public/waitForTransactionReceipt.js.map +1 -1
  71. package/_esm/chains/definitions/avalanche.js +1 -0
  72. package/_esm/chains/definitions/avalanche.js.map +1 -1
  73. package/_esm/chains/definitions/berachain.js +3 -2
  74. package/_esm/chains/definitions/berachain.js.map +1 -1
  75. package/_esm/chains/definitions/berachainBepolia.js +1 -0
  76. package/_esm/chains/definitions/berachainBepolia.js.map +1 -1
  77. package/_esm/chains/definitions/bsc.js +1 -0
  78. package/_esm/chains/definitions/bsc.js.map +1 -1
  79. package/_esm/chains/definitions/eduChain.js +6 -0
  80. package/_esm/chains/definitions/eduChain.js.map +1 -1
  81. package/_esm/chains/definitions/etherlink.js +1 -0
  82. package/_esm/chains/definitions/etherlink.js.map +1 -1
  83. package/_esm/chains/definitions/hemi.js +1 -0
  84. package/_esm/chains/definitions/hemi.js.map +1 -1
  85. package/_esm/chains/definitions/holesky.js +2 -6
  86. package/_esm/chains/definitions/holesky.js.map +1 -1
  87. package/_esm/chains/definitions/linea.js +2 -2
  88. package/_esm/chains/definitions/linea.js.map +1 -1
  89. package/_esm/chains/definitions/lineaSepolia.js +2 -2
  90. package/_esm/chains/definitions/lineaSepolia.js.map +1 -1
  91. package/_esm/chains/definitions/mainnet.js +2 -5
  92. package/_esm/chains/definitions/mainnet.js.map +1 -1
  93. package/_esm/chains/definitions/mantraDuKongEVMTestnet.js +21 -0
  94. package/_esm/chains/definitions/mantraDuKongEVMTestnet.js.map +1 -0
  95. package/_esm/chains/definitions/megaethTestnet.js +1 -0
  96. package/_esm/chains/definitions/megaethTestnet.js.map +1 -1
  97. package/_esm/chains/definitions/monadTestnet.js +1 -0
  98. package/_esm/chains/definitions/monadTestnet.js.map +1 -1
  99. package/_esm/chains/definitions/sepolia.js +2 -3
  100. package/_esm/chains/definitions/sepolia.js.map +1 -1
  101. package/_esm/chains/definitions/sonic.js +1 -0
  102. package/_esm/chains/definitions/sonic.js.map +1 -1
  103. package/_esm/chains/index.js +1 -0
  104. package/_esm/chains/index.js.map +1 -1
  105. package/_esm/constants/abis.js +78 -45
  106. package/_esm/constants/abis.js.map +1 -1
  107. package/_esm/ens/index.js +1 -0
  108. package/_esm/ens/index.js.map +1 -1
  109. package/_esm/errors/ens.js +7 -0
  110. package/_esm/errors/ens.js.map +1 -1
  111. package/_esm/errors/version.js +1 -1
  112. package/_esm/errors/version.js.map +1 -1
  113. package/_esm/index.js +2 -1
  114. package/_esm/index.js.map +1 -1
  115. package/_esm/utils/ens/errors.js +6 -11
  116. package/_esm/utils/ens/errors.js.map +1 -1
  117. package/_esm/utils/ens/toCoinType.js +17 -0
  118. package/_esm/utils/ens/toCoinType.js.map +1 -0
  119. package/_types/actions/ens/getEnsAddress.d.ts +26 -6
  120. package/_types/actions/ens/getEnsAddress.d.ts.map +1 -1
  121. package/_types/actions/ens/getEnsName.d.ts +29 -8
  122. package/_types/actions/ens/getEnsName.d.ts.map +1 -1
  123. package/_types/actions/ens/getEnsResolver.d.ts.map +1 -1
  124. package/_types/chains/definitions/avalanche.d.ts +1 -1
  125. package/_types/chains/definitions/avalanche.d.ts.map +1 -1
  126. package/_types/chains/definitions/berachain.d.ts +3 -3
  127. package/_types/chains/definitions/berachain.d.ts.map +1 -1
  128. package/_types/chains/definitions/berachainBepolia.d.ts +1 -1
  129. package/_types/chains/definitions/berachainBepolia.d.ts.map +1 -1
  130. package/_types/chains/definitions/bsc.d.ts +1 -1
  131. package/_types/chains/definitions/bsc.d.ts.map +1 -1
  132. package/_types/chains/definitions/eduChain.d.ts +6 -9
  133. package/_types/chains/definitions/eduChain.d.ts.map +1 -1
  134. package/_types/chains/definitions/etherlink.d.ts +1 -1
  135. package/_types/chains/definitions/etherlink.d.ts.map +1 -1
  136. package/_types/chains/definitions/hemi.d.ts +1 -1
  137. package/_types/chains/definitions/hemi.d.ts.map +1 -1
  138. package/_types/chains/definitions/holesky.d.ts +2 -6
  139. package/_types/chains/definitions/holesky.d.ts.map +1 -1
  140. package/_types/chains/definitions/linea.d.ts +2 -2
  141. package/_types/chains/definitions/lineaSepolia.d.ts +2 -2
  142. package/_types/chains/definitions/mainnet.d.ts +2 -5
  143. package/_types/chains/definitions/mainnet.d.ts.map +1 -1
  144. package/_types/chains/definitions/mantraDuKongEVMTestnet.d.ts +39 -0
  145. package/_types/chains/definitions/mantraDuKongEVMTestnet.d.ts.map +1 -0
  146. package/_types/chains/definitions/megaethTestnet.d.ts +1 -1
  147. package/_types/chains/definitions/megaethTestnet.d.ts.map +1 -1
  148. package/_types/chains/definitions/monadTestnet.d.ts +1 -1
  149. package/_types/chains/definitions/monadTestnet.d.ts.map +1 -1
  150. package/_types/chains/definitions/sepolia.d.ts +2 -5
  151. package/_types/chains/definitions/sepolia.d.ts.map +1 -1
  152. package/_types/chains/definitions/sonic.d.ts +1 -1
  153. package/_types/chains/definitions/sonic.d.ts.map +1 -1
  154. package/_types/chains/index.d.ts +1 -0
  155. package/_types/chains/index.d.ts.map +1 -1
  156. package/_types/constants/abis.d.ts +103 -60
  157. package/_types/constants/abis.d.ts.map +1 -1
  158. package/_types/ens/index.d.ts +1 -0
  159. package/_types/ens/index.d.ts.map +1 -1
  160. package/_types/errors/ens.d.ts +8 -0
  161. package/_types/errors/ens.d.ts.map +1 -1
  162. package/_types/errors/version.d.ts +1 -1
  163. package/_types/errors/version.d.ts.map +1 -1
  164. package/_types/index.d.ts +2 -1
  165. package/_types/index.d.ts.map +1 -1
  166. package/_types/utils/ens/errors.d.ts +1 -1
  167. package/_types/utils/ens/errors.d.ts.map +1 -1
  168. package/_types/utils/ens/toCoinType.d.ts +12 -0
  169. package/_types/utils/ens/toCoinType.d.ts.map +1 -0
  170. package/actions/ens/getEnsAddress.ts +35 -12
  171. package/actions/ens/getEnsName.ts +47 -33
  172. package/actions/ens/getEnsResolver.ts +5 -1
  173. package/actions/ens/getEnsText.ts +2 -2
  174. package/actions/public/waitForTransactionReceipt.ts +5 -5
  175. package/chains/definitions/avalanche.ts +1 -0
  176. package/chains/definitions/berachain.ts +4 -2
  177. package/chains/definitions/berachainBepolia.ts +1 -0
  178. package/chains/definitions/bsc.ts +1 -0
  179. package/chains/definitions/eduChain.ts +6 -0
  180. package/chains/definitions/etherlink.ts +1 -0
  181. package/chains/definitions/hemi.ts +1 -0
  182. package/chains/definitions/holesky.ts +2 -6
  183. package/chains/definitions/linea.ts +2 -2
  184. package/chains/definitions/lineaSepolia.ts +2 -2
  185. package/chains/definitions/mainnet.ts +2 -5
  186. package/chains/definitions/mantraDuKongEVMTestnet.ts +21 -0
  187. package/chains/definitions/megaethTestnet.ts +1 -0
  188. package/chains/definitions/monadTestnet.ts +1 -0
  189. package/chains/definitions/sepolia.ts +2 -3
  190. package/chains/definitions/sonic.ts +1 -0
  191. package/chains/index.ts +1 -0
  192. package/constants/abis.ts +79 -46
  193. package/ens/index.ts +4 -0
  194. package/errors/ens.ts +14 -0
  195. package/errors/version.ts +1 -1
  196. package/index.ts +6 -0
  197. package/package.json +1 -1
  198. package/utils/ens/errors.ts +8 -18
  199. package/utils/ens/toCoinType.ts +23 -0
@@ -0,0 +1,12 @@
1
+ import { type EnsInvalidChainIdErrorType } from '../../errors/ens.js';
2
+ import type { ErrorType } from '../../errors/utils.js';
3
+ export type ToCoinTypeError = EnsInvalidChainIdErrorType | ErrorType;
4
+ /**
5
+ * @description Converts a chainId to a ENSIP-9 compliant coinType
6
+ *
7
+ * @example
8
+ * toCoinType(10)
9
+ * 2147483658n
10
+ */
11
+ export declare function toCoinType(chainId: number): bigint;
12
+ //# sourceMappingURL=toCoinType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toCoinType.d.ts","sourceRoot":"","sources":["../../../utils/ens/toCoinType.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,MAAM,eAAe,GAAG,0BAA0B,GAAG,SAAS,CAAA;AAIpE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlD"}
@@ -38,15 +38,35 @@ import {
38
38
 
39
39
  export type GetEnsAddressParameters = Prettify<
40
40
  Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {
41
- /** ENSIP-9 compliant coinType used to resolve addresses for other chains */
42
- coinType?: number | undefined
43
- /** Universal Resolver gateway URLs to use for resolving CCIP-read requests. */
41
+ /**
42
+ * ENSIP-9 compliant coinType (chain) to get ENS address for.
43
+ *
44
+ * To get the `coinType` for a chain id, use the `toCoinType` function:
45
+ * ```ts
46
+ * import { toCoinType } from 'viem'
47
+ * import { base } from 'viem/chains'
48
+ *
49
+ * const coinType = toCoinType(base.id)
50
+ * ```
51
+ *
52
+ * @default 60n
53
+ */
54
+ coinType?: bigint | undefined
55
+ /**
56
+ * Universal Resolver gateway URLs to use for resolving CCIP-read requests.
57
+ */
44
58
  gatewayUrls?: string[] | undefined
45
- /** Name to get the address for. */
59
+ /**
60
+ * Name to get the address for.
61
+ */
46
62
  name: string
47
- /** Whether or not to throw errors propagated from the ENS Universal Resolver Contract. */
63
+ /**
64
+ * Whether or not to throw errors propagated from the ENS Universal Resolver Contract.
65
+ */
48
66
  strict?: boolean | undefined
49
- /** Address of ENS Universal Resolver Contract. */
67
+ /**
68
+ * Address of ENS Universal Resolver Contract.
69
+ */
50
70
  universalResolverAddress?: Address | undefined
51
71
  }
52
72
  >
@@ -116,19 +136,22 @@ export async function getEnsAddress<chain extends Chain | undefined>(
116
136
  const tlds = chain?.ensTlds
117
137
  if (tlds && !tlds.some((tld) => name.endsWith(tld))) return null
118
138
 
139
+ const args = (() => {
140
+ if (coinType != null) return [namehash(name), BigInt(coinType)] as const
141
+ return [namehash(name)] as const
142
+ })()
143
+
119
144
  try {
120
145
  const functionData = encodeFunctionData({
121
146
  abi: addressResolverAbi,
122
147
  functionName: 'addr',
123
- ...(coinType != null
124
- ? { args: [namehash(name), BigInt(coinType)] }
125
- : { args: [namehash(name)] }),
148
+ args,
126
149
  })
127
150
 
128
151
  const readContractParameters = {
129
152
  address: universalResolverAddress,
130
153
  abi: universalResolverResolveAbi,
131
- functionName: 'resolve',
154
+ functionName: 'resolveWithGateways',
132
155
  args: [
133
156
  toHex(packetToBytes(name)),
134
157
  functionData,
@@ -146,7 +169,7 @@ export async function getEnsAddress<chain extends Chain | undefined>(
146
169
 
147
170
  const address = decodeFunctionResult({
148
171
  abi: addressResolverAbi,
149
- args: coinType != null ? [namehash(name), BigInt(coinType)] : undefined,
172
+ args,
150
173
  functionName: 'addr',
151
174
  data: res[0],
152
175
  })
@@ -156,7 +179,7 @@ export async function getEnsAddress<chain extends Chain | undefined>(
156
179
  return address
157
180
  } catch (err) {
158
181
  if (strict) throw err
159
- if (isNullUniversalResolverError(err, 'resolve')) return null
182
+ if (isNullUniversalResolverError(err)) return null
160
183
  throw err
161
184
  }
162
185
  }
@@ -10,12 +10,9 @@ import {
10
10
  type GetChainContractAddressErrorType,
11
11
  getChainContractAddress,
12
12
  } from '../../utils/chain/getChainContractAddress.js'
13
- import { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'
14
13
  import { isNullUniversalResolverError } from '../../utils/ens/errors.js'
15
- import {
16
- type PacketToBytesErrorType,
17
- packetToBytes,
18
- } from '../../utils/ens/packetToBytes.js'
14
+ import { localBatchGatewayUrl } from '../../utils/ens/localBatchGatewayRequest.js'
15
+ import type { PacketToBytesErrorType } from '../../utils/ens/packetToBytes.js'
19
16
  import { getAction } from '../../utils/getAction.js'
20
17
  import {
21
18
  type ReadContractErrorType,
@@ -25,13 +22,35 @@ import {
25
22
 
26
23
  export type GetEnsNameParameters = Prettify<
27
24
  Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {
28
- /** Address to get ENS name for. */
25
+ /**
26
+ * Address to get ENS name for.
27
+ */
29
28
  address: Address
30
- /** Universal Resolver gateway URLs to use for resolving CCIP-read requests. */
29
+ /**
30
+ * ENSIP-9 compliant coinType (chain) to get ENS name for.
31
+ *
32
+ * To get the `coinType` for a chain id, use the `toCoinType` function:
33
+ * ```ts
34
+ * import { toCoinType } from 'viem'
35
+ * import { base } from 'viem/chains'
36
+ *
37
+ * const coinType = toCoinType(base.id)
38
+ * ```
39
+ *
40
+ * @default 60n
41
+ */
42
+ coinType?: bigint | undefined
43
+ /**
44
+ * Universal Resolver gateway URLs to use for resolving CCIP-read requests.
45
+ */
31
46
  gatewayUrls?: string[] | undefined
32
- /** Whether or not to throw errors propagated from the ENS Universal Resolver Contract. */
47
+ /**
48
+ * Whether or not to throw errors propagated from the ENS Universal Resolver Contract.
49
+ */
33
50
  strict?: boolean | undefined
34
- /** Address of ENS Universal Resolver Contract. */
51
+ /**
52
+ * Address of ENS Universal Resolver Contract.
53
+ */
35
54
  universalResolverAddress?: Address | undefined
36
55
  }
37
56
  >
@@ -41,7 +60,6 @@ export type GetEnsNameReturnType = string | null
41
60
  export type GetEnsNameErrorType =
42
61
  | GetChainContractAddressErrorType
43
62
  | ReadContractErrorType
44
- | ToHexErrorType
45
63
  | PacketToBytesErrorType
46
64
  | ErrorType
47
65
 
@@ -73,54 +91,50 @@ export type GetEnsNameErrorType =
73
91
  */
74
92
  export async function getEnsName<chain extends Chain | undefined>(
75
93
  client: Client<Transport, chain>,
76
- {
94
+ parameters: GetEnsNameParameters,
95
+ ): Promise<GetEnsNameReturnType> {
96
+ const {
77
97
  address,
78
98
  blockNumber,
79
99
  blockTag,
100
+ coinType = 60n,
80
101
  gatewayUrls,
81
102
  strict,
82
- universalResolverAddress: universalResolverAddress_,
83
- }: GetEnsNameParameters,
84
- ): Promise<GetEnsNameReturnType> {
85
- let universalResolverAddress = universalResolverAddress_
86
- if (!universalResolverAddress) {
87
- if (!client.chain)
103
+ } = parameters
104
+ const { chain } = client
105
+
106
+ const universalResolverAddress = (() => {
107
+ if (parameters.universalResolverAddress)
108
+ return parameters.universalResolverAddress
109
+ if (!chain)
88
110
  throw new Error(
89
111
  'client chain not configured. universalResolverAddress is required.',
90
112
  )
91
-
92
- universalResolverAddress = getChainContractAddress({
113
+ return getChainContractAddress({
93
114
  blockNumber,
94
- chain: client.chain,
115
+ chain,
95
116
  contract: 'ensUniversalResolver',
96
117
  })
97
- }
118
+ })()
98
119
 
99
- const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`
100
120
  try {
101
121
  const readContractParameters = {
102
122
  address: universalResolverAddress,
103
123
  abi: universalResolverReverseAbi,
104
- functionName: 'reverse',
105
- args: [toHex(packetToBytes(reverseNode))],
124
+ args: [address, coinType, gatewayUrls ?? [localBatchGatewayUrl]],
125
+ functionName: 'reverseWithGateways',
106
126
  blockNumber,
107
127
  blockTag,
108
128
  } as const
109
129
 
110
130
  const readContractAction = getAction(client, readContract, 'readContract')
111
131
 
112
- const [name, resolvedAddress] = gatewayUrls
113
- ? await readContractAction({
114
- ...readContractParameters,
115
- args: [...readContractParameters.args, gatewayUrls],
116
- })
117
- : await readContractAction(readContractParameters)
132
+ const [name] = await readContractAction(readContractParameters)
118
133
 
119
- if (address.toLowerCase() !== resolvedAddress.toLowerCase()) return null
120
- return name
134
+ return name || null
121
135
  } catch (err) {
122
136
  if (strict) throw err
123
- if (isNullUniversalResolverError(err, 'reverse')) return null
137
+ if (isNullUniversalResolverError(err)) return null
124
138
  throw err
125
139
  }
126
140
  }
@@ -102,7 +102,11 @@ export async function getEnsResolver<chain extends Chain | undefined>(
102
102
  {
103
103
  inputs: [{ type: 'bytes' }],
104
104
  name: 'findResolver',
105
- outputs: [{ type: 'address' }, { type: 'bytes32' }],
105
+ outputs: [
106
+ { type: 'address' },
107
+ { type: 'bytes32' },
108
+ { type: 'uint256' },
109
+ ],
106
110
  stateMutability: 'view',
107
111
  type: 'function',
108
112
  },
@@ -118,7 +118,6 @@ export async function getEnsText<chain extends Chain | undefined>(
118
118
  const readContractParameters = {
119
119
  address: universalResolverAddress,
120
120
  abi: universalResolverResolveAbi,
121
- functionName: 'resolve',
122
121
  args: [
123
122
  toHex(packetToBytes(name)),
124
123
  encodeFunctionData({
@@ -128,6 +127,7 @@ export async function getEnsText<chain extends Chain | undefined>(
128
127
  }),
129
128
  gatewayUrls ?? [localBatchGatewayUrl],
130
129
  ],
130
+ functionName: 'resolveWithGateways',
131
131
  blockNumber,
132
132
  blockTag,
133
133
  } as const
@@ -147,7 +147,7 @@ export async function getEnsText<chain extends Chain | undefined>(
147
147
  return record === '' ? null : record
148
148
  } catch (err) {
149
149
  if (strict) throw err
150
- if (isNullUniversalResolverError(err, 'resolve')) return null
150
+ if (isNullUniversalResolverError(err)) return null
151
151
  throw err
152
152
  }
153
153
  }
@@ -175,8 +175,8 @@ export async function waitForTransactionReceipt<
175
175
 
176
176
  const timer = timeout
177
177
  ? setTimeout(() => {
178
- _unwatch()
179
- _unobserve()
178
+ _unwatch?.()
179
+ _unobserve?.()
180
180
  reject(new WaitForTransactionReceiptTimeoutError({ hash }))
181
181
  }, timeout)
182
182
  : undefined
@@ -194,7 +194,7 @@ export async function waitForTransactionReceipt<
194
194
  if (receipt && confirmations <= 1) {
195
195
  clearTimeout(timer)
196
196
  emit.resolve(receipt)
197
- _unobserve()
197
+ _unobserve?.()
198
198
  return
199
199
  }
200
200
 
@@ -210,9 +210,9 @@ export async function waitForTransactionReceipt<
210
210
  async onBlockNumber(blockNumber_) {
211
211
  const done = (fn: () => void) => {
212
212
  clearTimeout(timer)
213
- _unwatch()
213
+ _unwatch?.()
214
214
  fn()
215
- _unobserve()
215
+ _unobserve?.()
216
216
  }
217
217
 
218
218
  let blockNumber = blockNumber_
@@ -3,6 +3,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
3
3
  export const avalanche = /*#__PURE__*/ defineChain({
4
4
  id: 43_114,
5
5
  name: 'Avalanche',
6
+ blockTime: 1_700,
6
7
  nativeCurrency: {
7
8
  decimals: 18,
8
9
  name: 'Avalanche',
@@ -1,7 +1,9 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
+
2
3
  export const berachain = /*#__PURE__*/ defineChain({
3
4
  id: 80094,
4
5
  name: 'Berachain',
6
+ blockTime: 2_000,
5
7
  nativeCurrency: {
6
8
  decimals: 18,
7
9
  name: 'BERA Token',
@@ -17,8 +19,8 @@ export const berachain = /*#__PURE__*/ defineChain({
17
19
  blockCreated: 877007,
18
20
  },
19
21
  ensUniversalResolver: {
20
- address: '0xddfb18888a9466688235887dec2a10c4f5effee9',
21
- blockCreated: 877008,
22
+ address: '0x4D41762915F83c76EcaF6776d9b08076aA32b492',
23
+ blockCreated: 9310021,
22
24
  },
23
25
  },
24
26
  rpcUrls: {
@@ -2,6 +2,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
2
2
 
3
3
  export const berachainBepolia = /*#__PURE__*/ defineChain({
4
4
  id: 80069,
5
+ blockTime: 2_000,
5
6
  name: 'Berachain Bepolia',
6
7
  nativeCurrency: {
7
8
  decimals: 18,
@@ -3,6 +3,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
3
3
  export const bsc = /*#__PURE__*/ defineChain({
4
4
  id: 56,
5
5
  name: 'BNB Smart Chain',
6
+ blockTime: 750,
6
7
  nativeCurrency: {
7
8
  decimals: 18,
8
9
  name: 'BNB',
@@ -19,5 +19,11 @@ export const eduChain = /*#__PURE__*/ defineChain({
19
19
  url: 'https://educhain.blockscout.com/',
20
20
  },
21
21
  },
22
+ contracts: {
23
+ multicall3: {
24
+ address: '0xcA11bde05977b3631167028862bE2a173976CA11',
25
+ blockCreated: 16410660,
26
+ },
27
+ },
22
28
  testnet: false,
23
29
  })
@@ -3,6 +3,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
3
3
  export const etherlink = /*#__PURE__*/ defineChain({
4
4
  id: 42793,
5
5
  name: 'Etherlink',
6
+ blockTime: 4_830,
6
7
  nativeCurrency: {
7
8
  decimals: 18,
8
9
  name: 'Tez',
@@ -4,6 +4,7 @@ export const hemi = /*#__PURE__*/ defineChain({
4
4
  id: 43111,
5
5
  name: 'Hemi',
6
6
  network: 'Hemi',
7
+ blockTime: 12_000,
7
8
  nativeCurrency: {
8
9
  name: 'Ether',
9
10
  symbol: 'ETH',
@@ -21,13 +21,9 @@ export const holesky = /*#__PURE__*/ defineChain({
21
21
  address: '0xca11bde05977b3631167028862be2a173976ca11',
22
22
  blockCreated: 77,
23
23
  },
24
- ensRegistry: {
25
- address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
26
- blockCreated: 801613,
27
- },
28
24
  ensUniversalResolver: {
29
- address: '0xa6AC935D4971E3CD133b950aE053bECD16fE7f3b',
30
- blockCreated: 973484,
25
+ address: '0xeeeeeeee14d718c2b47d9923deab1335e144eeee',
26
+ blockCreated: 4_295_055,
31
27
  },
32
28
  },
33
29
  testnet: true,
@@ -29,8 +29,8 @@ export const linea = /*#__PURE__*/ defineChain({
29
29
  blockCreated: 6682888,
30
30
  },
31
31
  ensUniversalResolver: {
32
- address: '0x3aA974fb3f8C1E02796048BDCdeD79e9D53a6965',
33
- blockCreated: 6683000,
32
+ address: '0x4D41762915F83c76EcaF6776d9b08076aA32b492',
33
+ blockCreated: 22_222_151,
34
34
  },
35
35
  },
36
36
  ensTlds: ['.linea.eth'],
@@ -29,8 +29,8 @@ export const lineaSepolia = /*#__PURE__*/ defineChain({
29
29
  blockCreated: 2395094,
30
30
  },
31
31
  ensUniversalResolver: {
32
- address: '0x72560a31B3DAEE82B984a7F51c6b3b1bb7CC9F50',
33
- blockCreated: 2395255,
32
+ address: '0x4D41762915F83c76EcaF6776d9b08076aA32b492',
33
+ blockCreated: 17_168_484,
34
34
  },
35
35
  },
36
36
  ensTlds: ['.linea.eth'],
@@ -18,12 +18,9 @@ export const mainnet = /*#__PURE__*/ defineChain({
18
18
  },
19
19
  },
20
20
  contracts: {
21
- ensRegistry: {
22
- address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
23
- },
24
21
  ensUniversalResolver: {
25
- address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67',
26
- blockCreated: 19_258_213,
22
+ address: '0xeeeeeeee14d718c2b47d9923deab1335e144eeee',
23
+ blockCreated: 23_085_558,
27
24
  },
28
25
  multicall3: {
29
26
  address: '0xca11bde05977b3631167028862be2a173976ca11',
@@ -0,0 +1,21 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const mantraDuKongEVMTestnet = /*#__PURE__*/ defineChain({
4
+ id: 5887,
5
+ name: 'MANTRA DuKong EVM Testnet',
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: 'OM',
9
+ symbol: 'OM',
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://evm.dukong.mantrachain.io'] },
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'MANTRAScan',
17
+ url: 'https://mantrascan.io/dukong',
18
+ },
19
+ },
20
+ testnet: true,
21
+ })
@@ -2,6 +2,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
2
2
 
3
3
  export const megaethTestnet = /*#__PURE__*/ defineChain({
4
4
  id: 6342,
5
+ blockTime: 1_000,
5
6
  name: 'MegaETH Testnet',
6
7
  nativeCurrency: {
7
8
  name: 'MegaETH Testnet Ether',
@@ -3,6 +3,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
3
3
  export const monadTestnet = /*#__PURE__*/ defineChain({
4
4
  id: 10_143,
5
5
  name: 'Monad Testnet',
6
+ blockTime: 400,
6
7
  nativeCurrency: {
7
8
  name: 'Testnet MON Token',
8
9
  symbol: 'MON',
@@ -21,10 +21,9 @@ export const sepolia = /*#__PURE__*/ defineChain({
21
21
  address: '0xca11bde05977b3631167028862be2a173976ca11',
22
22
  blockCreated: 751532,
23
23
  },
24
- ensRegistry: { address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' },
25
24
  ensUniversalResolver: {
26
- address: '0xc8Af999e38273D658BE1b921b88A9Ddf005769cC',
27
- blockCreated: 5_317_080,
25
+ address: '0xeeeeeeee14d718c2b47d9923deab1335e144eeee',
26
+ blockCreated: 8_928_790,
28
27
  },
29
28
  },
30
29
  testnet: true,
@@ -3,6 +3,7 @@ import { defineChain } from '../../utils/chain/defineChain.js'
3
3
  export const sonic = /*#__PURE__*/ defineChain({
4
4
  id: 146,
5
5
  name: 'Sonic',
6
+ blockTime: 630,
6
7
  nativeCurrency: {
7
8
  decimals: 18,
8
9
  name: 'Sonic',
package/chains/index.ts CHANGED
@@ -335,6 +335,7 @@ export { mantaTestnet } from './definitions/mantaTestnet.js'
335
335
  export { mantle } from './definitions/mantle.js'
336
336
  export { mantleSepoliaTestnet } from './definitions/mantleSepoliaTestnet.js'
337
337
  export { mantleTestnet } from './definitions/mantleTestnet.js'
338
+ export { mantraDuKongEVMTestnet } from './definitions/mantraDuKongEVMTestnet.js'
338
339
  export { mapProtocol } from './definitions/mapProtocol.js'
339
340
  export { matchain } from './definitions/matchain.js'
340
341
  export { matchainTestnet } from './definitions/matchainTestnet.js'