viem 0.1.8 → 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 (42) hide show
  1. package/dist/abi.js +2 -2
  2. package/dist/abi.mjs +1 -1
  3. package/dist/chain-81b3f26c.d.ts +10 -0
  4. package/dist/chains.d.ts +1 -1
  5. package/dist/chains.js +63 -63
  6. package/dist/chains.mjs +1 -1
  7. package/dist/{chunk-2NPEMQUQ.mjs → chunk-BYG4UCLI.mjs} +13 -35
  8. package/dist/chunk-BYG4UCLI.mjs.map +1 -0
  9. package/dist/{chunk-EYQS4UG5.mjs → chunk-GQ3EDBYX.mjs} +38 -3
  10. package/dist/chunk-GQ3EDBYX.mjs.map +1 -0
  11. package/dist/{chunk-TFO2ZNO6.js → chunk-JTX5BKWL.js} +28 -50
  12. package/dist/chunk-JTX5BKWL.js.map +1 -0
  13. package/dist/{chunk-SWM5USHJ.js → chunk-NJT5TACH.js} +80 -45
  14. package/dist/chunk-NJT5TACH.js.map +1 -0
  15. package/dist/contract.d.ts +1 -1
  16. package/dist/contract.js +2 -2
  17. package/dist/contract.mjs +1 -1
  18. package/dist/{createPublicClient-b12dc2b7.d.ts → createPublicClient-4d54af8a.d.ts} +1 -1
  19. package/dist/ens.d.ts +1 -1
  20. package/dist/ens.js +3 -3
  21. package/dist/ens.mjs +2 -2
  22. package/dist/index.d.ts +4 -4
  23. package/dist/index.js +89 -89
  24. package/dist/index.mjs +2 -2
  25. package/dist/{parseGwei-ac04b47a.d.ts → parseGwei-66ef1ac7.d.ts} +1 -1
  26. package/dist/public.d.ts +1 -1
  27. package/dist/public.js +2 -2
  28. package/dist/public.mjs +1 -1
  29. package/dist/test.js +2 -2
  30. package/dist/test.mjs +1 -1
  31. package/dist/utils/index.d.ts +5 -5
  32. package/dist/utils/index.js +4 -2
  33. package/dist/utils/index.mjs +3 -1
  34. package/dist/wallet.d.ts +1 -1
  35. package/dist/wallet.js +2 -2
  36. package/dist/wallet.mjs +1 -1
  37. package/package.json +1 -1
  38. package/dist/chain-688e1663.d.ts +0 -5
  39. package/dist/chunk-2NPEMQUQ.mjs.map +0 -1
  40. package/dist/chunk-EYQS4UG5.mjs.map +0 -1
  41. package/dist/chunk-SWM5USHJ.js.map +0 -1
  42. package/dist/chunk-TFO2ZNO6.js.map +0 -1
@@ -97,8 +97,8 @@
97
97
 
98
98
 
99
99
 
100
- var _chunkSWM5USHJjs = require('../chunk-SWM5USHJ.js');
101
100
 
101
+ var _chunkNJT5TACHjs = require('../chunk-NJT5TACH.js');
102
102
 
103
103
 
104
104
 
@@ -197,5 +197,7 @@ var _chunkSWM5USHJjs = require('../chunk-SWM5USHJ.js');
197
197
 
198
198
 
199
199
 
