viem 0.1.7 → 0.1.9

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 (43) hide show
  1. package/README.md +30 -19
  2. package/dist/abi.js +2 -2
  3. package/dist/abi.mjs +1 -1
  4. package/dist/chain-81b3f26c.d.ts +10 -0
  5. package/dist/chains.d.ts +1 -1
  6. package/dist/chains.js +63 -63
  7. package/dist/chains.mjs +1 -1
  8. package/dist/{chunk-VCNJ6RWU.mjs → chunk-BYG4UCLI.mjs} +13 -35
  9. package/dist/chunk-BYG4UCLI.mjs.map +1 -0
  10. package/dist/{chunk-5YM5CAWB.mjs → chunk-GQ3EDBYX.mjs} +44 -8
  11. package/dist/chunk-GQ3EDBYX.mjs.map +1 -0
  12. package/dist/{chunk-JA5TVU7G.js → chunk-JTX5BKWL.js} +28 -50
  13. package/dist/chunk-JTX5BKWL.js.map +1 -0
  14. package/dist/{chunk-CVKYFX2W.js → chunk-NJT5TACH.js} +86 -50
  15. package/dist/chunk-NJT5TACH.js.map +1 -0
  16. package/dist/contract.d.ts +1 -1
  17. package/dist/contract.js +2 -2
  18. package/dist/contract.mjs +1 -1
  19. package/dist/{createPublicClient-b12dc2b7.d.ts → createPublicClient-4d54af8a.d.ts} +1 -1
  20. package/dist/ens.d.ts +1 -1
  21. package/dist/ens.js +3 -3
  22. package/dist/ens.mjs +2 -2
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.js +89 -89
  25. package/dist/index.mjs +2 -2
  26. package/dist/{parseGwei-ac04b47a.d.ts → parseGwei-66ef1ac7.d.ts} +1 -1
  27. package/dist/public.d.ts +1 -1
  28. package/dist/public.js +2 -2
  29. package/dist/public.mjs +1 -1
  30. package/dist/test.js +2 -2
  31. package/dist/test.mjs +1 -1
  32. package/dist/utils/index.d.ts +5 -5
  33. package/dist/utils/index.js +4 -2
  34. package/dist/utils/index.mjs +3 -1
  35. package/dist/wallet.d.ts +1 -1
  36. package/dist/wallet.js +2 -2
  37. package/dist/wallet.mjs +1 -1
  38. package/package.json +1 -1
  39. package/dist/chain-688e1663.d.ts +0 -5
  40. package/dist/chunk-5YM5CAWB.mjs.map +0 -1
  41. package/dist/chunk-CVKYFX2W.js.map +0 -1
  42. package/dist/chunk-JA5TVU7G.js.map +0 -1
  43. package/dist/chunk-VCNJ6RWU.mjs.map +0 -1
package/README.md CHANGED
@@ -1,31 +1,42 @@
1
- <a href="https://viem.sh">
2
- <p align="center">
3
- <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/wagmi-dev/viem/blob/main/.github/gh-logo-dark.svg">
5
- <img alt="viem logo" src="https://github.com/wagmi-dev/viem/blob/main/.github/gh-logo-light.svg" width="auto" height="60">
6
- </picture>
7
- </p>
1
+ <br/>
2
+
3
+ <p align="center">
4
+ <a href="https://viem.sh">
5
+ <picture>
6
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/wagmi-dev/viem/blob/main/.github/gh-logo-dark.svg">
7
+ <img alt="viem logo" src="https://github.com/wagmi-dev/viem/blob/main/.github/gh-logo-light.svg" width="auto" height="60">
8
+ </picture>
8
9
  </a>
10
+ </p>
9
11
 
10
12
  <p align="center">
11
13
  TypeScript Interface for Ethereum
12
14
  <p>
13
15
 
14
16
  <p align="center">
15
- <a aria-label="Version" href="https://www.npmjs.com/package/viem">
16
- <img
17
- alt="version"
18
- src="https://img.shields.io/npm/v/viem?colorA=2B323B&colorB=1e2329&style=flat&label=Version"
19
- />
17
+ <a href="https://www.npmjs.com/package/viem">
18
+ <picture>
19
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/viem?colorA=21262d&colorB=21262d&style=flat">
20
+ <img src="https://img.shields.io/npm/v/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
21
+ </picture>
20
22
  </a>
