viem 0.0.1-alpha.24 → 0.0.1-alpha.25

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 (154) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-ac509982.d.ts +23 -0
  3. package/dist/{chain-e33d019b.d.ts → chain-c4ccb458.d.ts} +1 -1
  4. package/dist/{chain-afa13f5a.d.ts → chain-f16512e8.d.ts} +20 -1
  5. package/dist/chains.d.ts +20 -8
  6. package/dist/chains.js +46 -46
  7. package/dist/chains.mjs +1 -1
  8. package/dist/{chunk-YQUC52RL.mjs → chunk-2Y3UZMSP.mjs} +77 -84
  9. package/dist/chunk-2Y3UZMSP.mjs.map +1 -0
  10. package/dist/{chunk-A2HXAZXC.js → chunk-CD2XJOBJ.js} +135 -142
  11. package/dist/chunk-CD2XJOBJ.js.map +1 -0
  12. package/dist/{chunk-LQVMDX5I.mjs → chunk-KSAO4Y4Q.mjs} +133 -54
  13. package/dist/chunk-KSAO4Y4Q.mjs.map +1 -0
  14. package/dist/{chunk-3ARWEJ3G.mjs → chunk-LEPQJNVO.mjs} +18 -2
  15. package/dist/chunk-LEPQJNVO.mjs.map +1 -0
  16. package/dist/{chunk-ZYSXBTBB.js → chunk-NUXMGPMK.js} +30 -14
  17. package/dist/chunk-NUXMGPMK.js.map +1 -0
  18. package/dist/{chunk-4D5XG6XB.js → chunk-THMRUG4D.js} +148 -69
  19. package/dist/chunk-THMRUG4D.js.map +1 -0
  20. package/dist/{contract-70f4ddbe.d.ts → contract-9e76e561.d.ts} +44 -31
  21. package/dist/contract.d.ts +123 -0
  22. package/dist/contract.js +53 -0
  23. package/dist/{clients/index.js.map → contract.js.map} +0 -0
  24. package/dist/contract.mjs +53 -0
  25. package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
  26. package/dist/{createClient-60e3ab98.d.ts → createClient-68ee4bb4.d.ts} +3 -3
  27. package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-b732194e.d.ts} +3 -3
  28. package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-dedf321e.d.ts} +3 -3
  29. package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-75813d83.d.ts} +3 -3
  30. package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
  31. package/dist/{eip1193-9317a312.d.ts → eip1193-6f9ba163.d.ts} +1 -1
  32. package/dist/ens.d.ts +82 -1
  33. package/dist/ens.js +208 -3
  34. package/dist/ens.js.map +1 -1
  35. package/dist/ens.mjs +209 -4
  36. package/dist/ens.mjs.map +1 -1
  37. package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
  38. package/dist/index.d.ts +85 -175
  39. package/dist/index.js +237 -279
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +245 -287
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/public.d.ts +352 -10
  44. package/dist/public.js +3 -4
  45. package/dist/public.mjs +6 -7
  46. package/dist/readContract-4f6e2692.d.ts +10 -0
  47. package/dist/rpc-a5a7f376.d.ts +121 -0
  48. package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-e713f90c.d.ts} +3 -3
  49. package/dist/test.d.ts +160 -5
  50. package/dist/test.js +222 -18
  51. package/dist/test.js.map +1 -1
  52. package/dist/test.mjs +233 -29
  53. package/dist/test.mjs.map +1 -1
  54. package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
  55. package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-c7794f5e.d.ts} +1 -1
  56. package/dist/utils/index.d.ts +224 -20
  57. package/dist/utils/index.js +2 -6
  58. package/dist/utils/index.mjs +3 -7
  59. package/dist/wallet.d.ts +41 -7
  60. package/dist/wallet.js +3 -3
  61. package/dist/wallet.mjs +2 -2
  62. package/dist/watchEvent-c346c12d.d.ts +41 -0
  63. package/dist/window.d.ts +2 -2
  64. package/ens/package.json +4 -0
  65. package/package.json +13 -9
  66. package/src/_test/constants.ts +2 -0
  67. package/src/_test/utils.ts +10 -5
  68. package/src/actions/ens/getEnsAddress.bench.ts +26 -0
  69. package/src/actions/ens/getEnsAddress.test.ts +97 -0
  70. package/src/actions/ens/getEnsAddress.ts +122 -0
  71. package/src/actions/ens/getEnsName.bench.ts +30 -0
  72. package/src/actions/ens/getEnsName.test.ts +101 -0
  73. package/src/actions/ens/getEnsName.ts +106 -0
  74. package/src/actions/ens/index.test.ts +12 -0
  75. package/src/actions/ens/index.ts +3 -0
  76. package/src/actions/index.ts +3 -3
  77. package/src/actions/public/createEventFilter.test.ts +36 -4
  78. package/src/actions/public/createEventFilter.ts +27 -10
  79. package/src/actions/public/getFilterChanges.test.ts +198 -4
  80. package/src/actions/public/getFilterLogs.test.ts +195 -2
  81. package/src/actions/public/getLogs.test.ts +201 -2
  82. package/src/actions/public/index.test.ts +0 -1
  83. package/src/actions/public/index.ts +1 -7
  84. package/src/actions/public/multicall.ts +8 -3
  85. package/src/actions/public/simulateContract.ts +1 -4
  86. package/src/actions/public/watchContractEvent.test.ts +4 -4
  87. package/src/actions/{public → wallet}/deployContract.test.ts +1 -2
  88. package/src/actions/{public → wallet}/deployContract.ts +0 -0
  89. package/src/actions/wallet/index.test.ts +1 -0
  90. package/src/actions/wallet/index.ts +6 -0
  91. package/src/chains.test.ts +44 -1517
  92. package/src/clients/transports/webSocket.test.ts +1 -0
  93. package/src/clients/transports/webSocket.ts +1 -0
  94. package/src/contract.test.ts +31 -0
  95. package/src/contract.ts +68 -0
  96. package/src/ens.test.ts +15 -0
  97. package/src/ens.ts +4 -1
  98. package/src/errors/abi.ts +18 -2
  99. package/src/errors/chain.test.ts +46 -0
  100. package/src/errors/chain.ts +33 -0
  101. package/src/errors/contract.ts +2 -2
  102. package/src/errors/index.ts +3 -0
  103. package/src/index.test.ts +0 -147
  104. package/src/index.ts +0 -257
  105. package/src/public.test.ts +36 -0
  106. package/src/public.ts +2 -6
  107. package/src/test.test.ts +38 -0
  108. package/src/test.ts +1 -0
  109. package/src/types/contract.ts +144 -40
  110. package/src/types/index.ts +2 -1
  111. package/src/types/utils.ts +21 -0
  112. package/src/utils/abi/decodeErrorResult.test.ts +1 -1
  113. package/src/utils/abi/decodeEventLog.test.ts +542 -0
  114. package/src/utils/abi/decodeEventLog.ts +107 -0
  115. package/src/utils/abi/decodeFunctionData.test.ts +1 -2
  116. package/src/utils/abi/decodeFunctionData.ts +5 -2
  117. package/src/utils/abi/encodeFunctionData.ts +1 -4
  118. package/src/utils/abi/index.test.ts +1 -0
  119. package/src/utils/abi/index.ts +6 -0
  120. package/src/utils/ens/index.test.ts +1 -0
  121. package/src/utils/ens/index.ts +2 -0
  122. package/src/utils/ens/packetToBytes.test.ts +11 -0
  123. package/src/utils/ens/packetToBytes.ts +29 -0
  124. package/src/utils/index.test.ts +1 -3
  125. package/src/utils/index.ts +3 -2
  126. package/src/utils/rpc.test.ts +1 -0
  127. package/src/utils/rpc.ts +4 -2
  128. package/src/wallet.test.ts +19 -0
  129. package/wallet/package.json +4 -0
  130. package/clients/package.json +0 -4
  131. package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
  132. package/dist/chunk-4D5XG6XB.js.map +0 -1
  133. package/dist/chunk-6QTEW2BE.mjs +0 -260
  134. package/dist/chunk-6QTEW2BE.mjs.map +0 -1
  135. package/dist/chunk-A2HXAZXC.js.map +0 -1
  136. package/dist/chunk-KRPS5CIB.mjs +0 -256
  137. package/dist/chunk-KRPS5CIB.mjs.map +0 -1
  138. package/dist/chunk-LQVMDX5I.mjs.map +0 -1
  139. package/dist/chunk-N3IOPT3R.js +0 -256
  140. package/dist/chunk-N3IOPT3R.js.map +0 -1
  141. package/dist/chunk-YQUC52RL.mjs.map +0 -1
  142. package/dist/chunk-ZSTVHQ6J.js +0 -260
  143. package/dist/chunk-ZSTVHQ6J.js.map +0 -1
  144. package/dist/chunk-ZYSXBTBB.js.map +0 -1
  145. package/dist/clients/index.d.ts +0 -9
  146. package/dist/clients/index.js +0 -24
  147. package/dist/clients/index.mjs +0 -24
  148. package/dist/normalize-ef9240c0.d.ts +0 -33
  149. package/dist/parseGwei-492ab7dd.d.ts +0 -355
  150. package/dist/rpc-26932bae.d.ts +0 -61
  151. package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
  152. package/dist/watchAsset-d59d6e35.d.ts +0 -38
  153. package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
  154. package/dist/webSocket-775b4037.d.ts +0 -83