200
- exports.arrayRegex = _chunkSWM5USHJjs.arrayRegex; exports.assertRequest = _chunkSWM5USHJjs.assertRequest; exports.boolToBytes = _chunkSWM5USHJjs.boolToBytes; exports.boolToHex = _chunkSWM5USHJjs.boolToHex; exports.buildRequest = _chunkSWM5USHJjs.buildRequest; exports.bytesRegex = _chunkSWM5USHJjs.bytesRegex; exports.bytesToBigint = _chunkSWM5USHJjs.bytesToBigint; exports.bytesToBool = _chunkSWM5USHJjs.bytesToBool; exports.bytesToHex = _chunkSWM5USHJjs.bytesToHex; exports.bytesToNumber = _chunkSWM5USHJjs.bytesToNumber; exports.bytesToString = _chunkSWM5USHJjs.bytesToString; exports.containsNodeError = _chunkSWM5USHJjs.containsNodeError; exports.decodeAbiParameters = _chunkSWM5USHJjs.decodeAbiParameters; exports.decodeErrorResult = _chunkSWM5USHJjs.decodeErrorResult; exports.decodeEventLog = _chunkSWM5USHJjs.decodeEventLog; exports.decodeFunctionData = _chunkSWM5USHJjs.decodeFunctionData; exports.decodeFunctionResult = _chunkSWM5USHJjs.decodeFunctionResult; exports.defineBlock = _chunkSWM5USHJjs.defineBlock; exports.defineChain = _chunkSWM5USHJjs.defineChain; exports.defineFormatter = _chunkSWM5USHJjs.defineFormatter; exports.defineTransaction = _chunkSWM5USHJjs.defineTransaction; exports.defineTransactionReceipt = _chunkSWM5USHJjs.defineTransactionReceipt; exports.defineTransactionRequest = _chunkSWM5USHJjs.defineTransactionRequest; exports.encodeAbiParameters = _chunkSWM5USHJjs.encodeAbiParameters; exports.encodeDeployData = _chunkSWM5USHJjs.encodeDeployData; exports.encodeErrorResult = _chunkSWM5USHJjs.encodeErrorResult; exports.encodeEventTopics = _chunkSWM5USHJjs.encodeEventTopics; exports.encodeFunctionData = _chunkSWM5USHJjs.encodeFunctionData; exports.encodeFunctionResult = _chunkSWM5USHJjs.encodeFunctionResult; exports.encodePacked = _chunkSWM5USHJjs.encodePacked; exports.extract = _chunkSWM5USHJjs.extract; exports.extractFunctionName = _chunkSWM5USHJjs.extractFunctionName; exports.extractFunctionParams = _chunkSWM5USHJjs.extractFunctionParams; exports.extractFunctionParts = _chunkSWM5USHJjs.extractFunctionParts; exports.extractFunctionType = _chunkSWM5USHJjs.extractFunctionType; exports.format = _chunkSWM5USHJjs.format; exports.formatAbiItem = _chunkSWM5USHJjs.formatAbiItem; exports.formatAbiItemWithArgs = _chunkSWM5USHJjs.formatAbiItemWithArgs; exports.formatBlock = _chunkSWM5USHJjs.formatBlock; exports.formatEther = _chunkSWM5USHJjs.formatEther; exports.formatGwei = _chunkSWM5USHJjs.formatGwei; exports.formatTransaction = _chunkSWM5USHJjs.formatTransaction; exports.formatTransactionRequest = _chunkSWM5USHJjs.formatTransactionRequest; exports.formatUnits = _chunkSWM5USHJjs.formatUnits; exports.fromBytes = _chunkSWM5USHJjs.fromBytes; exports.fromHex = _chunkSWM5USHJjs.fromHex; exports.fromRlp = _chunkSWM5USHJjs.fromRlp; exports.getAbiItem = _chunkSWM5USHJjs.getAbiItem; exports.getAccount = _chunkSWM5USHJjs.getAccount; exports.getAddress = _chunkSWM5USHJjs.getAddress; exports.getCallError = _chunkSWM5USHJjs.getCallError; exports.getContractAddress = _chunkSWM5USHJjs.getContractAddress; exports.getContractError = _chunkSWM5USHJjs.getContractError; exports.getCreate2Address = _chunkSWM5USHJjs.getCreate2Address; exports.getCreateAddress = _chunkSWM5USHJjs.getCreateAddress; exports.getEstimateGasError = _chunkSWM5USHJjs.getEstimateGasError; exports.getEventSelector = _chunkSWM5USHJjs.getEventSelector; exports.getFunctionSelector = _chunkSWM5USHJjs.getFunctionSelector; exports.getNodeError = _chunkSWM5USHJjs.getNodeError; exports.getSocket = _chunkSWM5USHJjs.getSocket; exports.getTransactionError = _chunkSWM5USHJjs.getTransactionError; exports.hexToBigInt = _chunkSWM5USHJjs.hexToBigInt; exports.hexToBool = _chunkSWM5USHJjs.hexToBool; exports.hexToBytes = _chunkSWM5USHJjs.hexToBytes; exports.hexToNumber = _chunkSWM5USHJjs.hexToNumber; exports.hexToString = _chunkSWM5USHJjs.hexToString; exports.integerRegex = _chunkSWM5USHJjs.integerRegex; exports.isAddress = _chunkSWM5USHJjs.isAddress; exports.isAddressEqual = _chunkSWM5USHJjs.isAddressEqual; exports.isBytes = _chunkSWM5USHJjs.isBytes; exports.isHex = _chunkSWM5USHJjs.isHex; exports.keccak256 = _chunkSWM5USHJjs.keccak256; exports.numberToBytes = _chunkSWM5USHJjs.numberToBytes; exports.numberToHex = _chunkSWM5USHJjs.numberToHex; exports.pad = _chunkSWM5USHJjs.pad; exports.padBytes = _chunkSWM5USHJjs.padBytes; exports.padHex = _chunkSWM5USHJjs.padHex; exports.parseAbi = _chunkSWM5USHJjs.parseAbi; exports.parseAbiItem = _chunkSWM5USHJjs.parseAbiItem; exports.parseAbiParameter = _chunkSWM5USHJjs.parseAbiParameter; exports.parseAbiParameters = _chunkSWM5USHJjs.parseAbiParameters; exports.parseEther = _chunkSWM5USHJjs.parseEther; exports.parseGwei = _chunkSWM5USHJjs.parseGwei; exports.parseUnits = _chunkSWM5USHJjs.parseUnits; exports.prepareRequest = _chunkSWM5USHJjs.prepareRequest; exports.rpc = _chunkSWM5USHJjs.rpc; exports.size = _chunkSWM5USHJjs.size; exports.slice = _chunkSWM5USHJjs.slice; exports.sliceBytes = _chunkSWM5USHJjs.sliceBytes; exports.sliceHex = _chunkSWM5USHJjs.sliceHex; exports.stringToBytes = _chunkSWM5USHJjs.stringToBytes; exports.stringToHex = _chunkSWM5USHJjs.stringToHex; exports.stringify = _chunkSWM5USHJjs.stringify; exports.toBytes = _chunkSWM5USHJjs.toBytes; exports.toHex = _chunkSWM5USHJjs.toHex; exports.toRlp = _chunkSWM5USHJjs.toRlp; exports.transactionType = _chunkSWM5USHJjs.transactionType; exports.trim = _chunkSWM5USHJjs.trim;
200
+
201
+
202
+ exports.arrayRegex = _chunkNJT5TACHjs.arrayRegex; exports.assertRequest = _chunkNJT5TACHjs.assertRequest; exports.boolToBytes = _chunkNJT5TACHjs.boolToBytes; exports.boolToHex = _chunkNJT5TACHjs.boolToHex; exports.buildRequest = _chunkNJT5TACHjs.buildRequest; exports.bytesRegex = _chunkNJT5TACHjs.bytesRegex; exports.bytesToBigint = _chunkNJT5TACHjs.bytesToBigint; exports.bytesToBool = _chunkNJT5TACHjs.bytesToBool; exports.bytesToHex = _chunkNJT5TACHjs.bytesToHex; exports.bytesToNumber = _chunkNJT5TACHjs.bytesToNumber; exports.bytesToString = _chunkNJT5TACHjs.bytesToString; exports.containsNodeError = _chunkNJT5TACHjs.containsNodeError; exports.decodeAbiParameters = _chunkNJT5TACHjs.decodeAbiParameters; exports.decodeErrorResult = _chunkNJT5TACHjs.decodeErrorResult; exports.decodeEventLog = _chunkNJT5TACHjs.decodeEventLog; exports.decodeFunctionData = _chunkNJT5TACHjs.decodeFunctionData; exports.decodeFunctionResult = _chunkNJT5TACHjs.decodeFunctionResult; exports.defineBlock = _chunkNJT5TACHjs.defineBlock; exports.defineChain = _chunkNJT5TACHjs.defineChain; exports.defineFormatter = _chunkNJT5TACHjs.defineFormatter; exports.defineTransaction = _chunkNJT5TACHjs.defineTransaction; exports.defineTransactionReceipt = _chunkNJT5TACHjs.defineTransactionReceipt; exports.defineTransactionRequest = _chunkNJT5TACHjs.defineTransactionRequest; exports.encodeAbiParameters = _chunkNJT5TACHjs.encodeAbiParameters; exports.encodeDeployData = _chunkNJT5TACHjs.encodeDeployData; exports.encodeErrorResult = _chunkNJT5TACHjs.encodeErrorResult; exports.encodeEventTopics = _chunkNJT5TACHjs.encodeEventTopics; exports.encodeFunctionData = _chunkNJT5TACHjs.encodeFunctionData; exports.encodeFunctionResult = _chunkNJT5TACHjs.encodeFunctionResult; exports.encodePacked = _chunkNJT5TACHjs.encodePacked; exports.extract = _chunkNJT5TACHjs.extract; exports.extractFunctionName = _chunkNJT5TACHjs.extractFunctionName; exports.extractFunctionParams = _chunkNJT5TACHjs.extractFunctionParams; exports.extractFunctionParts = _chunkNJT5TACHjs.extractFunctionParts; exports.extractFunctionType = _chunkNJT5TACHjs.extractFunctionType; exports.format = _chunkNJT5TACHjs.format; exports.formatAbiItem = _chunkNJT5TACHjs.formatAbiItem; exports.formatAbiItemWithArgs = _chunkNJT5TACHjs.formatAbiItemWithArgs; exports.formatBlock = _chunkNJT5TACHjs.formatBlock; exports.formatEther = _chunkNJT5TACHjs.formatEther; exports.formatGwei = _chunkNJT5TACHjs.formatGwei; exports.formatTransaction = _chunkNJT5TACHjs.formatTransaction; exports.formatTransactionRequest = _chunkNJT5TACHjs.formatTransactionRequest; exports.formatUnits = _chunkNJT5TACHjs.formatUnits; exports.fromBytes = _chunkNJT5TACHjs.fromBytes; exports.fromHex = _chunkNJT5TACHjs.fromHex; exports.fromRlp = _chunkNJT5TACHjs.fromRlp; exports.getAbiItem = _chunkNJT5TACHjs.getAbiItem; exports.getAccount = _chunkNJT5TACHjs.getAccount; exports.getAddress = _chunkNJT5TACHjs.getAddress; exports.getCallError = _chunkNJT5TACHjs.getCallError; exports.getChainContractAddress = _chunkNJT5TACHjs.getChainContractAddress; exports.getContractAddress = _chunkNJT5TACHjs.getContractAddress; exports.getContractError = _chunkNJT5TACHjs.getContractError; exports.getCreate2Address = _chunkNJT5TACHjs.getCreate2Address; exports.getCreateAddress = _chunkNJT5TACHjs.getCreateAddress; exports.getEstimateGasError = _chunkNJT5TACHjs.getEstimateGasError; exports.getEventSelector = _chunkNJT5TACHjs.getEventSelector; exports.getFunctionSelector = _chunkNJT5TACHjs.getFunctionSelector; exports.getNodeError = _chunkNJT5TACHjs.getNodeError; exports.getSocket = _chunkNJT5TACHjs.getSocket; exports.getTransactionError = _chunkNJT5TACHjs.getTransactionError; exports.hexToBigInt = _chunkNJT5TACHjs.hexToBigInt; exports.hexToBool = _chunkNJT5TACHjs.hexToBool; exports.hexToBytes = _chunkNJT5TACHjs.hexToBytes; exports.hexToNumber = _chunkNJT5TACHjs.hexToNumber; exports.hexToString = _chunkNJT5TACHjs.hexToString; exports.integerRegex = _chunkNJT5TACHjs.integerRegex; exports.isAddress = _chunkNJT5TACHjs.isAddress; exports.isAddressEqual = _chunkNJT5TACHjs.isAddressEqual; exports.isBytes = _chunkNJT5TACHjs.isBytes; exports.isHex = _chunkNJT5TACHjs.isHex; exports.keccak256 = _chunkNJT5TACHjs.keccak256; exports.numberToBytes = _chunkNJT5TACHjs.numberToBytes; exports.numberToHex = _chunkNJT5TACHjs.numberToHex; exports.pad = _chunkNJT5TACHjs.pad; exports.padBytes = _chunkNJT5TACHjs.padBytes; exports.padHex = _chunkNJT5TACHjs.padHex; exports.parseAbi = _chunkNJT5TACHjs.parseAbi; exports.parseAbiItem = _chunkNJT5TACHjs.parseAbiItem; exports.parseAbiParameter = _chunkNJT5TACHjs.parseAbiParameter; exports.parseAbiParameters = _chunkNJT5TACHjs.parseAbiParameters; exports.parseEther = _chunkNJT5TACHjs.parseEther; exports.parseGwei = _chunkNJT5TACHjs.parseGwei; exports.parseUnits = _chunkNJT5TACHjs.parseUnits; exports.prepareRequest = _chunkNJT5TACHjs.prepareRequest; exports.rpc = _chunkNJT5TACHjs.rpc; exports.size = _chunkNJT5TACHjs.size; exports.slice = _chunkNJT5TACHjs.slice; exports.sliceBytes = _chunkNJT5TACHjs.sliceBytes; exports.sliceHex = _chunkNJT5TACHjs.sliceHex; exports.stringToBytes = _chunkNJT5TACHjs.stringToBytes; exports.stringToHex = _chunkNJT5TACHjs.stringToHex; exports.stringify = _chunkNJT5TACHjs.stringify; exports.toBytes = _chunkNJT5TACHjs.toBytes; exports.toHex = _chunkNJT5TACHjs.toHex; exports.toRlp = _chunkNJT5TACHjs.toRlp; exports.transactionType = _chunkNJT5TACHjs.transactionType; exports.trim = _chunkNJT5TACHjs.trim;
201
203
  //# sourceMappingURL=index.js.map