21
- <a href="https://codecov.io/github/wagmi-dev/viem" >
22
- <img src="https://codecov.io/github/wagmi-dev/viem/branch/main/graph/badge.svg?token=iUTN9R4Qfg"/>
23
+ <a href="https://app.codecov.io/gh/wagmi-dev/viem">
24
+ <picture>
25
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/codecov/c/github/wagmi-dev/viem?colorA=21262d&colorB=21262d&style=flat">
26
+ <img src="https://img.shields.io/codecov/c/github/wagmi-dev/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Code coverage">
27
+ </picture>
23
28
  </a>
24
- <a aria-label="License" href="https://www.npmjs.com/package/viem">
25
- <img
26
- alt=""
27
- src="https://img.shields.io/github/license/wagmi-dev/viem?colorA=2B323B&colorB=1e2329&style=flat&label=License"
28
- />
29
+ <a href="https://github.com/wagmi-dev/viem/blob/main/LICENSE">
30
+ <picture>
31
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/viem?colorA=21262d&colorB=21262d&style=flat">
32
+ <img src="https://img.shields.io/npm/l/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
33
+ </picture>
34
+ </a>
35
+ <a href="https://bestofjs.org/projects/viem">
36
+ <picture>
37
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/endpoint?colorA=21262d&colorB=21262d&style=flat&url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=wagmi-dev%2Fviem%26since=daily">
38
+ <img src="https://img.shields.io/endpoint?colorA=f6f8fa&colorB=f6f8fa&style=flat&url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=wagmi-dev%2Fviem%26since=daily" alt="Best of JS">
39
+ </picture>
29
40
  </a>
30
41
  </p>
31
42
 
package/dist/abi.js CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
 
10
- var _chunkCVKYFX2Wjs = require('./chunk-CVKYFX2W.js');
10
+ var _chunkNJT5TACHjs = require('./chunk-NJT5TACH.js');
11
11
 
12
12
 
13
13
 
@@ -17,5 +17,5 @@ var _chunkCVKYFX2Wjs = require('./chunk-CVKYFX2W.js');
17
17
 
18
18
 
19
19
 
20
- exports.decodeAbiParameters = _chunkCVKYFX2Wjs.decodeAbiParameters; exports.encodeAbiParameters = _chunkCVKYFX2Wjs.encodeAbiParameters; exports.encodePacked = _chunkCVKYFX2Wjs.encodePacked; exports.getAbiItem = _chunkCVKYFX2Wjs.getAbiItem; exports.parseAbi = _chunkCVKYFX2Wjs.parseAbi; exports.parseAbiItem = _chunkCVKYFX2Wjs.parseAbiItem; exports.parseAbiParameter = _chunkCVKYFX2Wjs.parseAbiParameter; exports.parseAbiParameters = _chunkCVKYFX2Wjs.parseAbiParameters;
20
+ exports.decodeAbiParameters = _chunkNJT5TACHjs.decodeAbiParameters; exports.encodeAbiParameters = _chunkNJT5TACHjs.encodeAbiParameters; exports.encodePacked = _chunkNJT5TACHjs.encodePacked; exports.getAbiItem = _chunkNJT5TACHjs.getAbiItem; exports.parseAbi = _chunkNJT5TACHjs.parseAbi; exports.parseAbiItem = _chunkNJT5TACHjs.parseAbiItem; exports.parseAbiParameter = _chunkNJT5TACHjs.parseAbiParameter; exports.parseAbiParameters = _chunkNJT5TACHjs.parseAbiParameters;
21
21
  //# sourceMappingURL=abi.js.map
package/dist/abi.mjs CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  parseAbiItem,
8
8
  parseAbiParameter,
9
9
  parseAbiParameters
