viem 0.0.1-alpha.27 → 0.0.1-alpha.29

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 (81) hide show
  1. package/dist/chain-4d46a747.d.ts +543 -0
  2. package/dist/{chain-b0cfb141.d.ts → chain-c7c44165.d.ts} +1 -1
  3. package/dist/chains.d.ts +5 -3
  4. package/dist/chains.js +46 -46
  5. package/dist/chains.mjs +1 -1
  6. package/dist/{chunk-JY7JGKSA.js → chunk-4VQKZYE2.js} +219 -157
  7. package/dist/chunk-4VQKZYE2.js.map +1 -0
  8. package/dist/{chunk-2DSFM32P.js → chunk-CKYH337I.js} +15 -15
  9. package/dist/{chunk-2DSFM32P.js.map → chunk-CKYH337I.js.map} +1 -1
  10. package/dist/{chunk-W7KWIGWO.js → chunk-EYORBAD4.js} +45 -44
  11. package/dist/chunk-EYORBAD4.js.map +1 -0
  12. package/dist/{chunk-LF6P33WQ.mjs → chunk-HPUQL3IM.mjs} +3 -3
  13. package/dist/chunk-HPUQL3IM.mjs.map +1 -0
  14. package/dist/chunk-OJ7H3CQF.js +265 -0
  15. package/dist/chunk-OJ7H3CQF.js.map +1 -0
  16. package/dist/chunk-Q67VUTW3.mjs +210 -0
  17. package/dist/chunk-Q67VUTW3.mjs.map +1 -0
  18. package/dist/{chunk-AKGXRZDN.mjs → chunk-RR4MGS6O.mjs} +27 -26
  19. package/dist/chunk-RR4MGS6O.mjs.map +1 -0
  20. package/dist/chunk-S252SZEL.mjs +265 -0
  21. package/dist/chunk-S252SZEL.mjs.map +1 -0
  22. package/dist/chunk-SEIPUKZE.js +210 -0
  23. package/dist/chunk-SEIPUKZE.js.map +1 -0
  24. package/dist/{chunk-BJJH7RYH.mjs → chunk-TQC7KZ24.mjs} +164 -102
  25. package/dist/chunk-TQC7KZ24.mjs.map +1 -0
  26. package/dist/contract.d.ts +12 -128
  27. package/dist/contract.js +6 -4
  28. package/dist/contract.mjs +5 -3
  29. package/dist/{createClient-6689596e.d.ts → createClient-5d5c14d6.d.ts} +5 -3
  30. package/dist/createPublicClient-2b4afeac.d.ts +629 -0
  31. package/dist/{eip1193-617a05ae.d.ts → eip1193-f09a55af.d.ts} +2 -2
  32. package/dist/ens.d.ts +10 -68
  33. package/dist/ens.js +5 -199
  34. package/dist/ens.js.map +1 -1
  35. package/dist/ens.mjs +7 -201
  36. package/dist/ens.mjs.map +1 -1
  37. package/dist/formatAbiItem-d231fef2.d.ts +14 -0
  38. package/dist/{getAbiItem-d2e8bd76.d.ts → getAbiItem-0e085959.d.ts} +15 -15
  39. package/dist/index.d.ts +22 -13
  40. package/dist/index.js +368 -26
  41. package/dist/index.js.map +1 -1
  42. package/dist/index.mjs +358 -16
  43. package/dist/index.mjs.map +1 -1
  44. package/dist/namehash-88f4639d.d.ts +22 -0
  45. package/dist/parseGwei-4d0b0d73.d.ts +344 -0
  46. package/dist/public.d.ts +11 -334
  47. package/dist/public.js +5 -3
  48. package/dist/public.mjs +4 -2
  49. package/dist/test-b9208949.d.ts +213 -0
  50. package/dist/test.d.ts +8 -149
  51. package/dist/test.js +20 -222
  52. package/dist/test.js.map +1 -1
  53. package/dist/test.mjs +30 -232
  54. package/dist/test.mjs.map +1 -1
  55. package/dist/{transactionReceipt-44dbf122.d.ts → transactionReceipt-84fc92e1.d.ts} +1 -1
  56. package/dist/{transactionRequest-f437b4ba.d.ts → transactionRequest-44c539b4.d.ts} +1 -1
  57. package/dist/utils/index.d.ts +12 -238
  58. package/dist/utils/index.js +2 -2
  59. package/dist/utils/index.mjs +1 -1
  60. package/dist/wallet-9b1c6905.d.ts +104 -0
  61. package/dist/wallet.d.ts +7 -41
  62. package/dist/wallet.js +3 -3
  63. package/dist/wallet.mjs +2 -2
  64. package/dist/window.d.ts +4 -2
  65. package/package.json +1 -1
  66. package/dist/call-3476b8ee.d.ts +0 -22
  67. package/dist/chain-42de87e5.d.ts +0 -359
  68. package/dist/chunk-AKGXRZDN.mjs.map +0 -1
  69. package/dist/chunk-BJJH7RYH.mjs.map +0 -1
  70. package/dist/chunk-JY7JGKSA.js.map +0 -1
  71. package/dist/chunk-LF6P33WQ.mjs.map +0 -1
  72. package/dist/chunk-W7KWIGWO.js.map +0 -1
  73. package/dist/contract-9dd2f98b.d.ts +0 -166
  74. package/dist/createPublicClient-fd558574.d.ts +0 -19
  75. package/dist/createTestClient-bc1d9028.d.ts +0 -34
  76. package/dist/createWalletClient-4df88244.d.ts +0 -30
  77. package/dist/decodeErrorResult-ac835649.d.ts +0 -16
  78. package/dist/readContract-c460f23a.d.ts +0 -10
  79. package/dist/rpc-8c10fc98.d.ts +0 -119
  80. package/dist/sendTransaction-7ce442c0.d.ts +0 -12
  81. package/dist/watchEvent-569c9976.d.ts +0 -41