@@ -50,6 +50,7 @@ import {
50
50
  getAccount,
51
51
  getAddress,
52
52
  getCallError,
53
+ getChainContractAddress,
53
54
  getContractAddress,
54
55
  getContractError,
55
56
  getCreate2Address,
@@ -97,7 +98,7 @@ import {
97
98
  toRlp,
98
99
  transactionType,
99
100
  trim
100
- } from "../chunk-EYQS4UG5.mjs";
101
+ } from "../chunk-GQ3EDBYX.mjs";
101
102
  export {
102
103
  arrayRegex,
103
104
  assertRequest,
@@ -150,6 +151,7 @@ export {
150
151
  getAccount,
151
152
  getAddress,
152
153
  getCallError,
154
+ getChainContractAddress,
153
155
  getContractAddress,
154
156
  getContractError,
155
157
  getCreate2Address,
package/dist/wallet.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { bj as AddChainParameters, bk as FormattedTransactionRequest, bm as GetAddressesReturnType, bl as GetPermissionsReturnType, bn as RequestAddressesReturnType, bo as RequestPermissionsReturnType, S as SendTransactionParameters, bp as SendTransactionReturnType, bq as SignMessageParameters, br as SignMessageReturnType, bs as SwitchChainParameters, bt as WatchAssetParameters, bu as WatchAssetReturnType, ba as addChain, bb as getAddresses, bc as getPermissions, bd as requestAddresses, be as requestPermissions, bf as sendTransaction, bg as signMessage, bh as switchChain, bi as watchAsset } from './createPublicClient-b12dc2b7.js';
1
+ export { bj as AddChainParameters, bk as FormattedTransactionRequest, bm as GetAddressesReturnType, bl as GetPermissionsReturnType, bn as RequestAddressesReturnType, bo as RequestPermissionsReturnType, S as SendTransactionParameters, bp as SendTransactionReturnType, bq as SignMessageParameters, br as SignMessageReturnType, bs as SwitchChainParameters, bt as WatchAssetParameters, bu as WatchAssetReturnType, ba as addChain, bb as getAddresses, bc as getPermissions, bd as requestAddresses, be as requestPermissions, bf as sendTransaction, bg as signMessage, bh as switchChain, bi as watchAsset } from './createPublicClient-4d54af8a.js';
2
2
  import './chain-d64be356.js';
3
3
  import './eip1193-029d52f0.js';
4
4
  import 'abitype';
package/dist/wallet.js CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- var _chunkSWM5USHJjs = require('./chunk-SWM5USHJ.js');
11
+ var _chunkNJT5TACHjs = require('./chunk-NJT5TACH.js');
12
12
 
13
13
 
14
14
 
@@ -19,5 +19,5 @@ var _chunkSWM5USHJjs = require('./chunk-SWM5USHJ.js');
19
19
 
20
20
 
21
21
 
22
- exports.addChain = _chunkSWM5USHJjs.addChain; exports.getAddresses = _chunkSWM5USHJjs.getAddresses; exports.getPermissions = _chunkSWM5USHJjs.getPermissions; exports.requestAddresses = _chunkSWM5USHJjs.requestAddresses; exports.requestPermissions = _chunkSWM5USHJjs.requestPermissions; exports.sendTransaction = _chunkSWM5USHJjs.sendTransaction; exports.signMessage = _chunkSWM5USHJjs.signMessage; exports.switchChain = _chunkSWM5USHJjs.switchChain; exports.watchAsset = _chunkSWM5USHJjs.watchAsset;
22
+ exports.addChain = _chunkNJT5TACHjs.addChain; exports.getAddresses = _chunkNJT5TACHjs.getAddresses; exports.getPermissions = _chunkNJT5TACHjs.getPermissions; exports.requestAddresses = _chunkNJT5TACHjs.requestAddresses; exports.requestPermissions = _chunkNJT5TACHjs.requestPermissions; exports.sendTransaction = _chunkNJT5TACHjs.sendTransaction; exports.signMessage = _chunkNJT5TACHjs.signMessage; exports.switchChain = _chunkNJT5TACHjs.switchChain; exports.watchAsset = _chunkNJT5TACHjs.watchAsset;
23
23
  //# sourceMappingURL=wallet.js.map
package/dist/wallet.mjs CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  signMessage,
9
9
  switchChain,
10
10
  watchAsset
11
- } from "./chunk-EYQS4UG5.mjs";
11
+ } from "./chunk-GQ3EDBYX.mjs";
12
12
  export {
13
13
  addChain,
14
14
  getAddresses,
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "isomorphic-ws": "^5.0.0",
10
10
  "ws": "^8.12.0"
11
11
  },
12
- "version": "0.1.8",
12
+ "version": "0.1.9",
13
13
  "files": [
14
14
  "/abi",
15
15
  "/dist",
@@ -1,5 +0,0 @@
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
-
5
- export { defineChain as d };
@@ -1 +0,0 @@
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 { ChainDoesNotSupportContract } from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { decodeFunctionResult, encodeFunctionData, toHex } 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 const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n ],\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [],\n },\n ],\n functionName: 'addr',\n args: [namehash(name)],\n }),\n ],\n blockNumber,\n blockTag,\n })\n return decodeFunctionResult({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ name: 'name', type: 'address' }],\n },\n ],\n functionName: 'addr',\n data: res[0],\n })\n}\n","import { PublicClient } from '../../clients'\nimport { panicReasons } from '../../constants'\nimport {\n ChainDoesNotSupportContract,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { toHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, 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 const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n ],\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n })\n return res[0]\n } catch (error) {\n if (\n error instanceof ContractFunctionExecutionError &&\n (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]\n )\n // No primary name set for address.\n return null\n throw error\n }\n}\n"],"mappings":"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","names":["value"]}