10
- } from "./chunk-5YM5CAWB.mjs";
10
+ } from "./chunk-GQ3EDBYX.mjs";
11
11
  export {
12
12
  decodeAbiParameters,
13
13
  encodeAbiParameters,
@@ -0,0 +1,10 @@
1
+ import { Q as Formatters, C as Chain } from './chain-d64be356.js';
2
+
3
+ declare function defineChain<TFormatters extends Formatters = Formatters, TChain extends Chain<TFormatters> = Chain<TFormatters>>(chain: TChain): TChain;
4
+ declare function getChainContractAddress({ blockNumber, chain, contract: name, }: {
5
+ blockNumber?: bigint;
6
+ chain: Chain;
7
+ contract: string;
8
+ }): `0x${string}`;
9
+
10
+ export { defineChain as d, getChainContractAddress as g };
package/dist/chains.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { R as RpcBlock, c as Block, y as Transaction, H as Hex, p as RpcTransaction, q as RpcTransactionReceipt, T as TransactionReceipt, V as TransactionType, t as TransactionRequest, r as RpcTransactionRequest } from './chain-d64be356.js';
2
2
  export { C as Chain } from './chain-d64be356.js';
3
3
  import * as chains from '@wagmi/chains';
4
- export { d as defineChain } from './chain-688e1663.js';
4
+ export { d as defineChain } from './chain-81b3f26c.js';
5
5
  import 'abitype';
6
6
 
7
7
  declare const arbitrum: {
package/dist/chains.js CHANGED
@@ -4,32 +4,32 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkCVKYFX2Wjs = require('./chunk-CVKYFX2W.js');
7
+ var _chunkNJT5TACHjs = require('./chunk-NJT5TACH.js');
8
8
 
9
9
  // src/chains.ts
10
10
  var _chains = require('@wagmi/chains'); var chains = _interopRequireWildcard(_chains);
11
11
  var celoFormatters = {
12
- block: _chunkCVKYFX2Wjs.defineBlock.call(void 0, {
12
+ block: _chunkNJT5TACHjs.defineBlock.call(void 0, {
13
13
  exclude: ["difficulty", "gasLimit", "mixHash", "nonce", "uncles"],
14
14
  format: (block) => ({
15
15
  randomness: block.randomness
16
16
  })
17
17
  }),
18
- transaction: _chunkCVKYFX2Wjs.defineTransaction.call(void 0, {
18
+ transaction: _chunkNJT5TACHjs.defineTransaction.call(void 0, {
19
19
  format: (transaction) => ({
20
20
  feeCurrency: transaction.feeCurrency,
21
21
  gatewayFee: transaction.gatewayFee ? BigInt(transaction.gatewayFee) : null,
22
22
  gatewayFeeRecipient: transaction.gatewayFeeRecipient
23
23
  })
24
24
  }),
25
- transactionReceipt: _chunkCVKYFX2Wjs.defineTransactionReceipt.call(void 0, {
25
+ transactionReceipt: _chunkNJT5TACHjs.defineTransactionReceipt.call(void 0, {
26
26
  format: (transaction) => ({
27
27
  feeCurrency: transaction.feeCurrency,
28
28
  gatewayFee: transaction.gatewayFee ? BigInt(transaction.gatewayFee) : null,
29
29
  gatewayFeeRecipient: transaction.gatewayFeeRecipient
30
30
  })
31
31
  }),
32
- transactionRequest: _chunkCVKYFX2Wjs.defineTransactionRequest.call(void 0, {
32
+ transactionRequest: _chunkNJT5TACHjs.defineTransactionRequest.call(void 0, {
33
33
  format: (transactionRequest) => ({
34
34
  feeCurrency: transactionRequest.feeCurrency,
35
35
  gatewayFee: transactionRequest.gatewayFee,
@@ -37,69 +37,69 @@ var celoFormatters = {
37
37
  })
38
38
  })
39
39
  };
40
- var arbitrum2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.arbitrum);
41
- var arbitrumGoerli2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.arbitrumGoerli);
42
- var aurora2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.aurora);
43
- var auroraGoerli = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.auroraTestnet);
44
- var avalanche2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.avalanche);
45
- var avalancheFuji2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.avalancheFuji);
46
- var baseGoerli2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.baseGoerli);
47
- var boba2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.boba);
48
- var bronos2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.bronos);
49
- var bronosTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.bronosTestnet);
50
- var bsc2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.bsc);
51
- var bscTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.bscTestnet);
52
- var canto2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.canto);
53
- var celo2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, {
40
+ var arbitrum2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.arbitrum);
41
+ var arbitrumGoerli2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.arbitrumGoerli);
42
+ var aurora2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.aurora);
43
+ var auroraGoerli = _chunkNJT5TACHjs.defineChain.call(void 0, chains.auroraTestnet);
44
+ var avalanche2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.avalanche);
45
+ var avalancheFuji2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.avalancheFuji);
46
+ var baseGoerli2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.baseGoerli);
47
+ var boba2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.boba);
48
+ var bronos2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.bronos);
49
+ var bronosTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.bronosTestnet);
50
+ var bsc2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.bsc);
51
+ var bscTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.bscTestnet);
52
+ var canto2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.canto);
53
+ var celo2 = _chunkNJT5TACHjs.defineChain.call(void 0, {
54
54
  ...chains.celo,
55
55
  formatters: celoFormatters
56
56
  });