@@ -0,0 +1,265 @@
1
+ import {
2
+ formatTransactionRequest,
3
+ hexToNumber,
4
+ numberToHex
5
+ } from "./chunk-RR4MGS6O.mjs";
6
+
7
+ // src/actions/test/dropTransaction.ts
8
+ async function dropTransaction(client, { hash }) {
9
+ return await client.request({
10
+ method: `${client.mode}_dropTransaction`,
11
+ params: [hash]
12
+ });
13
+ }
14
+
15
+ // src/actions/test/getAutomine.ts
16
+ async function getAutomine(client) {
17
+ return await client.request({
18
+ method: `${client.mode}_getAutomine`
19
+ });
20
+ }
21
+
22
+ // src/actions/test/getTxpoolContent.ts
23
+ async function getTxpoolContent(client) {
24
+ return await client.request({
25
+ method: "txpool_content"
26
+ });
27
+ }
28
+
29
+ // src/actions/test/getTxpoolStatus.ts
30
+ async function getTxpoolStatus(client) {
31
+ const { pending, queued } = await client.request({
32
+ method: "txpool_status"
33
+ });
34
+ return {
35
+ pending: hexToNumber(pending),
36
+ queued: hexToNumber(queued)
37
+ };
38
+ }
39
+
40
+ // src/actions/test/impersonateAccount.ts
41
+ async function impersonateAccount(client, { address }) {
42
+ return await client.request({
43
+ method: `${client.mode}_impersonateAccount`,
44
+ params: [address]
45
+ });
46
+ }
47
+
48
+ // src/actions/test/increaseTime.ts
49
+ async function increaseTime(client, { seconds }) {
50
+ return await client.request({
51
+ method: "evm_increaseTime",
52
+ params: [numberToHex(seconds)]
53
+ });
54
+ }
55
+
56
+ // src/actions/test/inspectTxpool.ts
57
+ async function inspectTxpool(client) {
58
+ return await client.request({
59
+ method: "txpool_inspect"
60
+ });
61
+ }
62
+
63
+ // src/actions/test/mine.ts
64
+ async function mine(client, { blocks, interval }) {
65
+ return await client.request({
66
+ method: `${client.mode}_mine`,
67
+ params: [numberToHex(blocks), numberToHex(interval || 0)]
68
+ });
69
+ }
70
+
71
+ // src/actions/test/removeBlockTimestampInterval.ts
72
+ async function removeBlockTimestampInterval(client) {
73
+ return await client.request({
74
+ method: `${client.mode}_removeBlockTimestampInterval`
75
+ });
76
+ }
77
+
78
+ // src/actions/test/reset.ts
79
+ async function reset(client, { blockNumber, jsonRpcUrl } = {}) {
80
+ return await client.request({
81
+ method: `${client.mode}_reset`,
82
+ params: [{ forking: { blockNumber: Number(blockNumber), jsonRpcUrl } }]
83
+ });
84
+ }
85
+
86
+ // src/actions/test/revert.ts
87
+ async function revert(client, { id }) {
88
+ return await client.request({
89
+ method: "evm_revert",
90
+ params: [id]
91
+ });
92
+ }
93
+
94
+ // src/actions/test/sendUnsignedTransaction.ts
95
+ async function sendUnsignedTransaction(client, request) {
96
+ const request_ = formatTransactionRequest(request);
97
+ const hash = await client.request({
98
+ method: "eth_sendUnsignedTransaction",
99
+ params: [request_]
100
+ });
101
+ return hash;
102
+ }
103
+
104
+ // src/actions/test/setAutomine.ts
105
+ async function setAutomine(client, enabled) {
106
+ return await client.request({
107
+ method: "evm_setAutomine",
108
+ params: [enabled]
109
+ });
110
+ }
111
+
112
+ // src/actions/test/setBalance.ts
113
+ async function setBalance(client, { address, value }) {
114
+ return await client.request({
115
+ method: `${client.mode}_setBalance`,
116
+ params: [address, numberToHex(value)]
117
+ });
118
+ }
119
+
120
+ // src/actions/test/setBlockGasLimit.ts
121
+ async function setBlockGasLimit(client, { gasLimit }) {
122
+ return await client.request({
123
+ method: "evm_setBlockGasLimit",
124
+ params: [numberToHex(gasLimit)]
125
+ });
126
+ }
127
+
128
+ // src/actions/test/setBlockTimestampInterval.ts
129
+ async function setBlockTimestampInterval(client, { interval }) {
130
+ return await client.request({
131
+ method: `${client.mode}_setBlockTimestampInterval`,
132
+ params: [interval]
133
+ });
134
+ }
135
+
136
+ // src/actions/test/setCode.ts
137
+ async function setCode(client, { address, bytecode }) {
138
+ return await client.request({
139
+ method: `${client.mode}_setCode`,
140
+ params: [address, bytecode]
141
+ });
142
+ }
143
+
144
+ // src/actions/test/setCoinbase.ts
145
+ async function setCoinbase(client, { address }) {
146
+ return await client.request({
147
+ method: `${client.mode}_setCoinbase`,
148
+ params: [address]
149
+ });
150
+ }
151
+
152
+ // src/actions/test/setIntervalMining.ts
153
+ async function setIntervalMining(client, { interval }) {
154
+ return await client.request({
155
+ method: "evm_setIntervalMining",
156
+ params: [interval]
157
+ });
158
+ }
159
+
160
+ // src/actions/test/setLoggingEnabled.ts
161
+ async function setLoggingEnabled(client, enabled) {
162
+ return await client.request({
163
+ method: `${client.mode}_setLoggingEnabled`,
164
+ params: [enabled]
165
+ });
166
+ }
167
+
168
+ // src/actions/test/setMinGasPrice.ts
169
+ async function setMinGasPrice(client, { gasPrice }) {
170
+ return await client.request({
171
+ method: `${client.mode}_setMinGasPrice`,
172
+ params: [numberToHex(gasPrice)]
173
+ });
174
+ }
175
+
176
+ // src/actions/test/setNextBlockBaseFeePerGas.ts
177
+ async function setNextBlockBaseFeePerGas(client, { baseFeePerGas }) {
178
+ return await client.request({
179
+ method: `${client.mode}_setNextBlockBaseFeePerGas`,
180
+ params: [numberToHex(baseFeePerGas)]
181
+ });
182
+ }
183
+
184
+ // src/actions/test/setNextBlockTimestamp.ts
185
+ async function setNextBlockTimestamp(client, { timestamp }) {
186
+ return await client.request({
187
+ method: "evm_setNextBlockTimestamp",
188
+ params: [numberToHex(timestamp)]
189
+ });
190
+ }
191
+
192
+ // src/actions/test/setNonce.ts
193
+ async function setNonce(client, { address, nonce }) {
194
+ return await client.request({
195
+ method: `${client.mode}_setNonce`,
196
+ params: [address, numberToHex(nonce)]
197
+ });
198
+ }
199
+
200
+ // src/actions/test/setRpcUrl.ts
201
+ async function setRpcUrl(client, jsonRpcUrl) {
202
+ return await client.request({
203
+ method: `${client.mode}_setRpcUrl`,
204
+ params: [jsonRpcUrl]
205
+ });
206
+ }
207
+
208
+ // src/actions/test/setStorageAt.ts
209
+ async function setStorageAt(client, { address, index, value }) {
210
+ return await client.request({
211
+ method: `${client.mode}_setStorageAt`,
212
+ params: [
213
+ address,
214
+ typeof index === "number" ? numberToHex(index) : index,
215
+ value
216
+ ]
217
+ });
218
+ }
219
+
220
+ // src/actions/test/snapshot.ts
221
+ async function snapshot(client) {
222
+ return await client.request({
223
+ method: "evm_snapshot"
224
+ });
225
+ }
226
+
227
+ // src/actions/test/stopImpersonatingAccount.ts
228
+ async function stopImpersonatingAccount(client, { address }) {
229
+ return await client.request({
230
+ method: `${client.mode}_stopImpersonatingAccount`,
231
+ params: [address]
232
+ });
233
+ }
234
+
235
+ export {
236
+ dropTransaction,
237
+ getAutomine,
238
+ getTxpoolContent,
239
+ getTxpoolStatus,
240
+ impersonateAccount,
241
+ increaseTime,
242
+ inspectTxpool,
243
+ mine,
244
+ removeBlockTimestampInterval,
245
+ reset,
246
+ revert,
247
+ sendUnsignedTransaction,
248
+ setAutomine,
249
+ setBalance,
250
+ setBlockGasLimit,
251
+ setBlockTimestampInterval,
252
+ setCode,
253
+ setCoinbase,
254
+ setIntervalMining,
255
+ setLoggingEnabled,
256
+ setMinGasPrice,
257
+ setNextBlockBaseFeePerGas,
258
+ setNextBlockTimestamp,
259
+ setNonce,
260
+ setRpcUrl,
261
+ setStorageAt,
262
+ snapshot,
263
+ stopImpersonatingAccount
264
+ };
265
+ //# sourceMappingURL=chunk-S252SZEL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/actions/test/dropTransaction.ts","../src/actions/test/getAutomine.ts","../src/actions/test/getTxpoolContent.ts","../src/actions/test/getTxpoolStatus.ts","../src/actions/test/impersonateAccount.ts","../src/actions/test/increaseTime.ts","../src/actions/test/inspectTxpool.ts","../src/actions/test/mine.ts","../src/actions/test/removeBlockTimestampInterval.ts","../src/actions/test/reset.ts","../src/actions/test/revert.ts","../src/actions/test/sendUnsignedTransaction.ts","../src/actions/test/setAutomine.ts","../src/actions/test/setBalance.ts","../src/actions/test/setBlockGasLimit.ts","../src/actions/test/setBlockTimestampInterval.ts","../src/actions/test/setCode.ts","../src/actions/test/setCoinbase.ts","../src/actions/test/setIntervalMining.ts","../src/actions/test/setLoggingEnabled.ts","../src/actions/test/setMinGasPrice.ts","../src/actions/test/setNextBlockBaseFeePerGas.ts","../src/actions/test/setNextBlockTimestamp.ts","../src/actions/test/setNonce.ts","../src/actions/test/setRpcUrl.ts","../src/actions/test/setStorageAt.ts","../src/actions/test/snapshot.ts","../src/actions/test/stopImpersonatingAccount.ts"],"sourcesContent":["import type { TestClient } from '../../clients'\nimport type { Hash } from '../../types'\n\nexport type DropTransactionArgs = {\n /** The hash of the transaction to drop. */\n hash: Hash\n}\n\nexport async function dropTransaction(\n client: TestClient,\n { hash }: DropTransactionArgs,\n) {\n return await client.request({\n method: `${client.mode}_dropTransaction`,\n params: [hash],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type GetAutomineResponse = boolean\n\nexport async function getAutomine(\n client: TestClient,\n): Promise<GetAutomineResponse> {\n return await client.request({\n method: `${client.mode}_getAutomine`,\n })\n}\n","import { Address } from 'abitype'\nimport type { TestClient } from '../../clients'\nimport { RpcTransaction } from '../../types'\n\nexport type GetTxPoolContentResponse = {\n pending: Record<Address, Record<string, RpcTransaction>>\n queued: Record<Address, Record<string, RpcTransaction>>\n}\n\nexport async function getTxpoolContent(\n client: TestClient,\n): Promise<GetTxPoolContentResponse> {\n return await client.request({\n method: 'txpool_content',\n })\n}\n","import type { TestClient } from '../../clients'\nimport { hexToNumber } from '../../utils'\n\nexport type GetTxPoolStatusResponse = {\n pending: number\n queued: number\n}\n\nexport async function getTxpoolStatus(\n client: TestClient,\n): Promise<GetTxPoolStatusResponse> {\n const { pending, queued } = await client.request({\n method: 'txpool_status',\n })\n return {\n pending: hexToNumber(pending),\n queued: hexToNumber(queued),\n }\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type ImpersonateAccountArgs = {\n /** The account to impersonate. */\n address: Address\n}\n\nexport async function impersonateAccount(\n client: TestClient,\n { address }: ImpersonateAccountArgs,\n) {\n return await client.request({\n method: `${client.mode}_impersonateAccount`,\n params: [address],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type IncreaseTimeArgs = {\n /** The amount of seconds to jump forward in time. */\n seconds: number\n}\n\nexport async function increaseTime(\n client: TestClient,\n { seconds }: IncreaseTimeArgs,\n) {\n return await client.request({\n method: 'evm_increaseTime',\n params: [numberToHex(seconds)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { Address } from '../../types'\n\nexport type InspectTxpoolResponse = {\n pending: Record<Address, Record<string, string>>\n queued: Record<Address, Record<string, string>>\n}\n\nexport async function inspectTxpool(\n client: TestClient,\n): Promise<InspectTxpoolResponse> {\n return await client.request({\n method: 'txpool_inspect',\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type MineArgs = {\n /** Number of blocks to mine. */\n blocks: number\n /** Interval between each block in seconds. */\n interval?: number\n}\n\nexport async function mine(client: TestClient, { blocks, interval }: MineArgs) {\n return await client.request({\n method: `${client.mode}_mine`,\n params: [numberToHex(blocks), numberToHex(interval || 0)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function removeBlockTimestampInterval(client: TestClient) {\n return await client.request({\n method: `${client.mode}_removeBlockTimestampInterval`,\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type ResetArgs = {\n /** The block number to reset from. */\n blockNumber?: bigint\n /** The JSON RPC URL. */\n jsonRpcUrl?: string\n}\n\nexport async function reset(\n client: TestClient,\n { blockNumber, jsonRpcUrl }: ResetArgs = {},\n) {\n return await client.request({\n method: `${client.mode}_reset`,\n params: [{ forking: { blockNumber: Number(blockNumber), jsonRpcUrl } }],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Quantity } from '../../types'\n\nexport type RevertArgs = {\n /** The snapshot ID to revert to. */\n id: Quantity\n}\n\nexport async function revert(client: TestClient, { id }: RevertArgs) {\n return await client.request({\n method: 'evm_revert',\n params: [id],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Hash, TransactionRequest } from '../../types'\nimport { formatTransactionRequest } from '../../utils'\n\nexport type SendUnsignedTransactionArgs = TransactionRequest\n\nexport type SendUnsignedTransactionResponse = Hash\n\nexport async function sendUnsignedTransaction(\n client: TestClient,\n request: SendUnsignedTransactionArgs,\n): Promise<SendUnsignedTransactionResponse> {\n const request_ = formatTransactionRequest(request)\n const hash = await client.request({\n method: 'eth_sendUnsignedTransaction',\n params: [request_],\n })\n return hash\n}\n","import type { TestClient } from '../../clients'\n\nexport async function setAutomine(client: TestClient, enabled: boolean) {\n return await client.request({\n method: 'evm_setAutomine',\n params: [enabled],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetBalanceArgs = {\n /** The account address. */\n address: Address\n /** Amount (in wei) to set */\n value: bigint\n}\n\nexport async function setBalance(\n client: TestClient,\n { address, value }: SetBalanceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setBalance`,\n params: [address, numberToHex(value)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetBlockGasLimitArgs = {\n /** Gas limit (in wei). */\n gasLimit: bigint\n}\n\nexport async function setBlockGasLimit(\n client: TestClient,\n { gasLimit }: SetBlockGasLimitArgs,\n) {\n return await client.request({\n method: 'evm_setBlockGasLimit',\n params: [numberToHex(gasLimit)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type SetBlockTimestampIntervalArgs = {\n /** The interval (in seconds). */\n interval: number\n}\n\nexport async function setBlockTimestampInterval(\n client: TestClient,\n { interval }: SetBlockTimestampIntervalArgs,\n) {\n return await client.request({\n method: `${client.mode}_setBlockTimestampInterval`,\n params: [interval],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address, Hex } from '../../types'\n\nexport type SetCodeArgs = {\n /** The account address. */\n address: Address\n /** The bytecode to set */\n bytecode: Hex\n}\n\nexport async function setCode(\n client: TestClient,\n { address, bytecode }: SetCodeArgs,\n) {\n return await client.request({\n method: `${client.mode}_setCode`,\n params: [address, bytecode],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type SetCoinbaseArgs = {\n /** The coinbase address. */\n address: Address\n}\n\nexport async function setCoinbase(\n client: TestClient,\n { address }: SetCoinbaseArgs,\n) {\n return await client.request({\n method: `${client.mode}_setCoinbase`,\n params: [address],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type SetIntervalMiningArgs = {\n /** The mining interval. */\n interval: number\n}\n\nexport async function setIntervalMining(\n client: TestClient,\n { interval }: SetIntervalMiningArgs,\n) {\n return await client.request({\n method: 'evm_setIntervalMining',\n params: [interval],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function setLoggingEnabled(client: TestClient, enabled: boolean) {\n return await client.request({\n method: `${client.mode}_setLoggingEnabled`,\n params: [enabled],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetMinGasPriceArgs = {\n /** The gas price. */\n gasPrice: bigint\n}\n\nexport async function setMinGasPrice(\n client: TestClient,\n { gasPrice }: SetMinGasPriceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setMinGasPrice`,\n params: [numberToHex(gasPrice)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetNextBlockBaseFeePerGasArgs = {\n /** Base fee per gas (in wei). */\n baseFeePerGas: bigint\n}\n\nexport async function setNextBlockBaseFeePerGas(\n client: TestClient,\n { baseFeePerGas }: SetNextBlockBaseFeePerGasArgs,\n) {\n return await client.request({\n method: `${client.mode}_setNextBlockBaseFeePerGas`,\n params: [numberToHex(baseFeePerGas)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetNextBlockTimestampArgs = {\n /** The timestamp (in seconds). */\n timestamp: bigint\n}\n\nexport async function setNextBlockTimestamp(\n client: TestClient,\n { timestamp }: SetNextBlockTimestampArgs,\n) {\n return await client.request({\n method: 'evm_setNextBlockTimestamp',\n params: [numberToHex(timestamp)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetNonceArgs = {\n /** The account address. */\n address: Address\n /** The nonce to set. */\n nonce: number\n}\n\nexport async function setNonce(\n client: TestClient,\n { address, nonce }: SetNonceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setNonce`,\n params: [address, numberToHex(nonce)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function setRpcUrl(client: TestClient, jsonRpcUrl: string) {\n return await client.request({\n method: `${client.mode}_setRpcUrl`,\n params: [jsonRpcUrl],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address, Hash, Hex } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetStorageAtArgs = {\n /** The account address. */\n address: Address\n /** The storage slot (index). Can either be a number or hash value. */\n index: number | Hash\n /** The value to store as a 32 byte hex string. */\n value: Hex\n}\n\nexport async function setStorageAt(\n client: TestClient,\n { address, index, value }: SetStorageAtArgs,\n) {\n return await client.request({\n method: `${client.mode}_setStorageAt`,\n params: [\n address,\n typeof index === 'number' ? numberToHex(index) : index,\n value,\n ],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function snapshot(client: TestClient) {\n return await client.request({\n method: 'evm_snapshot',\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type StopImpersonatingAccountArgs = {\n /** The account to impersonate. */\n address: Address\n}\n\nexport async function stopImpersonatingAccount(\n client: TestClient,\n { address }: StopImpersonatingAccountArgs,\n) {\n return await client.request({\n method: `${client.mode}_stopImpersonatingAccount`,\n params: [address],\n })\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,210 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunk4VQKZYE2js = require('./chunk-4VQKZYE2.js');
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ var _chunkEYORBAD4js = require('./chunk-EYORBAD4.js');
17
+
18
+ // src/utils/ens/labelhash.ts
19
+ function labelhash(label) {
20
+ let result = new Uint8Array(32).fill(0);
21
+ if (!label)
22
+ return _chunkEYORBAD4js.bytesToHex.call(void 0, result);
23
+ return _chunkEYORBAD4js.keccak256.call(void 0, _chunkEYORBAD4js.stringToBytes.call(void 0, label));
24
+ }
25
+
26
+ // src/utils/ens/namehash.ts
27
+ function namehash(name) {
28
+ let result = new Uint8Array(32).fill(0);
29
+ if (!name)
30
+ return _chunkEYORBAD4js.bytesToHex.call(void 0, result);
31
+ const labels = name.split(".");
32
+ for (let i = labels.length - 1; i >= 0; i -= 1) {
33
+ const hashed = _chunkEYORBAD4js.keccak256.call(void 0, _chunkEYORBAD4js.stringToBytes.call(void 0, labels[i]), "bytes");
34
+ result = _chunkEYORBAD4js.keccak256.call(void 0, _chunkEYORBAD4js.concat.call(void 0, [result, hashed]), "bytes");
35
+ }
36
+ return _chunkEYORBAD4js.bytesToHex.call(void 0, result);
37
+ }
38
+
39
+ // src/utils/ens/packetToBytes.ts
40
+ function packetToBytes(packet) {
41
+ function length(value2) {
42
+ if (value2 === "." || value2 === "..")
43
+ return 1;
44
+ return _chunkEYORBAD4js.toBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
45
+ }
46
+ const bytes = new Uint8Array(length(packet));
47
+ const value = packet.replace(/^\.|\.$/gm, "");
48
+ if (!value.length)
49
+ return bytes;
50
+ let offset = 0;
51
+ const list = value.split(".");
52
+ for (let i = 0; i < list.length; i++) {
53
+ const encoded = _chunkEYORBAD4js.toBytes.call(void 0, list[i]);
54
+ bytes[offset] = encoded.length;
55
+ bytes.set(encoded, offset + 1);
56
+ offset += encoded.length + 1;
57
+ }
58
+ return bytes;
59
+ }
60
+
61
+ // src/actions/ens/getEnsAddress.ts
62
+ async function getEnsAddress(client, {
63
+ blockNumber,
64
+ blockTag,
65
+ name,
66
+ universalResolverAddress: universalResolverAddress_
67
+ }) {
68
+ let universalResolverAddress = universalResolverAddress_;
69
+ if (!universalResolverAddress) {
70
+ if (!client.chain)
71
+ throw new Error(
72
+ "client chain not configured. universalResolverAddress is required."
73
+ );
74
+ const contract = _optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.contracts, 'optionalAccess', _3 => _3.ensUniversalResolver]);
75
+ if (!contract)
76
+ throw new (0, _chunkEYORBAD4js.ChainDoesNotSupportContract)({
77
+ chain: client.chain,
78
+ contract: { name: "ensUniversalResolver" }
79
+ });
80
+ if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
81
+ throw new (0, _chunkEYORBAD4js.ChainDoesNotSupportContract)({
82
+ blockNumber,
83
+ chain: client.chain,
84
+ contract: {
85
+ name: "ensUniversalResolver",
86
+ blockCreated: contract.blockCreated
87
+ }
88
+ });
89
+ universalResolverAddress = contract.address;
90
+ }
91
+ const res = await _chunk4VQKZYE2js.readContract.call(void 0, client, {
92
+ address: universalResolverAddress,
93
+ abi: [
94
+ {
95
+ name: "resolve",
96
+ type: "function",
97
+ stateMutability: "view",
98
+ inputs: [
99
+ { name: "name", type: "bytes" },
100
+ { name: "data", type: "bytes" }
101
+ ],
102
+ outputs: [
103
+ { name: "", type: "bytes" },
104
+ { name: "address", type: "address" }
105
+ ]
106
+ }
107
+ ],
108
+ functionName: "resolve",
109
+ args: [
110
+ _chunkEYORBAD4js.toHex.call(void 0, packetToBytes(name)),
111
+ _chunkEYORBAD4js.encodeFunctionData.call(void 0, {
112
+ abi: [
113
+ {
114
+ name: "addr",
115
+ type: "function",
116
+ stateMutability: "view",
117
+ inputs: [{ name: "name", type: "bytes32" }],
118
+ outputs: []
119
+ }
120
+ ],
121
+ functionName: "addr",
122
+ args: [namehash(name)]
123
+ })
124
+ ],
125
+ blockNumber,
126
+ blockTag
127
+ });
128
+ return _chunkEYORBAD4js.decodeFunctionResult.call(void 0, {
129
+ abi: [
130
+ {
131
+ name: "addr",
132
+ type: "function",
133
+ stateMutability: "view",
134
+ inputs: [],
135
+ outputs: [{ name: "name", type: "address" }]
136
+ }
137
+ ],
138
+ functionName: "addr",
139
+ data: res[0]
140
+ });
141
+ }
142
+
143
+ // src/actions/ens/getEnsName.ts
144
+ async function getEnsName(client, {
145
+ address,
146
+ blockNumber,
147
+ blockTag,
148
+ universalResolverAddress: universalResolverAddress_
149
+ }) {
150
+ let universalResolverAddress = universalResolverAddress_;
151
+ if (!universalResolverAddress) {
152
+ if (!client.chain)
153
+ throw new Error(
154
+ "client chain not configured. universalResolverAddress is required."
155
+ );
156
+ const contract = _optionalChain([client, 'access', _4 => _4.chain, 'optionalAccess', _5 => _5.contracts, 'optionalAccess', _6 => _6.ensUniversalResolver]);
157
+ if (!contract)
158
+ throw new (0, _chunkEYORBAD4js.ChainDoesNotSupportContract)({
159
+ chain: client.chain,
160
+ contract: { name: "ensUniversalResolver" }
161
+ });
162
+ if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
163
+ throw new (0, _chunkEYORBAD4js.ChainDoesNotSupportContract)({
164
+ blockNumber,
165
+ chain: client.chain,
166
+ contract: {
167
+ name: "ensUniversalResolver",
168
+ blockCreated: contract.blockCreated
169
+ }
170
+ });
171
+ universalResolverAddress = contract.address;
172
+ }
173
+ const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
174
+ try {
175
+ const res = await _chunk4VQKZYE2js.readContract.call(void 0, client, {
176
+ address: universalResolverAddress,
177
+ abi: [
178
+ {
179
+ name: "reverse",
180
+ type: "function",
181
+ stateMutability: "view",
182
+ inputs: [{ type: "bytes", name: "reverseName" }],
183
+ outputs: [
184
+ { type: "string", name: "resolvedName" },
185
+ { type: "address", name: "resolvedAddress" },
186
+ { type: "address", name: "reverseResolver" },
187
+ { type: "address", name: "resolver" }
188
+ ]
189
+ }
190
+ ],
191
+ functionName: "reverse",
192
+ args: [_chunkEYORBAD4js.toHex.call(void 0, packetToBytes(reverseNode))],
193
+ blockNumber,
194
+ blockTag
195
+ });
196
+ return res[0];
197
+ } catch (error) {
198
+ if (error instanceof _chunkEYORBAD4js.ContractFunctionExecutionError && error.cause.reason === _chunkEYORBAD4js.panicReasons[50])
199
+ return null;
200
+ throw error;
201
+ }
202
+ }
203
+
204
+
205
+
206
+
207
+
208
+
209
+ exports.labelhash = labelhash; exports.namehash = namehash; exports.getEnsAddress = getEnsAddress; exports.getEnsName = getEnsName;
210
+ //# sourceMappingURL=chunk-SEIPUKZE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/ens/labelhash.ts","../src/utils/ens/namehash.ts","../src/utils/ens/packetToBytes.ts","../src/actions/ens/getEnsAddress.ts","../src/actions/ens/getEnsName.ts"],"names":["value"],"mappings":";;;;;;;;;;;;;;;;;;AAUO,SAAS,UAAU,OAAe;AACvC,MAAI,SAAS,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC;AACtC,MAAI,CAAC;AAAO,WAAO,WAAW,MAAM;AACpC,SAAO,UAAU,cAAc,KAAK,CAAC;AACvC;;;ACAO,SAAS,SAAS,MAAc;AACrC,MAAI,SAAS,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC;AACtC,MAAI,CAAC;AAAM,WAAO,WAAW,MAAM;AAEnC,QAAM,SAAS,KAAK,MAAM,GAAG;AAE7B,WAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AAC9C,UAAM,SAAS,UAAU,cAAc,OAAO,CAAC,CAAC,GAAG,OAAO;AAC1D,aAAS,UAAU,OAAO,CAAC,QAAQ,MAAM,CAAC,GAAG,OAAO;AAAA,EACtD;AAEA,SAAO,WAAW,MAAM;AAC1B;;;ACnBO,SAAS,cAAc,QAA2B;AACvD,WAAS,OAAOA,QAAe;AAC7B,QAAIA,WAAU,OAAOA,WAAU;AAAM,aAAO;AAC5C,WAAO,QAAQA,OAAM,QAAQ,aAAa,EAAE,CAAC,EAAE,SAAS;AAAA,EAC1D;AAEA,QAAM,QAAQ,IAAI,WAAW,OAAO,MAAM,CAAC;AAE3C,QAAM,QAAQ,OAAO,QAAQ,aAAa,EAAE;AAC5C,MAAI,CAAC,MAAM;AAAQ,WAAO;AAE1B,MAAI,SAAS;AACb,QAAM,OAAO,MAAM,MAAM,GAAG;AAC5B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,UAAU,QAAQ,KAAK,CAAC,CAAC;AAC/B,UAAM,MAAM,IAAI,QAAQ;AACxB,UAAM,IAAI,SAAS,SAAS,CAAC;AAC7B,cAAU,QAAQ,SAAS;AAAA,EAC7B;AAEA,SAAO;AACT;;;ACCA,eAAsB,cACpB,QACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0B;AAC5B,GACgC;AAChC,MAAI,2BAA2B;AAC/B,MAAI,CAAC,0BAA0B;AAC7B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,UAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,QAAI,CAAC;AACH,YAAM,IAAI,4BAA4B;AAAA,QACpC,OAAO,OAAO;AAAA,QACd,UAAU,EAAE,MAAM,uBAAuB;AAAA,MAC3C,CAAC;AAEH,QACE,eACA,SAAS,gBACT,SAAS,eAAe;AAExB,YAAM,IAAI,4BAA4B;AAAA,QACpC;AAAA,QACA,OAAO,OAAO;AAAA,QACd,UAAU;AAAA,UACR,MAAM;AAAA,UACN,cAAc,SAAS;AAAA,QACzB;AAAA,MACF,CAAC;AAEH,+BAA2B,SAAS;AAAA,EACtC;AAEA,QAAM,MAAM,MAAM,aAAa,QAAQ;AAAA,IACrC,SAAS;AAAA,IACT,KAAK;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,iBAAiB;AAAA,QACjB,QAAQ;AAAA,UACN,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,QAChC;AAAA,QACA,SAAS;AAAA,UACP,EAAE,MAAM,IAAI,MAAM,QAAQ;AAAA,UAC1B,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,IACd,MAAM;AAAA,MACJ,MAAM,cAAc,IAAI,CAAC;AAAA,MACzB,mBAAmB;AAAA,QACjB,KAAK;AAAA,UACH;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,iBAAiB;AAAA,YACjB,QAAQ,CAAC,EAAE,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,YAC1C,SAAS,CAAC;AAAA,UACZ;AAAA,QACF;AAAA,QACA,cAAc;AAAA,QACd,MAAM,CAAC,SAAS,IAAI,CAAC;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO,qBAAqB;AAAA,IAC1B,KAAK;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,iBAAiB;AAAA,QACjB,QAAQ,CAAC;AAAA,QACT,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,cAAc;AAAA,IACd,MAAM,IAAI,CAAC;AAAA,EACb,CAAC;AACH;;;ACrFA,eAAsB,WACpB,QACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0B;AAC5B,GAC6B;AAC7B,MAAI,2BAA2B;AAC/B,MAAI,CAAC,0BAA0B;AAC7B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,UAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,QAAI,CAAC;AACH,YAAM,IAAI,4BAA4B;AAAA,QACpC,OAAO,OAAO;AAAA,QACd,UAAU,EAAE,MAAM,uBAAuB;AAAA,MAC3C,CAAC;AAEH,QACE,eACA,SAAS,gBACT,SAAS,eAAe;AAExB,YAAM,IAAI,4BAA4B;AAAA,QACpC;AAAA,QACA,OAAO,OAAO;AAAA,QACd,UAAU;AAAA,UACR,MAAM;AAAA,UACN,cAAc,SAAS;AAAA,QACzB;AAAA,MACF,CAAC;AAEH,+BAA2B,SAAS;AAAA,EACtC;AAEA,QAAM,cAAc,GAAG,QAAQ,YAAY,EAAE,UAAU,CAAC;AACxD,MAAI;AACF,UAAM,MAAM,MAAM,aAAa,QAAQ;AAAA,MACrC,SAAS;AAAA,MACT,KAAK;AAAA,QACH;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,iBAAiB;AAAA,UACjB,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,cAAc,CAAC;AAAA,UAC/C,SAAS;AAAA,YACP,EAAE,MAAM,UAAU,MAAM,eAAe;AAAA,YACvC,EAAE,MAAM,WAAW,MAAM,kBAAkB;AAAA,YAC3C,EAAE,MAAM,WAAW,MAAM,kBAAkB;AAAA,YAC3C,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,MACA,cAAc;AAAA,MACd,MAAM,CAAC,MAAM,cAAc,WAAW,CAAC,CAAC;AAAA,MACxC;AAAA,MACA;AAAA,IACF,CAAC;AACD,WAAO,IAAI,CAAC;AAAA,EACd,SAAS,OAAP;AACA,QACE,iBAAiB,kCAChB,MAAM,MAAwC,WAAW,aAAa,EAAE;AAGzE,aAAO;AACT,UAAM;AAAA,EACR;AACF","sourcesContent":["import { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\n\n/**\n * @description Hashes ENS label\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label: string) {\n let result = new Uint8Array(32).fill(0)\n if (!label) return bytesToHex(result)\n return keccak256(stringToBytes(label))\n}\n","import { concat } from '../data'\nimport { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\n\n/**\n * @description Hashes ENS name\n *\n * @example\n * namehash('wagmi-dev.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @see https://eips.ethereum.org/EIPS/eip-137\n * @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names\n */\nexport function namehash(name: string) {\n let result = new Uint8Array(32).fill(0)\n if (!name) return bytesToHex(result)\n\n const labels = name.split('.')\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashed = keccak256(stringToBytes(labels[i]), 'bytes')\n result = keccak256(concat([result, hashed]), 'bytes')\n }\n\n return bytesToHex(result)\n}\n","// Adapted from https://github.com/mafintosh/dns-packet\nimport { ByteArray } from '../../types'\nimport { toBytes } from '../encoding'\n\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n */\nexport function packetToBytes(packet: string): ByteArray {\n function length(value: string) {\n if (value === '.' || value === '..') return 1\n return toBytes(value.replace(/^\\.|\\.$/gm, '')).length + 2\n }\n\n const bytes = new Uint8Array(length(packet))\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '')\n if (!value.length) return bytes\n\n let offset = 0\n const list = value.split('.')\n for (let i = 0; i < list.length; i++) {\n const encoded = toBytes(list[i])\n bytes[offset] = encoded.length\n bytes.set(encoded, offset + 1)\n offset += encoded.length + 1\n }\n\n return bytes\n}\n","import { PublicClient } from '../../clients'\nimport { ChainDoesNotSupportContract } from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { decodeFunctionResult, encodeFunctionData, toHex } from '../../utils'\nimport { namehash, packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsAddressArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** ENS name to get address. */\n name: string\n /** Address of ENS Universal Resolver Contract */\n universalResolverAddress?: Address\n }\n>\n\nexport type GetEnsAddressResponse = Address\n\n/**\n * @description Gets address for ENS name.\n *\n * - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensAddress = await getEnsAddress(publicClient, {\n * name: 'wagmi-dev.eth',\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(\n client: PublicClient,\n {\n blockNumber,\n blockTag,\n name,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsAddressArgs,\n): Promise<GetEnsAddressResponse> {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n ],\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [],\n },\n ],\n functionName: 'addr',\n args: [namehash(name)],\n }),\n ],\n blockNumber,\n blockTag,\n })\n return decodeFunctionResult({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ name: 'name', type: 'address' }],\n },\n ],\n functionName: 'addr',\n data: res[0],\n })\n}\n","import { PublicClient } from '../../clients'\nimport { panicReasons } from '../../constants'\nimport {\n ChainDoesNotSupportContract,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { toHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsNameArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** Address to get ENS name for. */\n address: Address\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address\n }\n>\n\nexport type GetEnsNameResponse = string | null\n\n/**\n * @description Gets primary name for specified address.\n *\n * - Calls `reverse(bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensName = await getEnsName(publicClient, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wagmi-dev.eth'\n */\nexport async function getEnsName(\n client: PublicClient,\n {\n address,\n blockNumber,\n blockTag,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsNameArgs,\n): Promise<GetEnsNameResponse> {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n ],\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n })\n return res[0]\n } catch (error) {\n if (\n error instanceof ContractFunctionExecutionError &&\n (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]\n )\n // No primary name set for address.\n return null\n throw error\n }\n}\n"]}