viem 2.34.0 → 2.35.0-canary-20250821143721
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +6 -0
- package/_cjs/actions/ens/getEnsAddress.js +9 -6
- package/_cjs/actions/ens/getEnsAddress.js.map +1 -1
- package/_cjs/actions/ens/getEnsName.js +16 -22
- package/_cjs/actions/ens/getEnsName.js.map +1 -1
- package/_cjs/actions/ens/getEnsResolver.js +5 -1
- package/_cjs/actions/ens/getEnsResolver.js.map +1 -1
- package/_cjs/actions/ens/getEnsText.js +2 -2
- package/_cjs/actions/ens/getEnsText.js.map +1 -1
- package/_cjs/actions/public/waitForTransactionReceipt.js +5 -5
- package/_cjs/actions/public/waitForTransactionReceipt.js.map +1 -1
- package/_cjs/chains/definitions/avalanche.js +1 -0
- package/_cjs/chains/definitions/avalanche.js.map +1 -1
- package/_cjs/chains/definitions/berachain.js +3 -2
- package/_cjs/chains/definitions/berachain.js.map +1 -1
- package/_cjs/chains/definitions/berachainBepolia.js +1 -0
- package/_cjs/chains/definitions/berachainBepolia.js.map +1 -1
- package/_cjs/chains/definitions/bsc.js +1 -0
- package/_cjs/chains/definitions/bsc.js.map +1 -1
- package/_cjs/chains/definitions/eduChain.js +6 -0
- package/_cjs/chains/definitions/eduChain.js.map +1 -1
- package/_cjs/chains/definitions/etherlink.js +1 -0
- package/_cjs/chains/definitions/etherlink.js.map +1 -1
- package/_cjs/chains/definitions/hemi.js +1 -0
- package/_cjs/chains/definitions/hemi.js.map +1 -1
- package/_cjs/chains/definitions/holesky.js +2 -6
- package/_cjs/chains/definitions/holesky.js.map +1 -1
- package/_cjs/chains/definitions/linea.js +2 -2
- package/_cjs/chains/definitions/linea.js.map +1 -1
- package/_cjs/chains/definitions/lineaSepolia.js +2 -2
- package/_cjs/chains/definitions/lineaSepolia.js.map +1 -1
- package/_cjs/chains/definitions/mainnet.js +2 -5
- package/_cjs/chains/definitions/mainnet.js.map +1 -1
- package/_cjs/chains/definitions/mantraDuKongEVMTestnet.js +24 -0
- package/_cjs/chains/definitions/mantraDuKongEVMTestnet.js.map +1 -0
- package/_cjs/chains/definitions/megaethTestnet.js +1 -0
- package/_cjs/chains/definitions/megaethTestnet.js.map +1 -1
- package/_cjs/chains/definitions/monadTestnet.js +1 -0
- package/_cjs/chains/definitions/monadTestnet.js.map +1 -1
- package/_cjs/chains/definitions/sepolia.js +2 -3
- package/_cjs/chains/definitions/sepolia.js.map +1 -1
- package/_cjs/chains/definitions/sonic.js +1 -0
- package/_cjs/chains/definitions/sonic.js.map +1 -1
- package/_cjs/chains/index.js +9 -7
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/constants/abis.js +78 -45
- package/_cjs/constants/abis.js.map +1 -1
- package/_cjs/ens/index.js +3 -1
- package/_cjs/ens/index.js.map +1 -1
- package/_cjs/errors/ens.js +9 -1
- package/_cjs/errors/ens.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_cjs/index.js +8 -5
- package/_cjs/index.js.map +1 -1
- package/_cjs/utils/ens/errors.js +6 -9
- package/_cjs/utils/ens/errors.js.map +1 -1
- package/_cjs/utils/ens/toCoinType.js +13 -0
- package/_cjs/utils/ens/toCoinType.js.map +1 -0
- package/_esm/actions/ens/getEnsAddress.js +9 -6
- package/_esm/actions/ens/getEnsAddress.js.map +1 -1
- package/_esm/actions/ens/getEnsName.js +16 -22
- package/_esm/actions/ens/getEnsName.js.map +1 -1
- package/_esm/actions/ens/getEnsResolver.js +5 -1
- package/_esm/actions/ens/getEnsResolver.js.map +1 -1
- package/_esm/actions/ens/getEnsText.js +2 -2
- package/_esm/actions/ens/getEnsText.js.map +1 -1
- package/_esm/actions/public/waitForTransactionReceipt.js +5 -5
- package/_esm/actions/public/waitForTransactionReceipt.js.map +1 -1
- package/_esm/chains/definitions/avalanche.js +1 -0
- package/_esm/chains/definitions/avalanche.js.map +1 -1
- package/_esm/chains/definitions/berachain.js +3 -2
- package/_esm/chains/definitions/berachain.js.map +1 -1
- package/_esm/chains/definitions/berachainBepolia.js +1 -0
- package/_esm/chains/definitions/berachainBepolia.js.map +1 -1
- package/_esm/chains/definitions/bsc.js +1 -0
- package/_esm/chains/definitions/bsc.js.map +1 -1
- package/_esm/chains/definitions/eduChain.js +6 -0
- package/_esm/chains/definitions/eduChain.js.map +1 -1
- package/_esm/chains/definitions/etherlink.js +1 -0
- package/_esm/chains/definitions/etherlink.js.map +1 -1
- package/_esm/chains/definitions/hemi.js +1 -0
- package/_esm/chains/definitions/hemi.js.map +1 -1
- package/_esm/chains/definitions/holesky.js +2 -6
- package/_esm/chains/definitions/holesky.js.map +1 -1
- package/_esm/chains/definitions/linea.js +2 -2
- package/_esm/chains/definitions/linea.js.map +1 -1
- package/_esm/chains/definitions/lineaSepolia.js +2 -2
- package/_esm/chains/definitions/lineaSepolia.js.map +1 -1
- package/_esm/chains/definitions/mainnet.js +2 -5
- package/_esm/chains/definitions/mainnet.js.map +1 -1
- package/_esm/chains/definitions/mantraDuKongEVMTestnet.js +21 -0
- package/_esm/chains/definitions/mantraDuKongEVMTestnet.js.map +1 -0
- package/_esm/chains/definitions/megaethTestnet.js +1 -0
- package/_esm/chains/definitions/megaethTestnet.js.map +1 -1
- package/_esm/chains/definitions/monadTestnet.js +1 -0
- package/_esm/chains/definitions/monadTestnet.js.map +1 -1
- package/_esm/chains/definitions/sepolia.js +2 -3
- package/_esm/chains/definitions/sepolia.js.map +1 -1
- package/_esm/chains/definitions/sonic.js +1 -0
- package/_esm/chains/definitions/sonic.js.map +1 -1
- package/_esm/chains/index.js +1 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/constants/abis.js +78 -45
- package/_esm/constants/abis.js.map +1 -1
- package/_esm/ens/index.js +1 -0
- package/_esm/ens/index.js.map +1 -1
- package/_esm/errors/ens.js +7 -0
- package/_esm/errors/ens.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_esm/index.js +2 -1
- package/_esm/index.js.map +1 -1
- package/_esm/utils/ens/errors.js +6 -11
- package/_esm/utils/ens/errors.js.map +1 -1
- package/_esm/utils/ens/toCoinType.js +17 -0
- package/_esm/utils/ens/toCoinType.js.map +1 -0
- package/_types/actions/ens/getEnsAddress.d.ts +26 -6
- package/_types/actions/ens/getEnsAddress.d.ts.map +1 -1
- package/_types/actions/ens/getEnsName.d.ts +29 -8
- package/_types/actions/ens/getEnsName.d.ts.map +1 -1
- package/_types/actions/ens/getEnsResolver.d.ts.map +1 -1
- package/_types/chains/definitions/avalanche.d.ts +1 -1
- package/_types/chains/definitions/avalanche.d.ts.map +1 -1
- package/_types/chains/definitions/berachain.d.ts +3 -3
- package/_types/chains/definitions/berachain.d.ts.map +1 -1
- package/_types/chains/definitions/berachainBepolia.d.ts +1 -1
- package/_types/chains/definitions/berachainBepolia.d.ts.map +1 -1
- package/_types/chains/definitions/bsc.d.ts +1 -1
- package/_types/chains/definitions/bsc.d.ts.map +1 -1
- package/_types/chains/definitions/eduChain.d.ts +6 -9
- package/_types/chains/definitions/eduChain.d.ts.map +1 -1
- package/_types/chains/definitions/etherlink.d.ts +1 -1
- package/_types/chains/definitions/etherlink.d.ts.map +1 -1
- package/_types/chains/definitions/hemi.d.ts +1 -1
- package/_types/chains/definitions/hemi.d.ts.map +1 -1
- package/_types/chains/definitions/holesky.d.ts +2 -6
- package/_types/chains/definitions/holesky.d.ts.map +1 -1
- package/_types/chains/definitions/linea.d.ts +2 -2
- package/_types/chains/definitions/lineaSepolia.d.ts +2 -2
- package/_types/chains/definitions/mainnet.d.ts +2 -5
- package/_types/chains/definitions/mainnet.d.ts.map +1 -1
- package/_types/chains/definitions/mantraDuKongEVMTestnet.d.ts +39 -0
- package/_types/chains/definitions/mantraDuKongEVMTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/megaethTestnet.d.ts +1 -1
- package/_types/chains/definitions/megaethTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/monadTestnet.d.ts +1 -1
- package/_types/chains/definitions/monadTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/sepolia.d.ts +2 -5
- package/_types/chains/definitions/sepolia.d.ts.map +1 -1
- package/_types/chains/definitions/sonic.d.ts +1 -1
- package/_types/chains/definitions/sonic.d.ts.map +1 -1
- package/_types/chains/index.d.ts +1 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/constants/abis.d.ts +103 -60
- package/_types/constants/abis.d.ts.map +1 -1
- package/_types/ens/index.d.ts +1 -0
- package/_types/ens/index.d.ts.map +1 -1
- package/_types/errors/ens.d.ts +8 -0
- package/_types/errors/ens.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/index.d.ts +2 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/utils/ens/errors.d.ts +1 -1
- package/_types/utils/ens/errors.d.ts.map +1 -1
- package/_types/utils/ens/toCoinType.d.ts +12 -0
- package/_types/utils/ens/toCoinType.d.ts.map +1 -0
- package/actions/ens/getEnsAddress.ts +35 -12
- package/actions/ens/getEnsName.ts +47 -33
- package/actions/ens/getEnsResolver.ts +5 -1
- package/actions/ens/getEnsText.ts +2 -2
- package/actions/public/waitForTransactionReceipt.ts +5 -5
- package/chains/definitions/avalanche.ts +1 -0
- package/chains/definitions/berachain.ts +4 -2
- package/chains/definitions/berachainBepolia.ts +1 -0
- package/chains/definitions/bsc.ts +1 -0
- package/chains/definitions/eduChain.ts +6 -0
- package/chains/definitions/etherlink.ts +1 -0
- package/chains/definitions/hemi.ts +1 -0
- package/chains/definitions/holesky.ts +2 -6
- package/chains/definitions/linea.ts +2 -2
- package/chains/definitions/lineaSepolia.ts +2 -2
- package/chains/definitions/mainnet.ts +2 -5
- package/chains/definitions/mantraDuKongEVMTestnet.ts +21 -0
- package/chains/definitions/megaethTestnet.ts +1 -0
- package/chains/definitions/monadTestnet.ts +1 -0
- package/chains/definitions/sepolia.ts +2 -3
- package/chains/definitions/sonic.ts +1 -0
- package/chains/index.ts +1 -0
- package/constants/abis.ts +79 -46
- package/ens/index.ts +4 -0
- package/errors/ens.ts +14 -0
- package/errors/version.ts +1 -1
- package/index.ts +6 -0
- package/package.json +1 -1
- package/utils/ens/errors.ts +8 -18
- package/utils/ens/toCoinType.ts +23 -0
package/constants/abis.ts
CHANGED
@@ -97,24 +97,53 @@ export const batchGatewayAbi = [
|
|
97
97
|
|
98
98
|
const universalResolverErrors = [
|
99
99
|
{
|
100
|
-
inputs: [
|
101
|
-
|
100
|
+
inputs: [
|
101
|
+
{
|
102
|
+
name: 'dns',
|
103
|
+
type: 'bytes',
|
104
|
+
},
|
105
|
+
],
|
106
|
+
name: 'DNSDecodingFailed',
|
107
|
+
type: 'error',
|
108
|
+
},
|
109
|
+
{
|
110
|
+
inputs: [
|
111
|
+
{
|
112
|
+
name: 'ens',
|
113
|
+
type: 'string',
|
114
|
+
},
|
115
|
+
],
|
116
|
+
name: 'DNSEncodingFailed',
|
102
117
|
type: 'error',
|
103
118
|
},
|
104
119
|
{
|
105
120
|
inputs: [],
|
106
|
-
name: '
|
121
|
+
name: 'EmptyAddress',
|
122
|
+
type: 'error',
|
123
|
+
},
|
124
|
+
{
|
125
|
+
inputs: [
|
126
|
+
{
|
127
|
+
name: 'status',
|
128
|
+
type: 'uint16',
|
129
|
+
},
|
130
|
+
{
|
131
|
+
name: 'message',
|
132
|
+
type: 'string',
|
133
|
+
},
|
134
|
+
],
|
135
|
+
name: 'HttpError',
|
107
136
|
type: 'error',
|
108
137
|
},
|
109
138
|
{
|
110
139
|
inputs: [],
|
111
|
-
name: '
|
140
|
+
name: 'InvalidBatchGatewayResponse',
|
112
141
|
type: 'error',
|
113
142
|
},
|
114
143
|
{
|
115
144
|
inputs: [
|
116
145
|
{
|
117
|
-
name: '
|
146
|
+
name: 'errorData',
|
118
147
|
type: 'bytes',
|
119
148
|
},
|
120
149
|
],
|
@@ -124,42 +153,58 @@ const universalResolverErrors = [
|
|
124
153
|
{
|
125
154
|
inputs: [
|
126
155
|
{
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
name: 'message',
|
134
|
-
type: 'string',
|
135
|
-
},
|
136
|
-
],
|
137
|
-
name: 'errors',
|
138
|
-
type: 'tuple[]',
|
156
|
+
name: 'name',
|
157
|
+
type: 'bytes',
|
158
|
+
},
|
159
|
+
{
|
160
|
+
name: 'resolver',
|
161
|
+
type: 'address',
|
139
162
|
},
|
140
163
|
],
|
141
|
-
name: '
|
164
|
+
name: 'ResolverNotContract',
|
142
165
|
type: 'error',
|
143
166
|
},
|
144
|
-
] as const
|
145
|
-
|
146
|
-
export const universalResolverResolveAbi = [
|
147
|
-
...universalResolverErrors,
|
148
167
|
{
|
149
|
-
name: 'resolve',
|
150
|
-
type: 'function',
|
151
|
-
stateMutability: 'view',
|
152
168
|
inputs: [
|
153
|
-
{
|
154
|
-
|
169
|
+
{
|
170
|
+
name: 'name',
|
171
|
+
type: 'bytes',
|
172
|
+
},
|
155
173
|
],
|
156
|
-
|
157
|
-
|
158
|
-
|
174
|
+
name: 'ResolverNotFound',
|
175
|
+
type: 'error',
|
176
|
+
},
|
177
|
+
{
|
178
|
+
inputs: [
|
179
|
+
{
|
180
|
+
name: 'primary',
|
181
|
+
type: 'string',
|
182
|
+
},
|
183
|
+
{
|
184
|
+
name: 'primaryAddress',
|
185
|
+
type: 'bytes',
|
186
|
+
},
|
159
187
|
],
|
188
|
+
name: 'ReverseAddressMismatch',
|
189
|
+
type: 'error',
|
160
190
|
},
|
161
191
|
{
|
162
|
-
|
192
|
+
inputs: [
|
193
|
+
{
|
194
|
+
internalType: 'bytes4',
|
195
|
+
name: 'selector',
|
196
|
+
type: 'bytes4',
|
197
|
+
},
|
198
|
+
],
|
199
|
+
name: 'UnsupportedResolverProfile',
|
200
|
+
type: 'error',
|
201
|
+
},
|
202
|
+
] as const
|
203
|
+
|
204
|
+
export const universalResolverResolveAbi = [
|
205
|
+
...universalResolverErrors,
|
206
|
+
{
|
207
|
+
name: 'resolveWithGateways',
|
163
208
|
type: 'function',
|
164
209
|
stateMutability: 'view',
|
165
210
|
inputs: [
|
@@ -177,30 +222,18 @@ export const universalResolverResolveAbi = [
|
|
177
222
|
export const universalResolverReverseAbi = [
|
178
223
|
...universalResolverErrors,
|
179
224
|
{
|
180
|
-
name: '
|
181
|
-
type: 'function',
|
182
|
-
stateMutability: 'view',
|
183
|
-
inputs: [{ type: 'bytes', name: 'reverseName' }],
|
184
|
-
outputs: [
|
185
|
-
{ type: 'string', name: 'resolvedName' },
|
186
|
-
{ type: 'address', name: 'resolvedAddress' },
|
187
|
-
{ type: 'address', name: 'reverseResolver' },
|
188
|
-
{ type: 'address', name: 'resolver' },
|
189
|
-
],
|
190
|
-
},
|
191
|
-
{
|
192
|
-
name: 'reverse',
|
225
|
+
name: 'reverseWithGateways',
|
193
226
|
type: 'function',
|
194
227
|
stateMutability: 'view',
|
195
228
|
inputs: [
|
196
229
|
{ type: 'bytes', name: 'reverseName' },
|
230
|
+
{ type: 'uint256', name: 'coinType' },
|
197
231
|
{ type: 'string[]', name: 'gateways' },
|
198
232
|
],
|
199
233
|
outputs: [
|
200
234
|
{ type: 'string', name: 'resolvedName' },
|
201
|
-
{ type: 'address', name: 'resolvedAddress' },
|
202
|
-
{ type: 'address', name: 'reverseResolver' },
|
203
235
|
{ type: 'address', name: 'resolver' },
|
236
|
+
{ type: 'address', name: 'reverseResolver' },
|
204
237
|
],
|
205
238
|
},
|
206
239
|
] as const
|
package/ens/index.ts
CHANGED
@@ -30,6 +30,10 @@ export {
|
|
30
30
|
type GetEnsTextReturnType,
|
31
31
|
getEnsText,
|
32
32
|
} from '../actions/ens/getEnsText.js'
|
33
|
+
export {
|
34
|
+
type ToCoinTypeError,
|
35
|
+
toCoinType,
|
36
|
+
} from '../utils/ens/toCoinType.js'
|
33
37
|
export { type LabelhashErrorType, labelhash } from '../utils/ens/labelhash.js'
|
34
38
|
export { type NamehashErrorType, namehash } from '../utils/ens/namehash.js'
|
35
39
|
export {
|
package/errors/ens.ts
CHANGED
@@ -55,3 +55,17 @@ export class EnsAvatarUnsupportedNamespaceError extends BaseError {
|
|
55
55
|
)
|
56
56
|
}
|
57
57
|
}
|
58
|
+
|
59
|
+
export type EnsInvalidChainIdErrorType = EnsInvalidChainIdError & {
|
60
|
+
name: 'EnsInvalidChainIdError'
|
61
|
+
}
|
62
|
+
export class EnsInvalidChainIdError extends BaseError {
|
63
|
+
constructor({ chainId }: { chainId: number }) {
|
64
|
+
super(
|
65
|
+
`Invalid ENSIP-11 chainId: ${chainId}. Must be between 0 and 0x7fffffff, or 1.`,
|
66
|
+
{
|
67
|
+
name: 'EnsInvalidChainIdError',
|
68
|
+
},
|
69
|
+
)
|
70
|
+
}
|
71
|
+
}
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.
|
1
|
+
export const version = '2.35.0-canary-20250821143721'
|
package/index.ts
CHANGED
@@ -901,6 +901,8 @@ export {
|
|
901
901
|
EnsAvatarUnsupportedNamespaceError,
|
902
902
|
type EnsAvatarUnsupportedNamespaceErrorType,
|
903
903
|
type EnsAvatarUriResolutionErrorType,
|
904
|
+
EnsInvalidChainIdError,
|
905
|
+
type EnsInvalidChainIdErrorType,
|
904
906
|
} from './errors/ens.js'
|
905
907
|
export {
|
906
908
|
type InvalidDecimalNumberErrorType,
|
@@ -1229,6 +1231,10 @@ export type {
|
|
1229
1231
|
StateMapping,
|
1230
1232
|
StateOverride,
|
1231
1233
|
} from './types/stateOverride.js'
|
1234
|
+
export {
|
1235
|
+
toCoinType,
|
1236
|
+
type ToCoinTypeError,
|
1237
|
+
} from './utils/ens/toCoinType.js'
|
1232
1238
|
export { labelhash, type LabelhashErrorType } from './utils/ens/labelhash.js'
|
1233
1239
|
export { namehash, type NamehashErrorType } from './utils/ens/namehash.js'
|
1234
1240
|
export {
|
package/package.json
CHANGED
package/utils/ens/errors.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import { panicReasons } from '../../constants/solidity.js'
|
2
1
|
import { BaseError } from '../../errors/base.js'
|
3
2
|
import { ContractFunctionRevertedError } from '../../errors/contract.js'
|
4
3
|
import type { ErrorType } from '../../errors/utils.js'
|
@@ -9,26 +8,17 @@ export type IsNullUniversalResolverErrorErrorType = ErrorType
|
|
9
8
|
/*
|
10
9
|
* @description Checks if error is a valid null result UniversalResolver error
|
11
10
|
*/
|
12
|
-
export function isNullUniversalResolverError(
|
13
|
-
err: unknown,
|
14
|
-
callType: 'resolve' | 'reverse',
|
15
|
-
): boolean {
|
11
|
+
export function isNullUniversalResolverError(err: unknown): boolean {
|
16
12
|
if (!(err instanceof BaseError)) return false
|
17
13
|
const cause = err.walk((e) => e instanceof ContractFunctionRevertedError)
|
18
14
|
if (!(cause instanceof ContractFunctionRevertedError)) return false
|
19
|
-
|
20
|
-
if (cause.data?.errorName === 'ResolverWildcardNotSupported') return true
|
21
|
-
if (cause.data?.errorName === 'ResolverNotContract') return true
|
22
|
-
if (cause.data?.errorName === 'ResolverError') return true
|
15
|
+
|
23
16
|
if (cause.data?.errorName === 'HttpError') return true
|
24
|
-
|
25
|
-
if (
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
return true
|
31
|
-
// No primary name set for address.
|
32
|
-
if (callType === 'reverse' && cause.reason === panicReasons[50]) return true
|
17
|
+
if (cause.data?.errorName === 'ResolverError') return true
|
18
|
+
if (cause.data?.errorName === 'ResolverNotContract') return true
|
19
|
+
if (cause.data?.errorName === 'ResolverNotFound') return true
|
20
|
+
if (cause.data?.errorName === 'ReverseAddressMismatch') return true
|
21
|
+
if (cause.data?.errorName === 'UnsupportedResolverProfile') return true
|
22
|
+
|
33
23
|
return false
|
34
24
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
EnsInvalidChainIdError,
|
3
|
+
type EnsInvalidChainIdErrorType,
|
4
|
+
} from '../../errors/ens.js'
|
5
|
+
import type { ErrorType } from '../../errors/utils.js'
|
6
|
+
|
7
|
+
export type ToCoinTypeError = EnsInvalidChainIdErrorType | ErrorType
|
8
|
+
|
9
|
+
const SLIP44_MSB = 0x80000000
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @description Converts a chainId to a ENSIP-9 compliant coinType
|
13
|
+
*
|
14
|
+
* @example
|
15
|
+
* toCoinType(10)
|
16
|
+
* 2147483658n
|
17
|
+
*/
|
18
|
+
export function toCoinType(chainId: number): bigint {
|
19
|
+
if (chainId === 1) return 60n
|
20
|
+
if (chainId >= SLIP44_MSB || chainId < 0)
|
21
|
+
throw new EnsInvalidChainIdError({ chainId })
|
22
|
+
return BigInt((0x80000000 | chainId) >>> 0)
|
23
|
+
}
|