57
- var celoAlfajores2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, {
57
+ var celoAlfajores2 = _chunkNJT5TACHjs.defineChain.call(void 0, {
58
58
  ...chains.celoAlfajores,
59
59
  formatters: celoFormatters
60
60
  });
61
- var crossbell2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.crossbell);
62
- var evmos2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.evmos);
63
- var evmosTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.evmosTestnet);
64
- var fantom2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.fantom);
65
- var fantomTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.fantomTestnet);
66
- var filecoin2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.filecoin);
67
- var filecoinCalibration2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.filecoinCalibration);
68
- var filecoinHyperspace2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.filecoinHyperspace);
69
- var flare2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.flare);
70
- var flareTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.flareTestnet);
71
- var foundry2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.foundry);
72
- var goerli2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.goerli);
73
- var gnosis2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.gnosis);
74
- var gnosisChiado2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.gnosisChiado);
75
- var hardhat2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.hardhat);
76
- var harmonyOne2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.harmonyOne);
77
- var iotex2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.iotex);
78
- var iotexTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.iotexTestnet);
79
- var localhost2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.localhost);
80
- var mainnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.mainnet);
81
- var metis2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.metis);
82
- var metisGoerli2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.metisGoerli);
83
- var moonbaseAlpha2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.moonbaseAlpha);
84
- var moonbeam2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.moonbeam);
85
- var moonriver2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.moonriver);
86
- var okc2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.okc);
87
- var optimism2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.optimism);
88
- var optimismGoerli2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.optimismGoerli);
89
- var polygon2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.polygon);
90
- var polygonMumbai2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.polygonMumbai);
91
- var polygonZkEvmTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.polygonZkEvmTestnet);
92
- var sepolia2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.sepolia);
93
- var shardeumSphinx2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.shardeumSphinx);
94
- var songbird2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.songbird);
95
- var songbirdTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.songbirdTestnet);
96
- var taraxa2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.taraxa);
97
- var taraxaTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.taraxaTestnet);
98
- var telos2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.telos);
99
- var telosTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.telosTestnet);
100
- var zhejiang2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.zhejiang);
101
- var zkSync2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.zkSync);
102
- var zkSyncTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.zkSyncTestnet);
61
+ var crossbell2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.crossbell);
62
+ var evmos2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.evmos);
63
+ var evmosTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.evmosTestnet);
64
+ var fantom2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.fantom);
65
+ var fantomTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.fantomTestnet);
66
+ var filecoin2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.filecoin);
67
+ var filecoinCalibration2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.filecoinCalibration);
68
+ var filecoinHyperspace2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.filecoinHyperspace);
69
+ var flare2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.flare);
70
+ var flareTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.flareTestnet);
71
+ var foundry2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.foundry);
72
+ var goerli2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.goerli);
73
+ var gnosis2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.gnosis);
74
+ var gnosisChiado2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.gnosisChiado);
75
+ var hardhat2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.hardhat);
76
+ var harmonyOne2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.harmonyOne);
77
+ var iotex2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.iotex);
78
+ var iotexTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.iotexTestnet);
79
+ var localhost2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.localhost);
80
+ var mainnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.mainnet);
81
+ var metis2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.metis);
82
+ var metisGoerli2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.metisGoerli);
83
+ var moonbaseAlpha2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.moonbaseAlpha);
84
+ var moonbeam2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.moonbeam);
85
+ var moonriver2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.moonriver);
86
+ var okc2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.okc);
87
+ var optimism2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.optimism);
88
+ var optimismGoerli2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.optimismGoerli);
89
+ var polygon2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.polygon);
90
+ var polygonMumbai2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.polygonMumbai);
91
+ var polygonZkEvmTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.polygonZkEvmTestnet);
92
+ var sepolia2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.sepolia);
93
+ var shardeumSphinx2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.shardeumSphinx);
94
+ var songbird2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.songbird);
95
+ var songbirdTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.songbirdTestnet);
96
+ var taraxa2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.taraxa);
97
+ var taraxaTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.taraxaTestnet);
98
+ var telos2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.telos);
99
+ var telosTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.telosTestnet);
100
+ var zhejiang2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.zhejiang);
101
+ var zkSync2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.zkSync);
102
+ var zkSyncTestnet2 = _chunkNJT5TACHjs.defineChain.call(void 0, chains.zkSyncTestnet);
103
103
 