@@ -9,7 +9,8 @@
9
9
 
10
10
 
11
11
 
12
- var _chunk4D5XG6XBjs = require('./chunk-4D5XG6XB.js');
12
+
13
+ var _chunkTHMRUG4Djs = require('./chunk-THMRUG4D.js');
13
14
 
14
15
  // src/actions/wallet/addChain.ts
15
16
  async function addChain(client, chain) {
@@ -18,7 +19,7 @@ async function addChain(client, chain) {
18
19
  method: "wallet_addEthereumChain",
19
20
  params: [
20
21
  {
21
- chainId: _chunk4D5XG6XBjs.numberToHex.call(void 0, id),
22
+ chainId: _chunkTHMRUG4Djs.numberToHex.call(void 0, id),
22
23
  chainName: name,
23
24
  nativeCurrency,
24
25
  rpcUrls: rpcUrls.default.http,
@@ -31,7 +32,7 @@ async function addChain(client, chain) {
31
32
  // src/actions/wallet/getAccounts.ts
32
33
  async function getAccounts(client) {
33
34
  const addresses = await client.request({ method: "eth_accounts" });
34
- return addresses.map((address) => _chunk4D5XG6XBjs.checksumAddress.call(void 0, address));
35
+ return addresses.map((address) => _chunkTHMRUG4Djs.checksumAddress.call(void 0, address));
35
36
  }
36
37
 
37
38
  // src/actions/wallet/getPermissions.ts
@@ -43,7 +44,7 @@ async function getPermissions(client) {
43
44
  // src/actions/wallet/requestAccounts.ts
44
45
  async function requestAccounts(client) {
45
46
  const addresses = await client.request({ method: "eth_requestAccounts" });
46
- return addresses.map((address) => _chunk4D5XG6XBjs.getAddress.call(void 0, address));
47
+ return addresses.map((address) => _chunkTHMRUG4Djs.getAddress.call(void 0, address));
47
48
  }
48
49
 
49
50
  // src/actions/wallet/requestPermissions.ts
@@ -70,9 +71,9 @@ async function sendTransaction(client, {
70
71
  ...rest
71
72
  }) {
72
73
  if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
73
- throw new (0, _chunk4D5XG6XBjs.InvalidGasArgumentsError)();
74
+ throw new (0, _chunkTHMRUG4Djs.InvalidGasArgumentsError)();
74
75
  const formatter = _optionalChain([chain, 'optionalAccess', _ => _.formatters, 'optionalAccess', _2 => _2.transactionRequest]);
75
- const request_ = _chunk4D5XG6XBjs.format.call(void 0,
76
+ const request_ = _chunkTHMRUG4Djs.format.call(void 0,
76
77
  {
77
78
  from,
78
79
  accessList,
@@ -84,10 +85,11 @@ async function sendTransaction(client, {
84
85
  nonce,
85
86
  to,
86
87
  value,
87
- ..._chunk4D5XG6XBjs.extract.call(void 0, rest, { formatter })
88
+ // Pick out extra data that might exist on the chain's transaction request type.
89
+ ..._chunkTHMRUG4Djs.extract.call(void 0, rest, { formatter })
88
90
  },
89
91
  {
90
- formatter: formatter || _chunk4D5XG6XBjs.formatTransactionRequest
92
+ formatter: formatter || _chunkTHMRUG4Djs.formatTransactionRequest
91
93
  }
92
94
  );
93
95
  const hash = await client.request({
@@ -102,7 +104,7 @@ async function signMessage(client, { from, data: data_ }) {
102
104
  let data;
103
105
  if (typeof data_ === "string") {
104
106
  if (!data_.startsWith("0x"))
105
- throw new (0, _chunk4D5XG6XBjs.BaseError)(
107
+ throw new (0, _chunkTHMRUG4Djs.BaseError)(
106
108
  `data ("${data_}") must be a hex value. Encode it first to a hex with the \`encodeHex\` util.`,
107
109
  {
108
110
  docsPath: "/TODO"
@@ -110,7 +112,7 @@ async function signMessage(client, { from, data: data_ }) {
110
112
  );
111
113
  data = data_;
112
114
  } else {
113
- data = _chunk4D5XG6XBjs.encodeHex.call(void 0, data_);
115
+ data = _chunkTHMRUG4Djs.encodeHex.call(void 0, data_);
114
116
  }
115
117
  const signed = await client.request({
116
118
  method: "personal_sign",
@@ -125,7 +127,7 @@ async function switchChain(client, { id }) {
125
127
  method: "wallet_switchEthereumChain",
126
128
  params: [
127
129
  {
128
- chainId: _chunk4D5XG6XBjs.numberToHex.call(void 0, id)
130
+ chainId: _chunkTHMRUG4Djs.numberToHex.call(void 0, id)
129
131
  }
130
132
  ]
131
133
  });
@@ -148,7 +150,7 @@ async function writeContract(client, {
148
150
  functionName,
149
151
  ...request
150
152
  }) {
151
- const data = _chunk4D5XG6XBjs.encodeFunctionData.call(void 0, {
153
+ const data = _chunkTHMRUG4Djs.encodeFunctionData.call(void 0, {
152
154
  abi,
153
155
  args,
154
156
  functionName
@@ -161,6 +163,20 @@ async function writeContract(client, {
161
163
  return hash;
162
164
  }
163
165
 
166
+ // src/actions/wallet/deployContract.ts
167
+ function deployContract(walletClient, { abi, args, bytecode, ...request }) {
168
+ const calldata = _chunkTHMRUG4Djs.encodeDeployData.call(void 0, {
169
+ abi,
170
+ args,
171
+ bytecode
172
+ });
173
+ return sendTransaction(walletClient, {
174
+ ...request,
175
+ data: calldata
176
+ });
177
+ }
178
+
179
+
164
180
 
165
181
 
166
182
 
@@ -172,5 +188,5 @@ async function writeContract(client, {
172
188
 
173
189
 
174
190
 
175
- exports.addChain = addChain; exports.getAccounts = getAccounts; exports.getPermissions = getPermissions; exports.requestAccounts = requestAccounts; exports.requestPermissions = requestPermissions; exports.sendTransaction = sendTransaction; exports.signMessage = signMessage; exports.switchChain = switchChain; exports.watchAsset = watchAsset; exports.writeContract = writeContract;
176
- //# sourceMappingURL=chunk-ZYSXBTBB.js.map
191
+ exports.addChain = addChain; exports.deployContract = deployContract; exports.getAccounts = getAccounts; exports.getPermissions = getPermissions; exports.requestAccounts = requestAccounts; exports.requestPermissions = requestPermissions; exports.sendTransaction = sendTransaction; exports.signMessage = signMessage; exports.switchChain = switchChain; exports.watchAsset = watchAsset; exports.writeContract = writeContract;
192
+ //# sourceMappingURL=chunk-NUXMGPMK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/actions/wallet/addChain.ts","../src/actions/wallet/getAccounts.ts","../src/actions/wallet/getPermissions.ts","../src/actions/wallet/requestAccounts.ts","../src/actions/wallet/requestPermissions.ts","../src/actions/wallet/sendTransaction.ts","../src/actions/wallet/signMessage.ts","../src/actions/wallet/switchChain.ts","../src/actions/wallet/watchAsset.ts","../src/actions/wallet/writeContract.ts","../src/actions/wallet/deployContract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WalletClient } from '../../clients'\nimport type { Chain } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport async function addChain(client: WalletClient, chain: Chain) {\n const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain\n await client.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n chainName: name,\n nativeCurrency,\n rpcUrls: rpcUrls.default.http,\n blockExplorerUrls: blockExplorers\n ? Object.values(blockExplorers).map(({ url }) => url)\n : undefined,\n },\n ],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport { checksumAddress } from '../../utils/address'\n\nexport async function getAccounts(client: WalletClient) {\n const addresses = await client.request({ method: 'eth_accounts' })\n return addresses.map((address) => checksumAddress(address))\n}\n","import type { WalletClient } from '../../clients'\nimport type { WalletPermission } from '../../types/eip1193'\n\nexport type GetPermissionsResponse = WalletPermission[]\n\nexport async function getPermissions(client: WalletClient) {\n const permissions = await client.request({ method: 'wallet_getPermissions' })\n return permissions\n}\n","import type { WalletClient } from '../../clients'\nimport { getAddress } from '../../utils'\n\nexport async function requestAccounts(client: WalletClient) {\n const addresses = await client.request({ method: 'eth_requestAccounts' })\n return addresses.map((address) => getAddress(address))\n}\n","import type { WalletClient } from '../../clients'\nimport type { WalletPermission } from '../../types/eip1193'\n\nexport type RequestPermissionsArgs = {\n eth_accounts: Record<string, any>\n} & {\n [key: string]: Record<string, any>\n}\nexport type RequestPermissionsResponse = WalletPermission[]\n\nexport async function requestPermissions(\n client: WalletClient,\n permissions: RequestPermissionsArgs,\n) {\n return client.request({\n method: 'wallet_requestPermissions',\n params: [permissions],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport { InvalidGasArgumentsError } from '../../errors'\nimport type {\n Chain,\n Formatter,\n Hash,\n MergeIntersectionProperties,\n TransactionRequest,\n} from '../../types'\nimport type { Formatted, TransactionRequestFormatter } from '../../utils'\nimport { extract, format, formatTransactionRequest } from '../../utils'\n\nexport type FormattedTransactionRequest<\n TFormatter extends Formatter | undefined = Formatter,\n> = MergeIntersectionProperties<\n Formatted<TFormatter, TransactionRequest, true>,\n TransactionRequest\n>\n\nexport type SendTransactionArgs<TChain extends Chain = Chain> =\n FormattedTransactionRequest<TransactionRequestFormatter<TChain>> & {\n chain?: TChain\n }\n\nexport type SendTransactionResponse = Hash\n\nexport async function sendTransaction<TChain extends Chain>(\n client: WalletClient,\n {\n chain,\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n ...rest\n }: SendTransactionArgs<TChain>,\n): Promise<SendTransactionResponse> {\n if (\n maxFeePerGas !== undefined &&\n maxPriorityFeePerGas !== undefined &&\n maxFeePerGas < maxPriorityFeePerGas\n )\n throw new InvalidGasArgumentsError()\n\n const formatter = chain?.formatters?.transactionRequest\n const request_ = format(\n {\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { formatter }),\n } as TransactionRequest,\n {\n formatter: formatter || formatTransactionRequest,\n },\n )\n\n const hash = await client.request({\n method: 'eth_sendTransaction',\n params: [request_],\n })\n return hash\n}\n","import type { WalletClient } from '../../clients'\nimport { BaseError } from '../../errors'\nimport type { Address, ByteArray, Hex } from '../../types'\nimport { encodeHex } from '../../utils'\n\nexport type SignMessageArgs = {\n from: Address\n data: Hex | ByteArray\n}\n\nexport type SignMessageResponse = Hex\n\nexport async function signMessage(\n client: WalletClient,\n { from, data: data_ }: SignMessageArgs,\n): Promise<SignMessageResponse> {\n let data\n if (typeof data_ === 'string') {\n if (!data_.startsWith('0x'))\n throw new BaseError(\n `data (\"${data_}\") must be a hex value. Encode it first to a hex with the \\`encodeHex\\` util.`,\n {\n docsPath: '/TODO',\n },\n )\n data = data_\n } else {\n data = encodeHex(data_)\n }\n const signed = await client.request({\n method: 'personal_sign',\n params: [data, from],\n })\n return signed\n}\n","import type { WalletClient } from '../../clients'\nimport { Chain } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SwitchChainArgs = { id: Chain['id'] }\n\nexport async function switchChain(\n client: WalletClient,\n { id }: SwitchChainArgs,\n) {\n await client.request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n },\n ],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport type { WatchAssetParams } from '../../types/eip1193'\n\nexport type WatchAssetArgs = WatchAssetParams\nexport type WatchAssetResponse = boolean\n\nexport async function watchAsset(\n client: WalletClient,\n params: WatchAssetParams,\n): Promise<WatchAssetResponse> {\n const added = await client.request({\n method: 'wallet_watchAsset',\n params: [params],\n })\n return added\n}\n","import { Abi } from 'abitype'\n\nimport type { WalletClient } from '../../clients'\nimport type { Chain, ContractConfig, GetValue } from '../../types'\nimport { EncodeFunctionDataArgs, encodeFunctionData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from './sendTransaction'\n\nexport type WriteContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = Omit<SendTransactionArgs<TChain>, 'to' | 'data' | 'value'> & {\n value?: GetValue<TAbi, TFunctionName, SendTransactionArgs<TChain>['value']>\n} & ContractConfig<TAbi, TFunctionName, 'payable' | 'nonpayable'>\n\nexport type WriteContractResponse = SendTransactionResponse\n\nexport async function writeContract<\n TChain extends Chain,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n>(\n client: WalletClient,\n {\n abi,\n address,\n args,\n functionName,\n ...request\n }: WriteContractArgs<TChain, TAbi, TFunctionName>,\n): Promise<WriteContractResponse> {\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n } as unknown as EncodeFunctionDataArgs<TAbi, TFunctionName>)\n const hash = await sendTransaction(client, {\n data,\n to: address,\n ...request,\n } as unknown as SendTransactionArgs<TChain>)\n return hash\n}\n","import { Abi, Narrow } from 'abitype'\nimport { WalletClient } from '../../clients'\n\nimport { Chain, ExtractConstructorArgsFromAbi, Hex } from '../../types'\nimport { encodeDeployData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from '../wallet'\n\nexport type DeployContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n> = Omit<\n SendTransactionArgs<TChain>,\n 'accessList' | 'to' | 'data' | 'value'\n> & {\n abi: Narrow<TAbi>\n bytecode: Hex\n} & ExtractConstructorArgsFromAbi<TAbi>\n\nexport type DeployContractResponse = SendTransactionResponse\n\nexport function deployContract<TChain extends Chain, TAbi extends Abi>(\n walletClient: WalletClient,\n { abi, args, bytecode, ...request }: DeployContractArgs<TChain, TAbi>,\n): Promise<DeployContractResponse> {\n const calldata = encodeDeployData({\n abi,\n args,\n bytecode,\n } as unknown as DeployContractArgs<TChain, TAbi>)\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n } as unknown as SendTransactionArgs<TChain>)\n}\n"]}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }var __defProp = Object.defineProperty;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -9,7 +9,7 @@ var __publicField = (obj, key, value) => {
9
9
  var package_default = {
10
10
  name: "viem",
11
11
  description: "TypeScript Interface for Ethereum",
12
- version: "0.0.1-alpha.24",
12
+ version: "0.0.1-alpha.25",
13
13
  scripts: {
14
14
  anvil: "source .env && anvil --fork-url $VITE_ANVIL_FORK_URL --fork-block-number $VITE_ANVIL_BLOCK_NUMBER --block-time $VITE_ANVIL_BLOCK_TIME",
15
15
  bench: "vitest bench --no-threads",
@@ -25,7 +25,6 @@ var package_default = {
25
25
  lint: "rome check .",
26
26
  "lint:fix": "pnpm lint --apply-suggested",
27
27
  playground: "pnpm --filter playground-dev dev",
28
- "playground:benchmark": "pnpm --filter playground-benchmark dev",
29
28
  postinstall: "pnpm dev && pnpm contracts:build",
30
29
  preinstall: "npx only-allow pnpm",
31
30
  prepublishOnly: "pnpm ts-node scripts/generate-package-json.ts",
@@ -37,13 +36,14 @@ var package_default = {
37
36
  typecheck: "tsc --noEmit"
38
37
  },
39
38
  files: [
40
- "/actions",
41
39
  "/chains",
40
+ "/contract",
42
41
  "/dist",
43
- "/clients",
42
+ "/ens",
44
43
  "/src",
45
44
  "/types",
46
45
  "/utils",
46
+ "/wallet",
47
47
  "/window"
48
48
  ],
49
49
  exports: {
@@ -57,10 +57,10 @@ var package_default = {
57
57
  module: "./dist/chains.mjs",
58
58
  default: "./dist/chains.js"
59
59
  },
60
- "./clients": {
61
- types: "./dist/clients/index.d.ts",
62
- module: "./dist/clients/index.mjs",
63
- default: "./dist/clients/index.js"
60
+ "./contract": {
61
+ types: "./dist/contract.d.ts",
62
+ module: "./dist/contract.mjs",
63
+ default: "./dist/contract.js"
64
64
  },
65
65
  "./ens": {
66
66
  types: "./dist/ens.d.ts",
@@ -100,9 +100,12 @@ var package_default = {
100
100
  sideEffects: false,
101
101
  dependencies: {
102
102
  "@noble/hashes": "^1.1.2",
103
- "@wagmi/chains": "~0.2.6",
103
+ "@wagmi/chains": "~0.2.8",
104
104
  abitype: "~0.3.0",
105
- "idna-uts46-hx": "^4.1.2"
105
+ "idna-uts46-hx": "^4.1.2",
106
+ "isomorphic-unfetch": "^4.0.2",
107
+ "isomorphic-ws": "^5.0.0",
108
+ ws: "^8.12.0"
106
109
  },
107
110
  devDependencies: {
108
111
  "@actions/core": "^1.10.0",
@@ -110,28 +113,27 @@ var package_default = {
110
113
  "@adraffy/ens-normalize": "^1.8.9",
111
114
  "@changesets/changelog-github": "^0.4.5",
112
115
  "@changesets/cli": "^2.23.2",
113
- "@testing-library/jest-dom": "^5.16.5",
114
116
  "@types/dedent": "^0.7.0",
115
117
  "@types/fs-extra": "^9.0.13",
116
118
  "@types/node": "^17.0.45",
119
+ "@types/ws": "^8.5.4",
117
120
  "@vitest/coverage-c8": "^0.24.3",
118
121
  "@vitest/ui": "^0.19.1",
119
- "@wagmi/cli": "^0.1.5",
122
+ "@wagmi/cli": "^0.1.6",
120
123
  bundlewatch: "^0.3.3",
121
124
  dedent: "^0.7.0",
122
- esbuild: "^0.16.12",
125
+ esbuild: "^0.16.17",
123
126
  "esbuild-register": "^3.4.2",
124
127
  ethers: "^5.7.2",
125
128
  "ethers@6": "npm:ethers@^6.0.2",
126
129
  execa: "^6.1.0",
127
130
  "fs-extra": "^10.1.0",
128
- jsdom: "^20.0.0",
129
131
  rome: "^11.0.0",
130
132
  "simple-git-hooks": "^2.8.1",
131
- tsup: "^6.5.0",
133
+ tsup: "^6.6.0",
132
134
  typescript: "^4.9.4",
133
- vite: "^3.0.4",
134
- vitest: "^0.25.2",
135
+ vite: "^3.2.5",
136
+ vitest: "^0.25.8",
135
137
  web3: "^1.8.1"
136
138
  },
137
139
  license: "MIT",
@@ -298,7 +300,7 @@ var AbiErrorSignatureNotFoundError = class extends BaseError {
298
300
  [
299
301
  `Encoded error signature "${signature}" not found on ABI.`,
300
302
  "Make sure you are using the correct ABI and that the error exists on it.",
301
- `You can look up the signature "${signature}" here: https://sig.eth.samczsun.com/.`
303
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
302
304
  ].join("\n"),
303
305
  {
304
306
  docsPath: docsPath5
@@ -307,6 +309,21 @@ var AbiErrorSignatureNotFoundError = class extends BaseError {
307
309
  __publicField(this, "name", "AbiErrorSignatureNotFoundError");
308
310
  }
309
311
  };
312
+ var AbiEventSignatureNotFoundError = class extends BaseError {
313
+ constructor(signature, { docsPath: docsPath5 }) {
314
+ super(
315
+ [
316
+ `Encoded event signature "${signature}" not found on ABI.`,
317
+ "Make sure you are using the correct ABI and that the event exists on it.",
318
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
319
+ ].join("\n"),
320
+ {
321
+ docsPath: docsPath5
322
+ }
323
+ );
324
+ __publicField(this, "name", "AbiEventSignatureNotFoundError");
325
+ }
326
+ };
310
327
  var AbiEventNotFoundError = class extends BaseError {
311
328
  constructor(eventName, { docsPath: docsPath5 }) {
312
329
  super(
@@ -356,7 +373,7 @@ var AbiFunctionSignatureNotFoundError = class extends BaseError {
356
373
  [
357
374
  `Encoded function signature "${signature}" not found on ABI.`,
358
375
  "Make sure you are using the correct ABI and that the function exists on it.",
359
- `You can look up the signature "${signature}" here: https://sig.eth.samczsun.com/.`
376
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
360
377
  ].join("\n"),
361
378
  {
362
379
  docsPath: docsPath5
@@ -431,6 +448,30 @@ var BlockNotFoundError = class extends BaseError {
431
448
  }
432
449
  };
433
450
 
451
+ // src/errors/chain.ts
452
+ var ChainDoesNotSupportContract = class extends BaseError {
453
+ constructor({
454
+ blockNumber,
455
+ chain,
456
+ contract
457
+ }) {
458
+ super(
459
+ `Chain "${chain.name}" does not support contract "${contract.name}".`,
460
+ {
461
+ metaMessages: [
462
+ "This could be due to any of the following:",
463
+ ...blockNumber && contract.blockCreated && contract.blockCreated > blockNumber ? [
464
+ `- The contract "${contract.name}" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`
465
+ ] : [
466
+ `- The chain does not have the contract "${contract.name}" configured.`
467
+ ]
468
+ ]
469
+ }
470
+ );
471
+ __publicField(this, "name", "ChainDoesNotSupportContract");
472
+ }
473
+ };
474
+
434
475
  // src/constants/abis.ts
435
476
  var multicall3Abi = [
436
477
  {
@@ -534,7 +575,8 @@ var ContractFunctionExecutionError = class extends BaseError {
534
575
  docsPath: docsPath5,
535
576
  metaMessages: [
536
577
  ...cause.metaMessages ? [...cause.metaMessages, " "] : [],
537
- contractAddress && `Contract: ${process.env.TEST ? "0x0000000000000000000000000000000000000000" : contractAddress}`,
578
+ contractAddress && `Contract: ${/* c8 ignore start */
579
+ process.env.TEST ? "0x0000000000000000000000000000000000000000" : contractAddress}`,
538
580
  functionWithParams && `Function: ${functionWithParams}`,
539
581
  formattedArgs && formattedArgs !== "()" && `Arguments: ${[...Array(_nullishCoalesce(_optionalChain([functionName, 'optionalAccess', _4 => _4.length]), () => ( 0))).keys()].map(() => " ").join("")}${formattedArgs}`,
540
582
  sender && `Sender: ${sender}`
@@ -1710,7 +1752,10 @@ function encodeTuple(value, { param }) {
1710
1752
  }
1711
1753
  function getArrayComponents(type) {
1712
1754
  const matches = type.match(/^(.*)\[(\d+)?\]$/);
1713
- return matches ? [matches[2] ? Number(matches[2]) : null, matches[1]] : void 0;
1755
+ return matches ? (
1756
+ // Return `null` if the array is dynamic.
1757
+ [matches[2] ? Number(matches[2]) : null, matches[1]]
1758
+ ) : void 0;
1714
1759
  }
1715
1760
 
1716
1761
  // src/utils/abi/decodeAbi.ts
@@ -1952,6 +1997,61 @@ function decodeErrorResult({
1952
1997
  };
1953
1998
  }
1954
1999
 
2000
+ // src/utils/abi/decodeEventLog.ts
2001
+ function decodeEventLog({
2002
+ abi,
2003
+ data,
2004
+ topics
2005
+ }) {
2006
+ const [signature, ...argTopics] = topics;
2007
+ const abiItem = abi.find(
2008
+ (x) => signature === getEventSignature(formatAbiItem(x))
2009
+ );
2010
+ if (!(abiItem && "name" in abiItem))
2011
+ throw new AbiEventSignatureNotFoundError(signature, {
2012
+ docsPath: "/docs/contract/decodeEventLog"
2013
+ });
2014
+ const { name, inputs } = abiItem;
2015
+ const isUnnamed = _optionalChain([inputs, 'optionalAccess', _22 => _22.some, 'call', _23 => _23((x) => !("name" in x && x.name))]);
2016
+ let args = isUnnamed ? [] : {};
2017
+ for (let i = 0; i < inputs.length; i++) {
2018
+ const param = inputs[i];
2019
+ const topic = argTopics[i];
2020
+ if (topic === null)
2021
+ args[param.name || i] = null;
2022
+ if (!topic)
2023
+ continue;
2024
+ if (Array.isArray(topic)) {
2025
+ args[param.name || i] = topic.map((t) => decodeTopic({ param, value: t }));
2026
+ } else {
2027
+ args[param.name || i] = decodeTopic({ param, value: topic });
2028
+ }
2029
+ }
2030
+ if (data) {
2031
+ const params = inputs.filter((x) => !("indexed" in x && x.indexed));
2032
+ const decodedData = decodeAbi({ params, data });
2033
+ if (decodedData) {
2034
+ if (isUnnamed)
2035
+ args = [...args, ...decodedData];
2036
+ else {
2037
+ for (let i = 0; i < params.length; i++) {
2038
+ args[params[i].name] = decodedData[i];
2039
+ }
2040
+ }
2041
+ }
2042
+ }
2043
+ return {
2044
+ eventName: name,
2045
+ args: Object.values(args).length > 0 ? args : void 0
2046
+ };
2047
+ }
2048
+ function decodeTopic({ param, value }) {
2049
+ if (param.type === "string" || param.type === "bytes" || param.type === "tuple" || param.type.match(/^(.*)\[(\d+)?\]$/))
2050
+ return value;
2051
+ const decodedArg = decodeAbi({ params: [param], data: value }) || [];
2052
+ return decodedArg[0];
2053
+ }
2054
+
1955
2055
  // src/utils/abi/decodeFunctionData.ts
1956
2056
  function decodeFunctionData({ abi, data }) {
1957
2057
  const signature = slice(data, 0, 4);
@@ -2030,6 +2130,7 @@ function isArgOfType(arg, abiParameter) {
2030
2130
  return Array.isArray(arg) && arg.every(
2031
2131
  (x) => isArgOfType(x, {
2032
2132
  ...abiParameter,
2133
+ // Pop off `[]` or `[M]` from end of type
2033
2134
  type: abiParameterType.replace(/(\[[0-9]{0,}\])$/, "")
2034
2135
  })
2035
2136
  );
@@ -2121,8 +2222,8 @@ function encodeEventTopics({ abi, eventName, args }) {
2121
2222
  const signature = getEventSignature(definition);
2122
2223
  let topics = [];
2123
2224
  if (args && "inputs" in abiItem) {
2124
- const args_ = Array.isArray(args) ? args : _nullishCoalesce(_optionalChain([abiItem, 'access', _22 => _22.inputs, 'optionalAccess', _23 => _23.map, 'call', _24 => _24((x) => args[x.name])]), () => ( []));
2125
- topics = _nullishCoalesce(_optionalChain([abiItem, 'access', _25 => _25.inputs, 'optionalAccess', _26 => _26.filter, 'call', _27 => _27((param) => "indexed" in param && param.indexed), 'access', _28 => _28.map, 'call', _29 => _29(
2225
+ const args_ = Array.isArray(args) ? args : _nullishCoalesce(_optionalChain([abiItem, 'access', _24 => _24.inputs, 'optionalAccess', _25 => _25.map, 'call', _26 => _26((x) => args[x.name])]), () => ( []));
2226
+ topics = _nullishCoalesce(_optionalChain([abiItem, 'access', _27 => _27.inputs, 'optionalAccess', _28 => _28.filter, 'call', _29 => _29((param) => "indexed" in param && param.indexed), 'access', _30 => _30.map, 'call', _31 => _31(
2126
2227
  (param, i) => Array.isArray(args_[i]) ? args_[i].map(
2127
2228
  (_, j) => encodeArg({ param, value: args_[i][j] })
2128
2229
  ) : args_[i] ? encodeArg({ param, value: args_[i] }) : null
@@ -2242,33 +2343,6 @@ function defineChain(chain) {
2242
2343
  return chain;
2243
2344
  }
2244
2345
 
2245
- // src/utils/ens/normalize.ts
2246
- var _idnauts46hx = require('idna-uts46-hx');
2247
- function normalize(name) {
2248
- return _idnauts46hx.toUnicode.call(void 0, name, { useStd3ASCII: true });
2249
- }
2250
-
2251
- // src/utils/ens/labelhash.ts
2252
- function labelhash(label) {
2253
- let result = new Uint8Array(32).fill(0);
2254
- if (!label)
2255
- return bytesToHex(result);
2256
- return keccak256(stringToBytes(normalize(label)));
2257
- }
2258
-
2259
- // src/utils/ens/namehash.ts
2260
- function namehash(name) {
2261
- let result = new Uint8Array(32).fill(0);
2262
- if (!name)
2263
- return bytesToHex(result);
2264
- const labels = normalize(name).split(".");
2265
- for (let i = labels.length - 1; i >= 0; i -= 1) {
2266
- const hashed = keccak256(stringToBytes(labels[i]), "bytes");
2267
- result = keccak256(concat([result, hashed]), "bytes");
2268
- }
2269
- return bytesToHex(result);
2270
- }
2271
-
2272
2346
  // src/utils/formatters/format.ts
2273
2347
  function format3(data, { formatter }) {
2274
2348
  return formatter(data);
@@ -2288,7 +2362,7 @@ function defineFormatter({
2288
2362
  }
2289
2363
  return {
2290
2364
  ...formatted,
2291
- ..._optionalChain([formatOverride, 'optionalCall', _30 => _30(data)])
2365
+ ..._optionalChain([formatOverride, 'optionalCall', _32 => _32(data)])
2292
2366
  };
2293
2367
  };
2294
2368
  }
@@ -2328,7 +2402,7 @@ var defineTransaction = defineFormatter({ format: formatTransaction });
2328
2402
 
2329
2403
  // src/utils/formatters/block.ts
2330
2404
  function formatBlock(block) {
2331
- const transactions = _optionalChain([block, 'access', _31 => _31.transactions, 'optionalAccess', _32 => _32.map, 'call', _33 => _33((transaction) => {
2405
+ const transactions = _optionalChain([block, 'access', _33 => _33.transactions, 'optionalAccess', _34 => _34.map, 'call', _35 => _35((transaction) => {
2332
2406
  if (typeof transaction === "string")
2333
2407
  return transaction;
2334
2408
  return formatTransaction(transaction);
@@ -2354,7 +2428,7 @@ function extract(value, { formatter }) {
2354
2428
  return {};
2355
2429
  const keys = Object.keys(formatter({}));
2356
2430
  return keys.reduce((data, key) => {
2357
- if (_optionalChain([value, 'optionalAccess', _34 => _34.hasOwnProperty, 'call', _35 => _35(key)])) {
2431
+ if (_optionalChain([value, 'optionalAccess', _36 => _36.hasOwnProperty, 'call', _37 => _37(key)])) {
2358
2432
  ;
2359
2433
  data[key] = value[key];
2360
2434
  }
@@ -2368,7 +2442,7 @@ function formatFeeHistory(feeHistory) {
2368
2442
  baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),
2369
2443
  gasUsedRatio: feeHistory.gasUsedRatio,
2370
2444
  oldestBlock: BigInt(feeHistory.oldestBlock),
2371
- reward: _optionalChain([feeHistory, 'access', _36 => _36.reward, 'optionalAccess', _37 => _37.map, 'call', _38 => _38(
2445
+ reward: _optionalChain([feeHistory, 'access', _38 => _38.reward, 'optionalAccess', _39 => _39.map, 'call', _40 => _40(
2372
2446
  (reward) => reward.map((value) => BigInt(value))
2373
2447
  )])
2374
2448
  };
@@ -2422,6 +2496,10 @@ var defineTransactionRequest = defineFormatter({
2422
2496
  format: formatTransactionRequest
2423
2497
  });
2424
2498
 
2499
+ // src/utils/rpc.ts
2500
+ var _isomorphicunfetch = require('isomorphic-unfetch'); var _isomorphicunfetch2 = _interopRequireDefault(_isomorphicunfetch);
2501
+ var _isomorphicws = require('isomorphic-ws'); var _isomorphicws2 = _interopRequireDefault(_isomorphicws);
2502
+
2425
2503
  // src/utils/promise/withCache.ts
2426
2504
  var promiseCache = /* @__PURE__ */ new Map();
2427
2505
  var responseCache = /* @__PURE__ */ new Map();
@@ -2449,7 +2527,7 @@ async function withCache(fn, { cacheKey, maxAge = Infinity }) {
2449
2527
  const cache = getCache(cacheKey);
2450
2528
  const response = cache.response.get();
2451
2529
  if (response && maxAge > 0) {
2452
- const age = new Date().getTime() - response.created.getTime();
2530
+ const age = (/* @__PURE__ */ new Date()).getTime() - response.created.getTime();
2453
2531
  if (age < maxAge)
2454
2532
  return response.data;
2455
2533
  }
@@ -2460,7 +2538,7 @@ async function withCache(fn, { cacheKey, maxAge = Infinity }) {
2460
2538
  }
2461
2539
  const data = await promise;
2462
2540
  cache.promise.clear();
2463
- cache.response.set({ created: new Date(), data });
2541
+ cache.response.set({ created: /* @__PURE__ */ new Date(), data });
2464
2542
  return data;
2465
2543
  }
2466
2544
 
@@ -2520,7 +2598,7 @@ function withTimeout(fn, {
2520
2598
  }
2521
2599
  }, timeout);
2522
2600
  }
2523
- resolve(await fn({ signal: _optionalChain([controller, 'optionalAccess', _39 => _39.signal]) }));
2601
+ resolve(await fn({ signal: _optionalChain([controller, 'optionalAccess', _41 => _41.signal]) }));
2524
2602
  } catch (err) {
2525
2603
  if (err.name === "AbortError")
2526
2604
  reject(errorInstance);
@@ -2551,7 +2629,7 @@ async function http(url, {
2551
2629
  const response = await withRetry(
2552
2630
  () => withTimeout(
2553
2631
  async ({ signal }) => {
2554
- const response2 = await fetch(url, {
2632
+ const response2 = await _isomorphicunfetch2.default.call(void 0, url, {
2555
2633
  headers: {
2556
2634
  "Content-Type": "application/json"
2557
2635
  },
@@ -2569,8 +2647,8 @@ async function http(url, {
2569
2647
  ),
2570
2648
  {
2571
2649
  delay: ({ count, data: data2 }) => {
2572
- const retryAfter = _optionalChain([data2, 'optionalAccess', _40 => _40.headers, 'access', _41 => _41.get, 'call', _42 => _42("Retry-After")]);
2573
- if (_optionalChain([retryAfter, 'optionalAccess', _43 => _43.match, 'call', _44 => _44(/\d/)]))
2650
+ const retryAfter = _optionalChain([data2, 'optionalAccess', _42 => _42.headers, 'access', _43 => _43.get, 'call', _44 => _44("Retry-After")]);
2651
+ if (_optionalChain([retryAfter, 'optionalAccess', _45 => _45.match, 'call', _46 => _46(/\d/)]))
2574
2652
  return parseInt(retryAfter) * 1e3;
2575
2653
  return ~~((Math.random() + 0.5) * (1 << count)) * retryDelay;
2576
2654
  },
@@ -2585,7 +2663,7 @@ async function http(url, {
2585
2663
  }
2586
2664
  );
2587
2665
  let data;
2588
- if (_optionalChain([response, 'access', _45 => _45.headers, 'access', _46 => _46.get, 'call', _47 => _47("Content-Type"), 'optionalAccess', _48 => _48.startsWith, 'call', _49 => _49("application/json")])) {
2666
+ if (_optionalChain([response, 'access', _47 => _47.headers, 'access', _48 => _48.get, 'call', _49 => _49("Content-Type"), 'optionalAccess', _50 => _50.startsWith, 'call', _51 => _51("application/json")])) {
2589
2667
  data = await response.json();
2590
2668
  } else {
2591
2669
  data = await response.text();
@@ -2610,7 +2688,7 @@ async function getSocket(url_) {
2610
2688
  let socket = sockets.get(urlKey);
2611
2689
  if (socket)
2612
2690
  return socket;
2613
- const webSocket2 = new WebSocket(url);
2691
+ const webSocket2 = new (0, _isomorphicws2.default)(url);
2614
2692
  const requests = /* @__PURE__ */ new Map();
2615
2693
  const subscriptions = /* @__PURE__ */ new Map();
2616
2694
  const onMessage = ({ data }) => {
@@ -2631,7 +2709,7 @@ async function getSocket(url_) {
2631
2709
  };
2632
2710
  webSocket2.addEventListener("close", onClose);
2633
2711
  webSocket2.addEventListener("message", onMessage);
2634
- if (webSocket2.readyState === WebSocket.CONNECTING) {
2712
+ if (webSocket2.readyState === _isomorphicws2.default.CONNECTING) {
2635
2713
  await new Promise((resolve, reject) => {
2636
2714
  if (!webSocket2)
2637
2715
  return;
@@ -2663,15 +2741,15 @@ function webSocket(socket, {
2663
2741
  if (typeof message.id === "number" && id_ !== message.id)
2664
2742
  return;
2665
2743
  if (message.error) {
2666
- _optionalChain([onError, 'optionalCall', _50 => _50(new RpcError({ body, error: message.error, url: socket.url }))]);
2744
+ _optionalChain([onError, 'optionalCall', _52 => _52(new RpcError({ body, error: message.error, url: socket.url }))]);
2667
2745
  } else {
2668
- _optionalChain([onData, 'optionalCall', _51 => _51(message)]);
2746
+ _optionalChain([onData, 'optionalCall', _53 => _53(message)]);
2669
2747
  }
2670
2748
  if (body.method === "eth_subscribe" && typeof message.result === "string") {
2671
2749
  socket.subscriptions.set(message.result, callback);
2672
2750
  }
2673
2751
  if (body.method === "eth_unsubscribe") {
2674
- socket.subscriptions.delete(_optionalChain([body, 'access', _52 => _52.params, 'optionalAccess', _53 => _53[0]]));
2752
+ socket.subscriptions.delete(_optionalChain([body, 'access', _54 => _54.params, 'optionalAccess', _55 => _55[0]]));
2675
2753
  }
2676
2754
  };
2677
2755
  socket.requests.set(id_, callback);
@@ -2925,5 +3003,6 @@ function parseGwei(ether, unit = "wei") {
2925
3003
 
2926
3004
 
2927
3005
 
2928
- exports.BaseError = BaseError; exports.AbiConstructorNotFoundError = AbiConstructorNotFoundError; exports.AbiConstructorParamsNotFoundError = AbiConstructorParamsNotFoundError; exports.AbiDecodingDataSizeInvalidError = AbiDecodingDataSizeInvalidError; exports.AbiDecodingZeroDataError = AbiDecodingZeroDataError; exports.AbiEncodingArrayLengthMismatchError = AbiEncodingArrayLengthMismatchError; exports.AbiEncodingLengthMismatchError = AbiEncodingLengthMismatchError; exports.AbiErrorInputsNotFoundError = AbiErrorInputsNotFoundError; exports.AbiErrorNotFoundError = AbiErrorNotFoundError; exports.AbiErrorSignatureNotFoundError = AbiErrorSignatureNotFoundError; exports.AbiEventNotFoundError = AbiEventNotFoundError; exports.AbiFunctionNotFoundError = AbiFunctionNotFoundError; exports.AbiFunctionOutputsNotFoundError = AbiFunctionOutputsNotFoundError; exports.AbiFunctionSignatureNotFoundError = AbiFunctionSignatureNotFoundError; exports.InvalidAbiEncodingTypeError = InvalidAbiEncodingTypeError; exports.InvalidAbiDecodingTypeError = InvalidAbiDecodingTypeError; exports.InvalidArrayError = InvalidArrayError; exports.InvalidDefinitionTypeError = InvalidDefinitionTypeError; exports.InvalidAddressError = InvalidAddressError; exports.BlockNotFoundError = BlockNotFoundError; exports.multicall3Abi = multicall3Abi; exports.isBytes = isBytes; exports.isHex = isHex; exports.pad = pad; exports.padHex = padHex; exports.padBytes = padBytes; exports.trim = trim; exports.size = size; exports.slice = slice; exports.sliceBytes = sliceBytes; exports.sliceHex = sliceHex; exports.boolToHex = boolToHex; exports.bytesToHex = bytesToHex; exports.encodeHex = encodeHex; exports.numberToHex = numberToHex; exports.stringToHex = stringToHex; exports.boolToBytes = boolToBytes; exports.encodeBytes = encodeBytes; exports.hexToBytes = hexToBytes; exports.numberToBytes = numberToBytes; exports.stringToBytes = stringToBytes; exports.encodeRlp = encodeRlp; exports.decodeHex = decodeHex; exports.hexToBigInt = hexToBigInt; exports.hexToBool = hexToBool; exports.hexToNumber = hexToNumber; exports.hexToString = hexToString; exports.decodeBytes = decodeBytes; exports.bytesToBigint = bytesToBigint; exports.bytesToBool = bytesToBool; exports.bytesToNumber = bytesToNumber; exports.bytesToString = bytesToString; exports.decodeRlp = decodeRlp; exports.extractFunctionParts = extractFunctionParts; exports.extractFunctionName = extractFunctionName; exports.extractFunctionParams = extractFunctionParams; exports.extractFunctionType = extractFunctionType; exports.getContractError = getContractError; exports.keccak256 = keccak256; exports.getEventSignature = getEventSignature; exports.getFunctionSignature = getFunctionSignature; exports.checksumAddress = checksumAddress; exports.getAddress = getAddress; exports.getContractAddress = getContractAddress; exports.getCreateAddress = getCreateAddress; exports.getCreate2Address = getCreate2Address; exports.isAddress = isAddress; exports.isAddressEqual = isAddressEqual; exports.encodeAbi = encodeAbi; exports.decodeAbi = decodeAbi; exports.formatAbiItem = formatAbiItem; exports.decodeErrorResult = decodeErrorResult; exports.decodeFunctionData = decodeFunctionData; exports.getAbiItem = getAbiItem; exports.decodeFunctionResult = decodeFunctionResult; exports.encodeDeployData = encodeDeployData; exports.encodeErrorResult = encodeErrorResult; exports.encodeEventTopics = encodeEventTopics; exports.encodeFunctionData = encodeFunctionData; exports.encodeFunctionResult = encodeFunctionResult; exports.formatAbiItemWithArgs = formatAbiItemWithArgs; exports.buildRequest = buildRequest; exports.defineChain = defineChain; exports.normalize = normalize; exports.labelhash = labelhash; exports.namehash = namehash; exports.format = format3; exports.defineFormatter = defineFormatter; exports.transactionType = transactionType; exports.formatTransaction = formatTransaction; exports.defineTransaction = defineTransaction; exports.formatBlock = formatBlock; exports.defineBlock = defineBlock; exports.extract = extract; exports.formatFeeHistory = formatFeeHistory; exports.formatLog = formatLog; exports.formatTransactionReceipt = formatTransactionReceipt; exports.defineTransactionReceipt = defineTransactionReceipt; exports.formatTransactionRequest = formatTransactionRequest; exports.defineTransactionRequest = defineTransactionRequest; exports.getCache = getCache; exports.withCache = withCache; exports.wait = wait; exports.stringify = stringify; exports.getSocket = getSocket; exports.rpc = rpc; exports.etherUnits = etherUnits; exports.gweiUnits = gweiUnits; exports.weiUnits = weiUnits; exports.formatUnit = formatUnit; exports.formatEther = formatEther; exports.formatGwei = formatGwei; exports.parseUnit = parseUnit; exports.parseEther = parseEther; exports.parseGwei = parseGwei; exports.ContractFunctionExecutionError = ContractFunctionExecutionError; exports.ContractFunctionRevertedError = ContractFunctionRevertedError; exports.ContractFunctionZeroDataError = ContractFunctionZeroDataError; exports.RawContractError = RawContractError; exports.SizeExceedsPaddingSizeError = SizeExceedsPaddingSizeError; exports.DataLengthTooLongError = DataLengthTooLongError; exports.DataLengthTooShortError = DataLengthTooShortError; exports.InvalidBytesBooleanError = InvalidBytesBooleanError; exports.InvalidHexBooleanError = InvalidHexBooleanError; exports.InvalidHexValueError = InvalidHexValueError; exports.OffsetOutOfBoundsError = OffsetOutOfBoundsError; exports.FilterTypeNotSupportedError = FilterTypeNotSupportedError; exports.RequestError = RequestError; exports.RpcRequestError = RpcRequestError; exports.ParseRpcError = ParseRpcError; exports.InvalidRequestRpcError = InvalidRequestRpcError; exports.MethodNotFoundRpcError = MethodNotFoundRpcError; exports.InvalidParamsRpcError = InvalidParamsRpcError; exports.InternalRpcError = InternalRpcError; exports.InvalidInputRpcError = InvalidInputRpcError; exports.ResourceNotFoundRpcError = ResourceNotFoundRpcError; exports.ResourceUnavailableRpcError = ResourceUnavailableRpcError; exports.TransactionRejectedRpcError = TransactionRejectedRpcError; exports.MethodNotSupportedRpcError = MethodNotSupportedRpcError; exports.LimitExceededRpcError = LimitExceededRpcError; exports.JsonRpcVersionUnsupportedError = JsonRpcVersionUnsupportedError; exports.UnknownRpcError = UnknownRpcError; exports.HttpRequestError = HttpRequestError; exports.WebSocketRequestError = WebSocketRequestError; exports.RpcError = RpcError; exports.TimeoutError = TimeoutError; exports.InvalidGasArgumentsError = InvalidGasArgumentsError; exports.TransactionNotFoundError = TransactionNotFoundError; exports.TransactionReceiptNotFoundError = TransactionReceiptNotFoundError; exports.WaitForTransactionReceiptTimeoutError = WaitForTransactionReceiptTimeoutError; exports.UrlRequiredError = UrlRequiredError;
2929
- //# sourceMappingURL=chunk-4D5XG6XB.js.map
3006
+
3007
+ exports.BaseError = BaseError; exports.AbiConstructorNotFoundError = AbiConstructorNotFoundError; exports.AbiConstructorParamsNotFoundError = AbiConstructorParamsNotFoundError; exports.AbiDecodingDataSizeInvalidError = AbiDecodingDataSizeInvalidError; exports.AbiDecodingZeroDataError = AbiDecodingZeroDataError; exports.AbiEncodingArrayLengthMismatchError = AbiEncodingArrayLengthMismatchError; exports.AbiEncodingLengthMismatchError = AbiEncodingLengthMismatchError; exports.AbiErrorInputsNotFoundError = AbiErrorInputsNotFoundError; exports.AbiErrorNotFoundError = AbiErrorNotFoundError; exports.AbiErrorSignatureNotFoundError = AbiErrorSignatureNotFoundError; exports.AbiEventNotFoundError = AbiEventNotFoundError; exports.AbiFunctionNotFoundError = AbiFunctionNotFoundError; exports.AbiFunctionOutputsNotFoundError = AbiFunctionOutputsNotFoundError; exports.AbiFunctionSignatureNotFoundError = AbiFunctionSignatureNotFoundError; exports.InvalidAbiEncodingTypeError = InvalidAbiEncodingTypeError; exports.InvalidAbiDecodingTypeError = InvalidAbiDecodingTypeError; exports.InvalidArrayError = InvalidArrayError; exports.InvalidDefinitionTypeError = InvalidDefinitionTypeError; exports.InvalidAddressError = InvalidAddressError; exports.BlockNotFoundError = BlockNotFoundError; exports.ChainDoesNotSupportContract = ChainDoesNotSupportContract; exports.multicall3Abi = multicall3Abi; exports.panicReasons = panicReasons; exports.concat = concat; exports.isBytes = isBytes; exports.isHex = isHex; exports.pad = pad; exports.padHex = padHex; exports.padBytes = padBytes; exports.trim = trim; exports.size = size; exports.slice = slice; exports.sliceBytes = sliceBytes; exports.sliceHex = sliceHex; exports.boolToHex = boolToHex; exports.bytesToHex = bytesToHex; exports.encodeHex = encodeHex; exports.numberToHex = numberToHex; exports.stringToHex = stringToHex; exports.boolToBytes = boolToBytes; exports.encodeBytes = encodeBytes; exports.hexToBytes = hexToBytes; exports.numberToBytes = numberToBytes; exports.stringToBytes = stringToBytes; exports.encodeRlp = encodeRlp; exports.decodeHex = decodeHex; exports.hexToBigInt = hexToBigInt; exports.hexToBool = hexToBool; exports.hexToNumber = hexToNumber; exports.hexToString = hexToString; exports.decodeBytes = decodeBytes; exports.bytesToBigint = bytesToBigint; exports.bytesToBool = bytesToBool; exports.bytesToNumber = bytesToNumber; exports.bytesToString = bytesToString; exports.decodeRlp = decodeRlp; exports.extractFunctionParts = extractFunctionParts; exports.extractFunctionName = extractFunctionName; exports.extractFunctionParams = extractFunctionParams; exports.extractFunctionType = extractFunctionType; exports.getContractError = getContractError; exports.keccak256 = keccak256; exports.getEventSignature = getEventSignature; exports.getFunctionSignature = getFunctionSignature; exports.checksumAddress = checksumAddress; exports.getAddress = getAddress; exports.getContractAddress = getContractAddress; exports.getCreateAddress = getCreateAddress; exports.getCreate2Address = getCreate2Address; exports.isAddress = isAddress; exports.isAddressEqual = isAddressEqual; exports.encodeAbi = encodeAbi; exports.decodeAbi = decodeAbi; exports.formatAbiItem = formatAbiItem; exports.decodeErrorResult = decodeErrorResult; exports.decodeEventLog = decodeEventLog; exports.decodeFunctionData = decodeFunctionData; exports.getAbiItem = getAbiItem; exports.decodeFunctionResult = decodeFunctionResult; exports.encodeDeployData = encodeDeployData; exports.encodeErrorResult = encodeErrorResult; exports.encodeEventTopics = encodeEventTopics; exports.encodeFunctionData = encodeFunctionData; exports.encodeFunctionResult = encodeFunctionResult; exports.formatAbiItemWithArgs = formatAbiItemWithArgs; exports.buildRequest = buildRequest; exports.defineChain = defineChain; exports.format = format3; exports.defineFormatter = defineFormatter; exports.transactionType = transactionType; exports.formatTransaction = formatTransaction; exports.defineTransaction = defineTransaction; exports.formatBlock = formatBlock; exports.defineBlock = defineBlock; exports.extract = extract; exports.formatFeeHistory = formatFeeHistory; exports.formatLog = formatLog; exports.formatTransactionReceipt = formatTransactionReceipt; exports.defineTransactionReceipt = defineTransactionReceipt; exports.formatTransactionRequest = formatTransactionRequest; exports.defineTransactionRequest = defineTransactionRequest; exports.getCache = getCache; exports.withCache = withCache; exports.wait = wait; exports.stringify = stringify; exports.getSocket = getSocket; exports.rpc = rpc; exports.etherUnits = etherUnits; exports.gweiUnits = gweiUnits; exports.weiUnits = weiUnits; exports.formatUnit = formatUnit; exports.formatEther = formatEther; exports.formatGwei = formatGwei; exports.parseUnit = parseUnit; exports.parseEther = parseEther; exports.parseGwei = parseGwei; exports.ContractFunctionExecutionError = ContractFunctionExecutionError; exports.ContractFunctionRevertedError = ContractFunctionRevertedError; exports.ContractFunctionZeroDataError = ContractFunctionZeroDataError; exports.RawContractError = RawContractError; exports.SizeExceedsPaddingSizeError = SizeExceedsPaddingSizeError; exports.DataLengthTooLongError = DataLengthTooLongError; exports.DataLengthTooShortError = DataLengthTooShortError; exports.InvalidBytesBooleanError = InvalidBytesBooleanError; exports.InvalidHexBooleanError = InvalidHexBooleanError; exports.InvalidHexValueError = InvalidHexValueError; exports.OffsetOutOfBoundsError = OffsetOutOfBoundsError; exports.FilterTypeNotSupportedError = FilterTypeNotSupportedError; exports.RequestError = RequestError; exports.RpcRequestError = RpcRequestError; exports.ParseRpcError = ParseRpcError; exports.InvalidRequestRpcError = InvalidRequestRpcError; exports.MethodNotFoundRpcError = MethodNotFoundRpcError; exports.InvalidParamsRpcError = InvalidParamsRpcError; exports.InternalRpcError = InternalRpcError; exports.InvalidInputRpcError = InvalidInputRpcError; exports.ResourceNotFoundRpcError = ResourceNotFoundRpcError; exports.ResourceUnavailableRpcError = ResourceUnavailableRpcError; exports.TransactionRejectedRpcError = TransactionRejectedRpcError; exports.MethodNotSupportedRpcError = MethodNotSupportedRpcError; exports.LimitExceededRpcError = LimitExceededRpcError; exports.JsonRpcVersionUnsupportedError = JsonRpcVersionUnsupportedError; exports.UnknownRpcError = UnknownRpcError; exports.HttpRequestError = HttpRequestError; exports.WebSocketRequestError = WebSocketRequestError; exports.RpcError = RpcError; exports.TimeoutError = TimeoutError; exports.InvalidGasArgumentsError = InvalidGasArgumentsError; exports.TransactionNotFoundError = TransactionNotFoundError; exports.TransactionReceiptNotFoundError = TransactionReceiptNotFoundError; exports.WaitForTransactionReceiptTimeoutError = WaitForTransactionReceiptTimeoutError; exports.UrlRequiredError = UrlRequiredError;
3008
+ //# sourceMappingURL=chunk-THMRUG4D.js.map