104
104
 
105
105
 
@@ -159,5 +159,5 @@ var zkSyncTestnet2 = _chunkCVKYFX2Wjs.defineChain.call(void 0, chains.zkSyncTest
159
159
 
160
160
 
161
161
 
162
- exports.arbitrum = arbitrum2; exports.arbitrumGoerli = arbitrumGoerli2; exports.aurora = aurora2; exports.auroraGoerli = auroraGoerli; exports.avalanche = avalanche2; exports.avalancheFuji = avalancheFuji2; exports.baseGoerli = baseGoerli2; exports.boba = boba2; exports.bronos = bronos2; exports.bronosTestnet = bronosTestnet2; exports.bsc = bsc2; exports.bscTestnet = bscTestnet2; exports.canto = canto2; exports.celo = celo2; exports.celoAlfajores = celoAlfajores2; exports.crossbell = crossbell2; exports.defineChain = _chunkCVKYFX2Wjs.defineChain; exports.evmos = evmos2; exports.evmosTestnet = evmosTestnet2; exports.fantom = fantom2; exports.fantomTestnet = fantomTestnet2; exports.filecoin = filecoin2; exports.filecoinCalibration = filecoinCalibration2; exports.filecoinHyperspace = filecoinHyperspace2; exports.flare = flare2; exports.flareTestnet = flareTestnet2; exports.foundry = foundry2; exports.gnosis = gnosis2; exports.gnosisChiado = gnosisChiado2; exports.goerli = goerli2; exports.hardhat = hardhat2; exports.harmonyOne = harmonyOne2; exports.iotex = iotex2; exports.iotexTestnet = iotexTestnet2; exports.localhost = localhost2; exports.mainnet = mainnet2; exports.metis = metis2; exports.metisGoerli = metisGoerli2; exports.moonbaseAlpha = moonbaseAlpha2; exports.moonbeam = moonbeam2; exports.moonriver = moonriver2; exports.okc = okc2; exports.optimism = optimism2; exports.optimismGoerli = optimismGoerli2; exports.polygon = polygon2; exports.polygonMumbai = polygonMumbai2; exports.polygonZkEvmTestnet = polygonZkEvmTestnet2; exports.sepolia = sepolia2; exports.shardeumSphinx = shardeumSphinx2; exports.songbird = songbird2; exports.songbirdTestnet = songbirdTestnet2; exports.taraxa = taraxa2; exports.taraxaTestnet = taraxaTestnet2; exports.telos = telos2; exports.telosTestnet = telosTestnet2; exports.zhejiang = zhejiang2; exports.zkSync = zkSync2; exports.zkSyncTestnet = zkSyncTestnet2;
162
+ exports.arbitrum = arbitrum2; exports.arbitrumGoerli = arbitrumGoerli2; exports.aurora = aurora2; exports.auroraGoerli = auroraGoerli; exports.avalanche = avalanche2; exports.avalancheFuji = avalancheFuji2; exports.baseGoerli = baseGoerli2; exports.boba = boba2; exports.bronos = bronos2; exports.bronosTestnet = bronosTestnet2; exports.bsc = bsc2; exports.bscTestnet = bscTestnet2; exports.canto = canto2; exports.celo = celo2; exports.celoAlfajores = celoAlfajores2; exports.crossbell = crossbell2; exports.defineChain = _chunkNJT5TACHjs.defineChain; exports.evmos = evmos2; exports.evmosTestnet = evmosTestnet2; exports.fantom = fantom2; exports.fantomTestnet = fantomTestnet2; exports.filecoin = filecoin2; exports.filecoinCalibration = filecoinCalibration2; exports.filecoinHyperspace = filecoinHyperspace2; exports.flare = flare2; exports.flareTestnet = flareTestnet2; exports.foundry = foundry2; exports.gnosis = gnosis2; exports.gnosisChiado = gnosisChiado2; exports.goerli = goerli2; exports.hardhat = hardhat2; exports.harmonyOne = harmonyOne2; exports.iotex = iotex2; exports.iotexTestnet = iotexTestnet2; exports.localhost = localhost2; exports.mainnet = mainnet2; exports.metis = metis2; exports.metisGoerli = metisGoerli2; exports.moonbaseAlpha = moonbaseAlpha2; exports.moonbeam = moonbeam2; exports.moonriver = moonriver2; exports.okc = okc2; exports.optimism = optimism2; exports.optimismGoerli = optimismGoerli2; exports.polygon = polygon2; exports.polygonMumbai = polygonMumbai2; exports.polygonZkEvmTestnet = polygonZkEvmTestnet2; exports.sepolia = sepolia2; exports.shardeumSphinx = shardeumSphinx2; exports.songbird = songbird2; exports.songbirdTestnet = songbirdTestnet2; exports.taraxa = taraxa2; exports.taraxaTestnet = taraxaTestnet2; exports.telos = telos2; exports.telosTestnet = telosTestnet2; exports.zhejiang = zhejiang2; exports.zkSync = zkSync2; exports.zkSyncTestnet = zkSyncTestnet2;
163
163
  //# sourceMappingURL=chains.js.map
package/dist/chains.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  defineTransaction,
5
5
  defineTransactionReceipt,
6
6
  defineTransactionRequest
7
- } from "./chunk-5YM5CAWB.mjs";
7
+ } from "./chunk-GQ3EDBYX.mjs";
8
8
 
9
9
  // src/chains.ts
10
10
  import * as chains from "@wagmi/chains";
@@ -1,17 +1,17 @@
1
1
  import {
2
- ChainDoesNotSupportContract,
3
2
  ContractFunctionExecutionError,
4
3
  bytesToHex,
5
4
  concat,
6
5
  decodeFunctionResult,
7
6
  encodeFunctionData,
7
+ getChainContractAddress,
8
8
  keccak256,
9
9
  panicReasons,
10
10
  readContract,
11
11
  stringToBytes,
12
12
  toBytes,
13
13
  toHex
14
- } from "./chunk-5YM5CAWB.mjs";
14
+ } from "./chunk-GQ3EDBYX.mjs";
15
15
 
16
16
  // src/utils/ens/labelhash.ts
17
17
  function labelhash(label) {
@@ -69,22 +69,11 @@ async function getEnsAddress(client, {
69
69
  throw new Error(
70
70
  "client chain not configured. universalResolverAddress is required."
71
71
  );
72
- const contract = client.chain?.contracts?.ensUniversalResolver;
73
- if (!contract)
74
- throw new ChainDoesNotSupportContract({
75
- chain: client.chain,
76
- contract: { name: "ensUniversalResolver" }
77
- });
78
- if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
79
- throw new ChainDoesNotSupportContract({
80
- blockNumber,
81
- chain: client.chain,
82
- contract: {
83
- name: "ensUniversalResolver",
84
- blockCreated: contract.blockCreated
85
- }
86
- });
87
- universalResolverAddress = contract.address;
72
+ universalResolverAddress = getChainContractAddress({
73
+ blockNumber,
74
+ chain: client.chain,
75
+ contract: "ensUniversalResolver"
76
+ });
88
77
  }
89
78
  const res = await readContract(client, {
90
79
  address: universalResolverAddress,
@@ -151,22 +140,11 @@ async function getEnsName(client, {
151
140
  throw new Error(
152
141
  "client chain not configured. universalResolverAddress is required."
153
142
  );
154
- const contract = client.chain?.contracts?.ensUniversalResolver;
155
- if (!contract)
156
- throw new ChainDoesNotSupportContract({
157
- chain: client.chain,
158
- contract: { name: "ensUniversalResolver" }
159
- });
160
- if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
161
- throw new ChainDoesNotSupportContract({
162
- blockNumber,
163
- chain: client.chain,
164
- contract: {
165
- name: "ensUniversalResolver",
166
- blockCreated: contract.blockCreated
167
- }
168
- });
169
- universalResolverAddress = contract.address;
143
+ universalResolverAddress = getChainContractAddress({
144
+ blockNumber,
145
+ chain: client.chain,
146
+ contract: "ensUniversalResolver"
147
+ });
170
148
  }
171
149
  const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
172
150
  try {
@@ -205,4 +183,4 @@ export {
205
183
  getEnsAddress,
206
184
  getEnsName
207
185
  };
208
- //# sourceMappingURL=chunk-VCNJ6RWU.mjs.map
186
+ //# sourceMappingURL=chunk-BYG4UCLI.mjs.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"],"sourcesContent":["import { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\n\n/**\n * @description Hashes ENS label\n *\n * - Since ENS labels prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS labels](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `labelhash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize.html) function for this.\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 * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `namehash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize.html) function for this.\n *\n * @example\n * namehash('wagmi-dev.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @link https://eips.ethereum.org/EIPS/eip-137\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 type { Address, Prettify } from '../../types'\nimport {\n decodeFunctionResult,\n encodeFunctionData,\n getChainContractAddress,\n toHex,\n} from '../../utils'\nimport { namehash, packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractParameters } from '../public'\n\nexport type GetEnsAddressParameters = Prettify<\n Pick<ReadContractParameters, '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 GetEnsAddressReturnType = Address\n\n/**\n * @description Gets address for ENS name.\n *\n * - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize.html) function for this.\n *\n * @example\n * import { normalize } from 'viem/ens'\n *\n * const ensAddress = await getEnsAddress(publicClient, {\n * name: normalize('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 }: GetEnsAddressParameters,\n): Promise<GetEnsAddressReturnType> {\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 universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\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 ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { getChainContractAddress, toHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractParameters } from '../public'\n\nexport type GetEnsNameParameters = Prettify<\n Pick<ReadContractParameters, '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 GetEnsNameReturnType = 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 }: GetEnsNameParameters,\n): Promise<GetEnsNameReturnType> {\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 universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\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"],"mappings":";;;;;;;;;;;;;;;;AAYO,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;;;ACDO,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;;;ACpBO,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;;;ACQA,eAAsB,cACpB,QACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0B;AAC5B,GACkC;AAClC,MAAI,2BAA2B;AAC/B,MAAI,CAAC,0BAA0B;AAC7B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,+BAA2B,wBAAwB;AAAA,MACjD;AAAA,MACA,OAAO,OAAO;AAAA,MACd,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;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;;;AC5EA,eAAsB,WACpB,QACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0B;AAC5B,GAC+B;AAC/B,MAAI,2BAA2B;AAC/B,MAAI,CAAC,0BAA0B;AAC7B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,+BAA2B,wBAAwB;AAAA,MACjD;AAAA,MACA,OAAO,OAAO;AAAA,MACd,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;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;","names":["value"]}
@@ -17,7 +17,7 @@ import {
17
17
  var package_default = {
18
18
  name: "viem",
19
19
  description: "TypeScript Interface for Ethereum",
20
- version: "0.1.7",
20
+ version: "0.1.9",
21
21
  scripts: {
22
22
  anvil: "source .env && anvil --fork-url $VITE_ANVIL_FORK_URL --fork-block-number $VITE_ANVIL_BLOCK_NUMBER --block-time $VITE_ANVIL_BLOCK_TIME",
23
23
  bench: "vitest bench --no-threads",
@@ -206,7 +206,7 @@ var BaseError = class extends Error {
206
206
  shortMessage || "An error occurred.",
207
207
  "",
208
208
  ...args.metaMessages ? [...args.metaMessages, ""] : [],
209
- ...docsPath5 ? [`Docs: https://viem.sh${docsPath5}`] : [],
209
+ ...docsPath5 ? [`Docs: https://viem.sh${docsPath5}.html`] : [],
210
210
  ...details ? [`Details: ${details}`] : [],
211
211
  `Version: ${getVersion()}`
212
212
  ].join("\n");
@@ -2272,10 +2272,9 @@ function decodeBytes(data, { param, position }) {
2272
2272
  if (!size2) {
2273
2273
  const offset = hexToNumber(slice(data, position, position + 32));
2274
2274
  const length = hexToNumber(slice(data, offset, offset + 32));
2275
- const value2 = (
2276
- // If there is no length, we have zero data.
2277
- length === 0 ? "0x" : slice(data, offset + 32, offset + 32 + length)
2278
- );
2275
+ if (length === 0)
2276
+ return { consumed: 32, value: "0x" };
2277
+ const value2 = slice(data, offset + 32, offset + 32 + length);
2279
2278
  return { consumed: 32, value: value2 };
2280
2279
  }
2281
2280
  const value = slice(data, position, position + parseInt(size2));
@@ -2292,6 +2291,8 @@ function decodeNumber(value, { param }) {
2292
2291
  function decodeString(data, { position }) {
2293
2292
  const offset = hexToNumber(slice(data, position, position + 32));
2294
2293
  const length = hexToNumber(slice(data, offset, offset + 32));
2294
+ if (length === 0)
2295
+ return { consumed: 32, value: "" };
2295
2296
  const value = hexToString(
2296
2297
  trim(slice(data, offset + 32, offset + 32 + length))
2297
2298
  );
@@ -2963,6 +2964,28 @@ function buildRequest(request, {
2963
2964
  function defineChain(chain) {
2964
2965
  return chain;
2965
2966
  }
2967
+ function getChainContractAddress({
2968
+ blockNumber,
2969
+ chain,
2970
+ contract: name
2971
+ }) {
2972
+ const contract = chain?.contracts?.[name];
2973
+ if (!contract)
2974
+ throw new ChainDoesNotSupportContract({
2975
+ chain,
2976
+ contract: { name }
2977
+ });
2978
+ if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
2979
+ throw new ChainDoesNotSupportContract({
2980
+ blockNumber,
2981
+ chain,
2982
+ contract: {
2983
+ name,
2984
+ blockCreated: contract.blockCreated
2985
+ }
2986
+ });
2987
+ return contract.address;
2988
+ }
2966
2989
 
2967
2990
  // src/utils/formatters/format.ts
2968
2991
  function format3(data, { formatter }) {
@@ -4031,8 +4054,20 @@ async function multicall(client, args) {
4031
4054
  blockNumber,
4032
4055
  blockTag,
4033
4056
  contracts,
4034
- multicallAddress
4057
+ multicallAddress: multicallAddress_
4035
4058
  } = args;
4059
+ let multicallAddress = multicallAddress_;
4060
+ if (!multicallAddress) {
4061
+ if (!client.chain)
4062
+ throw new Error(
4063
+ "client chain not configured. multicallAddress is required."
4064
+ );
4065
+ multicallAddress = getChainContractAddress({
4066
+ blockNumber,
4067
+ chain: client.chain,
4068
+ contract: "multicall3"
4069
+ });
4070
+ }
4036
4071
  const calls = contracts.map(({ abi, address, args: args2, functionName }) => {
4037
4072
  try {
4038
4073
  const callData = encodeFunctionData({
@@ -5243,6 +5278,7 @@ export {
5243
5278
  isDeterministicError,
5244
5279
  buildRequest,
5245
5280
  defineChain,
5281
+ getChainContractAddress,
5246
5282
  format3 as format,
5247
5283
  defineFormatter,
5248
5284
  transactionType,
@@ -5345,4 +5381,4 @@ export {
5345
5381
  formatGwei,
5346
5382
  parseEther
5347
5383
  };
5348
- //# sourceMappingURL=chunk-5YM5CAWB.mjs.map
5384
+ //# sourceMappingURL=chunk-GQ3EDBYX.mjs.map