viem 0.0.0-w-20230810183250 → 0.0.0-w-20230816150015

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 (156) hide show
  1. package/dist/cjs/actions/getContract.js.map +1 -1
  2. package/dist/cjs/actions/public/multicall.js +3 -4
  3. package/dist/cjs/actions/public/multicall.js.map +1 -1
  4. package/dist/cjs/actions/public/readContract.js +2 -1
  5. package/dist/cjs/actions/public/readContract.js.map +1 -1
  6. package/dist/cjs/actions/wallet/writeContract.js +2 -1
  7. package/dist/cjs/actions/wallet/writeContract.js.map +1 -1
  8. package/dist/cjs/chains/index.js +2 -1
  9. package/dist/cjs/chains/index.js.map +1 -1
  10. package/dist/cjs/clients/decorators/public.js.map +1 -1
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/utils/abi/decodeAbiParameters.js.map +1 -1
  13. package/dist/cjs/utils/abi/decodeDeployData.js.map +1 -1
  14. package/dist/cjs/utils/abi/decodeErrorResult.js.map +1 -1
  15. package/dist/cjs/utils/abi/decodeFunctionResult.js.map +1 -1
  16. package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
  17. package/dist/cjs/utils/abi/encodeDeployData.js.map +1 -1
  18. package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
  19. package/dist/cjs/utils/abi/encodePacked.js.map +1 -1
  20. package/dist/cjs/utils/poll.js +1 -1
  21. package/dist/cjs/utils/poll.js.map +1 -1
  22. package/dist/cjs/utils/typedData.js +2 -2
  23. package/dist/cjs/utils/typedData.js.map +1 -1
  24. package/dist/cjs/version.js +1 -1
  25. package/dist/esm/actions/getContract.js.map +1 -1
  26. package/dist/esm/actions/public/multicall.js +3 -5
  27. package/dist/esm/actions/public/multicall.js.map +1 -1
  28. package/dist/esm/actions/public/readContract.js +2 -1
  29. package/dist/esm/actions/public/readContract.js.map +1 -1
  30. package/dist/esm/actions/wallet/writeContract.js +2 -1
  31. package/dist/esm/actions/wallet/writeContract.js.map +1 -1
  32. package/dist/esm/chains/index.js +1 -0
  33. package/dist/esm/chains/index.js.map +1 -1
  34. package/dist/esm/clients/decorators/public.js.map +1 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/utils/abi/decodeAbiParameters.js.map +1 -1
  37. package/dist/esm/utils/abi/decodeDeployData.js.map +1 -1
  38. package/dist/esm/utils/abi/decodeErrorResult.js.map +1 -1
  39. package/dist/esm/utils/abi/decodeFunctionResult.js.map +1 -1
  40. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  41. package/dist/esm/utils/abi/encodeDeployData.js.map +1 -1
  42. package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
  43. package/dist/esm/utils/abi/encodePacked.js.map +1 -1
  44. package/dist/esm/utils/poll.js +1 -1
  45. package/dist/esm/utils/poll.js.map +1 -1
  46. package/dist/esm/utils/typedData.js +2 -2
  47. package/dist/esm/utils/typedData.js.map +1 -1
  48. package/dist/esm/version.js +1 -1
  49. package/dist/types/actions/getContract.d.ts +5 -5
  50. package/dist/types/actions/getContract.d.ts.map +1 -1
  51. package/dist/types/actions/public/createContractEventFilter.d.ts +3 -3
  52. package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
  53. package/dist/types/actions/public/createEventFilter.d.ts +5 -5
  54. package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
  55. package/dist/types/actions/public/estimateContractGas.d.ts +1 -1
  56. package/dist/types/actions/public/estimateContractGas.d.ts.map +1 -1
  57. package/dist/types/actions/public/getFilterChanges.d.ts +1 -1
  58. package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
  59. package/dist/types/actions/public/getFilterLogs.d.ts +1 -1
  60. package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
  61. package/dist/types/actions/public/getLogs.d.ts +4 -4
  62. package/dist/types/actions/public/getLogs.d.ts.map +1 -1
  63. package/dist/types/actions/public/multicall.d.ts +14 -11
  64. package/dist/types/actions/public/multicall.d.ts.map +1 -1
  65. package/dist/types/actions/public/readContract.d.ts +4 -4
  66. package/dist/types/actions/public/readContract.d.ts.map +1 -1
  67. package/dist/types/actions/public/simulateContract.d.ts +1 -1
  68. package/dist/types/actions/public/simulateContract.d.ts.map +1 -1
  69. package/dist/types/actions/public/watchContractEvent.d.ts +3 -3
  70. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  71. package/dist/types/actions/public/watchEvent.d.ts +4 -4
  72. package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
  73. package/dist/types/actions/wallet/deployContract.d.ts +3 -3
  74. package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
  75. package/dist/types/actions/wallet/writeContract.d.ts +4 -4
  76. package/dist/types/actions/wallet/writeContract.d.ts.map +1 -1
  77. package/dist/types/chains/index.d.ts +154 -36
  78. package/dist/types/chains/index.d.ts.map +1 -1
  79. package/dist/types/clients/decorators/public.d.ts +11 -11
  80. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  81. package/dist/types/clients/decorators/wallet.d.ts +3 -3
  82. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  83. package/dist/types/index.d.ts +2 -2
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/types/contract.d.ts +13 -2
  86. package/dist/types/types/contract.d.ts.map +1 -1
  87. package/dist/types/types/multicall.d.ts +35 -35
  88. package/dist/types/types/multicall.d.ts.map +1 -1
  89. package/dist/types/types/typedData.d.ts +1 -1
  90. package/dist/types/types/typedData.d.ts.map +1 -1
  91. package/dist/types/utils/abi/decodeAbiParameters.d.ts +2 -2
  92. package/dist/types/utils/abi/decodeAbiParameters.d.ts.map +1 -1
  93. package/dist/types/utils/abi/decodeDeployData.d.ts +3 -3
  94. package/dist/types/utils/abi/decodeDeployData.d.ts.map +1 -1
  95. package/dist/types/utils/abi/decodeErrorResult.d.ts +3 -3
  96. package/dist/types/utils/abi/decodeErrorResult.d.ts.map +1 -1
  97. package/dist/types/utils/abi/decodeEventLog.d.ts +3 -3
  98. package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
  99. package/dist/types/utils/abi/decodeFunctionResult.d.ts +4 -4
  100. package/dist/types/utils/abi/decodeFunctionResult.d.ts.map +1 -1
  101. package/dist/types/utils/abi/encodeAbiParameters.d.ts +2 -2
  102. package/dist/types/utils/abi/encodeAbiParameters.d.ts.map +1 -1
  103. package/dist/types/utils/abi/encodeDeployData.d.ts +3 -3
  104. package/dist/types/utils/abi/encodeDeployData.d.ts.map +1 -1
  105. package/dist/types/utils/abi/encodeErrorResult.d.ts +4 -4
  106. package/dist/types/utils/abi/encodeErrorResult.d.ts.map +1 -1
  107. package/dist/types/utils/abi/encodeEventTopics.d.ts +4 -4
  108. package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
  109. package/dist/types/utils/abi/encodeFunctionData.d.ts +4 -4
  110. package/dist/types/utils/abi/encodeFunctionData.d.ts.map +1 -1
  111. package/dist/types/utils/abi/encodeFunctionResult.d.ts +4 -4
  112. package/dist/types/utils/abi/encodeFunctionResult.d.ts.map +1 -1
  113. package/dist/types/utils/abi/encodePacked.d.ts +3 -3
  114. package/dist/types/utils/abi/encodePacked.d.ts.map +1 -1
  115. package/dist/types/utils/abi/getAbiItem.d.ts +3 -3
  116. package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
  117. package/dist/types/utils/typedData.d.ts.map +1 -1
  118. package/dist/types/version.d.ts +1 -1
  119. package/package.json +2 -2
  120. package/src/actions/getContract.ts +6 -5
  121. package/src/actions/public/createContractEventFilter.ts +3 -3
  122. package/src/actions/public/createEventFilter.ts +6 -6
  123. package/src/actions/public/estimateContractGas.ts +1 -1
  124. package/src/actions/public/getFilterChanges.ts +1 -1
  125. package/src/actions/public/getFilterLogs.ts +1 -1
  126. package/src/actions/public/getLogs.ts +5 -5
  127. package/src/actions/public/multicall.ts +41 -27
  128. package/src/actions/public/readContract.ts +19 -21
  129. package/src/actions/public/simulateContract.ts +1 -1
  130. package/src/actions/public/watchContractEvent.ts +3 -3
  131. package/src/actions/public/watchEvent.ts +5 -5
  132. package/src/actions/wallet/deployContract.ts +3 -3
  133. package/src/actions/wallet/writeContract.ts +35 -37
  134. package/src/chains/index.ts +1 -0
  135. package/src/clients/decorators/public.ts +20 -15
  136. package/src/clients/decorators/wallet.ts +3 -3
  137. package/src/index.ts +3 -0
  138. package/src/types/contract.ts +56 -2
  139. package/src/types/multicall.ts +84 -75
  140. package/src/types/typedData.ts +2 -1
  141. package/src/utils/abi/decodeAbiParameters.ts +7 -8
  142. package/src/utils/abi/decodeDeployData.ts +3 -3
  143. package/src/utils/abi/decodeErrorResult.ts +3 -8
  144. package/src/utils/abi/decodeEventLog.ts +3 -3
  145. package/src/utils/abi/decodeFunctionResult.ts +4 -6
  146. package/src/utils/abi/encodeAbiParameters.ts +8 -9
  147. package/src/utils/abi/encodeDeployData.ts +3 -3
  148. package/src/utils/abi/encodeErrorResult.ts +4 -4
  149. package/src/utils/abi/encodeEventTopics.ts +4 -9
  150. package/src/utils/abi/encodeFunctionData.ts +4 -4
  151. package/src/utils/abi/encodeFunctionResult.ts +4 -4
  152. package/src/utils/abi/encodePacked.ts +6 -8
  153. package/src/utils/abi/getAbiItem.ts +3 -3
  154. package/src/utils/poll.ts +1 -1
  155. package/src/utils/typedData.ts +1 -2
  156. package/src/version.ts +1 -1
@@ -1,105 +1,114 @@
1
- import type { Abi } from 'abitype'
1
+ import type { Abi, AbiStateMutability, ExtractAbiFunctionNames } from 'abitype'
2
2
 
3
- import type {
4
- ContractFunctionConfig,
5
- ContractFunctionResult,
6
- } from './contract.js'
3
+ import type { ContractParameters, ContractReturnType } from './contract.js'
7
4
 
5
+ // Avoid TS depth-limit error in case of large array literal
8
6
  type MAXIMUM_DEPTH = 20
9
7
 
10
- type Contract<
11
- TAbi extends Abi | readonly unknown[] = Abi | readonly unknown[],
12
- TFunctionName extends string = string,
13
- > = { abi: TAbi; functionName: TFunctionName }
8
+ export type MulticallContract<
9
+ abi extends Abi | readonly unknown[] = Abi | readonly unknown[],
10
+ stateMutability extends AbiStateMutability = AbiStateMutability,
11
+ functionName extends ExtractAbiFunctionNames<
12
+ abi extends Abi ? abi : Abi,
13
+ stateMutability
14
+ > = string,
15
+ > = { abi: abi; functionName: functionName }
14
16
 
15
17
  export type MulticallContracts<
16
- TContracts extends Contract[],
17
- TProperties extends Record<string, any> = object,
18
- Result extends any[] = [],
19
- Depth extends readonly number[] = [],
20
- > = Depth['length'] extends MAXIMUM_DEPTH
21
- ? (ContractFunctionConfig & TProperties)[]
22
- : TContracts extends []
18
+ contracts extends readonly MulticallContract[],
19
+ properties extends Record<string, any> = object,
20
+ ///
21
+ result extends any[] = [],
22
+ depth extends readonly number[] = [],
23
+ > = depth['length'] extends MAXIMUM_DEPTH
24
+ ? (ContractParameters & properties)[]
25
+ : contracts extends []
23
26
  ? []
24
- : TContracts extends [infer Head extends Contract]
27
+ : contracts extends [infer head extends MulticallContract]
25
28
  ? [
26
- ...Result,
27
- ContractFunctionConfig<Head['abi'], Head['functionName']> & TProperties,
29
+ ...result,
30
+ ContractParameters<head['abi'], 'pure' | 'view', head['functionName']> &
31
+ properties,
28
32
  ]
29
- : TContracts extends [
30
- infer Head extends Contract,
31
- ...infer Tail extends Contract[],
33
+ : contracts extends [
34
+ infer head extends MulticallContract,
35
+ ...infer tail extends readonly MulticallContract[],
32
36
  ]
33
37
  ? MulticallContracts<
34
- [...Tail],
35
- TProperties,
38
+ [...tail],
39
+ properties,
36
40
  [
37
- ...Result,
38
- ContractFunctionConfig<Head['abi'], Head['functionName']> & TProperties,
41
+ ...result,
42
+ ContractParameters<head['abi'], 'pure' | 'view', head['functionName']> &
43
+ properties,
39
44
  ],
40
- [...Depth, 1]
45
+ [...depth, 1]
41
46
  >
42
- : unknown[] extends TContracts
43
- ? TContracts
44
- : // If `TContracts` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
47
+ : unknown[] extends contracts
48
+ ? contracts
49
+ : // If `contracts` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
45
50
  // use this to infer the param types in the case of Array.map() argument
46
- TContracts extends ContractFunctionConfig<infer TAbi, infer TFunctionName>[]
47
- ? (ContractFunctionConfig<TAbi, TFunctionName> & TProperties)[]
48
- : (ContractFunctionConfig & TProperties)[]
49
-
50
- export type MulticallResult<
51
- Result,
52
- TAllowFailure extends boolean = true,
53
- > = TAllowFailure extends true
54
- ?
55
- | {
56
- error?: undefined
57
- result: Result
58
- status: 'success'
59
- }
60
- | {
61
- error: Error
62
- result?: undefined
63
- status: 'failure'
64
- }
65
- : Result
51
+ contracts extends ContractParameters<infer abi, infer _, infer functionName>[]
52
+ ? (ContractParameters<abi, 'pure' | 'view', functionName> & properties)[]
53
+ : // Fallback
54
+ (ContractParameters & properties)[]
66
55
 
67
56
  export type MulticallResults<
68
- TContracts extends Contract[],
69
- TAllowFailure extends boolean = true,
70
- Result extends any[] = [],
71
- Depth extends readonly number[] = [],
72
- > = Depth['length'] extends MAXIMUM_DEPTH
73
- ? MulticallResult<ContractFunctionResult, TAllowFailure>[]
74
- : TContracts extends []
57
+ contracts extends readonly MulticallContract[],
58
+ allowFailure extends boolean = true,
59
+ ///
60
+ result extends any[] = [],
61
+ depth extends readonly number[] = [],
62
+ > = depth['length'] extends MAXIMUM_DEPTH
63
+ ? MulticallResult<ContractReturnType, allowFailure>[]
64
+ : contracts extends []
75
65
  ? []
76
- : TContracts extends [infer Head extends Contract]
66
+ : contracts extends [infer head extends MulticallContract]
77
67
  ? [
78
- ...Result,
68
+ ...result,
79
69
  MulticallResult<
80
- ContractFunctionResult<Head['abi'], Head['functionName']>,
81
- TAllowFailure
70
+ ContractReturnType<head['abi'], 'pure' | 'view', head['functionName']>,
71
+ allowFailure
82
72
  >,
83
73
  ]
84
- : TContracts extends [
85
- infer Head extends Contract,
86
- ...infer Tail extends Contract[],
74
+ : contracts extends [
75
+ infer head extends MulticallContract,
76
+ ...infer tail extends readonly MulticallContract[],
87
77
  ]
88
78
  ? MulticallResults<
89
- [...Tail],
90
- TAllowFailure,
79
+ [...tail],
80
+ allowFailure,
91
81
  [
92
- ...Result,
82
+ ...result,
93
83
  MulticallResult<
94
- ContractFunctionResult<Head['abi'], Head['functionName']>,
95
- TAllowFailure
84
+ ContractReturnType<
85
+ head['abi'],
86
+ 'pure' | 'view',
87
+ head['functionName']
88
+ >,
89
+ allowFailure
96
90
  >,
97
91
  ],
98
- [...Depth, 1]
92
+ [...depth, 1]
99
93
  >
100
- : TContracts extends ContractFunctionConfig<infer TAbi, infer TFunctionName>[]
101
- ? MulticallResult<
102
- ContractFunctionResult<TAbi, TFunctionName>,
103
- TAllowFailure
94
+ : contracts extends ContractParameters<
95
+ infer abi,
96
+ infer _,
97
+ infer functionName
98
+ >[]
99
+ ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results
100
+ MulticallResult<
101
+ ContractReturnType<abi, 'pure' | 'view', functionName>,
102
+ allowFailure
104
103
  >[]
105
- : MulticallResult<ContractFunctionResult, TAllowFailure>[]
104
+ : // Fallback
105
+ MulticallResult<ContractReturnType, allowFailure>[]
106
+
107
+ export type MulticallResult<
108
+ result,
109
+ allowFailure extends boolean = true,
110
+ > = allowFailure extends true
111
+ ?
112
+ | { error?: undefined; result: result; status: 'success' }
113
+ | { error: Error; result?: undefined; status: 'failure' }
114
+ : result
@@ -1,10 +1,11 @@
1
- import type { Prettify } from './utils.js'
2
1
  import type {
3
2
  TypedData,
4
3
  TypedDataDomain,
5
4
  TypedDataToPrimitiveTypes,
6
5
  } from 'abitype'
7
6
 
7
+ import type { Prettify } from './utils.js'
8
+
8
9
  export type TypedDataDefinition<
9
10
  typedData extends TypedData | Record<string, unknown> = TypedData,
10
11
  primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
@@ -2,7 +2,6 @@ import type {
2
2
  AbiParameter,
3
3
  AbiParameterToPrimitiveType,
4
4
  AbiParametersToPrimitiveTypes,
5
- Narrow,
6
5
  } from 'abitype'
7
6
 
8
7
  import {
@@ -33,8 +32,8 @@ export type DecodeAbiParametersReturnType<
33
32
  >
34
33
 
35
34
  export function decodeAbiParameters<
36
- TParams extends readonly AbiParameter[] | readonly unknown[],
37
- >(params: Narrow<TParams>, data: Hex): DecodeAbiParametersReturnType<TParams> {
35
+ const TParams extends readonly AbiParameter[] | readonly unknown[],
36
+ >(params: TParams, data: Hex): DecodeAbiParametersReturnType<TParams> {
38
37
  if (data === '0x' && (params as unknown[]).length > 0)
39
38
  throw new AbiDecodingZeroDataError()
40
39
  if (size(data) && size(data) < 32)
@@ -53,7 +52,7 @@ export function decodeAbiParameters<
53
52
 
54
53
  type TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }
55
54
 
56
- function decodeParams<TParams extends readonly AbiParameter[]>({
55
+ function decodeParams<const TParams extends readonly AbiParameter[]>({
57
56
  data,
58
57
  params,
59
58
  }: { data: Hex; params: TParams }) {
@@ -126,7 +125,7 @@ function decodeAddress(value: Hex) {
126
125
  return { consumed: 32, value: checksumAddress(slice(value, -20)) }
127
126
  }
128
127
 
129
- function decodeArray<TParam extends AbiParameter>(
128
+ function decodeArray<const TParam extends AbiParameter>(
130
129
  data: Hex,
131
130
  {
132
131
  param,
@@ -211,7 +210,7 @@ function decodeBool(value: Hex) {
211
210
  return { consumed: 32, value: hexToBool(value) }
212
211
  }
213
212
 
214
- function decodeBytes<TParam extends AbiParameter>(
213
+ function decodeBytes<const TParam extends AbiParameter>(
215
214
  data: Hex,
216
215
  { param, position }: { param: TParam; position: number },
217
216
  ) {
@@ -239,7 +238,7 @@ function decodeBytes<TParam extends AbiParameter>(
239
238
  return { consumed: 32, value }
240
239
  }
241
240
 
242
- function decodeNumber<TParam extends AbiParameter>(
241
+ function decodeNumber<const TParam extends AbiParameter>(
243
242
  value: Hex,
244
243
  { param }: { param: TParam },
245
244
  ) {
@@ -268,7 +267,7 @@ function decodeString(data: Hex, { position }: { position: number }) {
268
267
  }
269
268
 
270
269
  function decodeTuple<
271
- TParam extends AbiParameter & { components: readonly AbiParameter[] },
270
+ const TParam extends AbiParameter & { components: readonly AbiParameter[] },
272
271
  >(data: Hex, { param, position }: { param: TParam; position: number }) {
273
272
  // Tuples can have unnamed components (i.e. they are arrays), so we must
274
273
  // determine whether the tuple is named or unnamed. In the case of a named
@@ -1,4 +1,4 @@
1
- import type { Abi, Narrow } from 'abitype'
1
+ import type { Abi } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiConstructorNotFoundError,
@@ -14,7 +14,7 @@ const docsPath = '/docs/contract/decodeDeployData'
14
14
  export type DecodeDeployDataParameters<
15
15
  TAbi extends Abi | readonly unknown[] = Abi,
16
16
  > = {
17
- abi: Narrow<TAbi>
17
+ abi: TAbi
18
18
  bytecode: Hex
19
19
  data: Hex
20
20
  }
@@ -24,7 +24,7 @@ export type DecodeDeployDataReturnType<
24
24
  bytecode: Hex
25
25
  } & GetConstructorArgs<TAbi>
26
26
 
27
- export function decodeDeployData<TAbi extends Abi | readonly unknown[]>({
27
+ export function decodeDeployData<const TAbi extends Abi | readonly unknown[]>({
28
28
  abi,
29
29
  bytecode,
30
30
  data,
@@ -1,9 +1,4 @@
1
- import type {
2
- Abi,
3
- ExtractAbiError,
4
- ExtractAbiErrorNames,
5
- Narrow,
6
- } from 'abitype'
1
+ import type { Abi, ExtractAbiError, ExtractAbiErrorNames } from 'abitype'
7
2
 
8
3
  import { solidityError, solidityPanic } from '../../constants/solidity.js'
9
4
  import {
@@ -20,7 +15,7 @@ import { formatAbiItem } from './formatAbiItem.js'
20
15
 
21
16
  export type DecodeErrorResultParameters<
22
17
  TAbi extends Abi | readonly unknown[] = Abi,
23
- > = { abi?: Narrow<TAbi>; data: Hex }
18
+ > = { abi?: TAbi; data: Hex }
24
19
 
25
20
  export type DecodeErrorResultReturnType<
26
21
  TAbi extends Abi | readonly unknown[] = Abi,
@@ -37,7 +32,7 @@ export type DecodeErrorResultReturnType<
37
32
  }
38
33
  }[_ErrorNames]
39
34
 
40
- export function decodeErrorResult<TAbi extends Abi | readonly unknown[]>({
35
+ export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>({
41
36
  abi,
42
37
  data,
43
38
  }: DecodeErrorResultParameters<TAbi>): DecodeErrorResultReturnType<TAbi> {
@@ -1,4 +1,4 @@
1
- import type { Abi, AbiParameter, ExtractAbiEventNames, Narrow } from 'abitype'
1
+ import type { Abi, AbiParameter, ExtractAbiEventNames } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiDecodingDataSizeTooSmallError,
@@ -26,7 +26,7 @@ export type DecodeEventLogParameters<
26
26
  TData extends Hex | undefined = undefined,
27
27
  TStrict extends boolean = true,
28
28
  > = {
29
- abi: Narrow<TAbi>
29
+ abi: TAbi
30
30
  data?: TData
31
31
  eventName?: InferEventName<TAbi, TEventName>
32
32
  strict?: TStrict
@@ -61,7 +61,7 @@ export type DecodeEventLogReturnType<
61
61
  const docsPath = '/docs/contract/decodeEventLog'
62
62
 
63
63
  export function decodeEventLog<
64
- TAbi extends Abi | readonly unknown[],
64
+ const TAbi extends Abi | readonly unknown[],
65
65
  TEventName extends string | undefined = undefined,
66
66
  TTopics extends Hex[] = Hex[],
67
67
  TData extends Hex | undefined = undefined,
@@ -1,4 +1,4 @@
1
- import type { Abi, ExtractAbiFunctionNames, Narrow } from 'abitype'
1
+ import type { Abi, ExtractAbiFunctionNames } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiFunctionNotFoundError,
@@ -25,11 +25,9 @@ export type DecodeFunctionResultParameters<
25
25
  functionName?: _FunctionName
26
26
  data: Hex
27
27
  } & (TFunctionName extends string
28
- ? { abi: Narrow<TAbi> } & Partial<GetFunctionArgs<TAbi, TFunctionName>>
28
+ ? { abi: TAbi } & Partial<GetFunctionArgs<TAbi, TFunctionName>>
29
29
  : _FunctionName extends string
30
- ? { abi: [Narrow<TAbi[number]>] } & Partial<
31
- GetFunctionArgs<TAbi, _FunctionName>
32
- >
30
+ ? { abi: [TAbi[number]] } & Partial<GetFunctionArgs<TAbi, _FunctionName>>
33
31
  : never)
34
32
 
35
33
  export type DecodeFunctionResultReturnType<
@@ -45,7 +43,7 @@ export type DecodeFunctionResultReturnType<
45
43
  : ContractFunctionResult<TAbi, _FunctionName>
46
44
 
47
45
  export function decodeFunctionResult<
48
- TAbi extends Abi | readonly unknown[],
46
+ const TAbi extends Abi | readonly unknown[],
49
47
  TFunctionName extends string | undefined = undefined,
50
48
  >({
51
49
  abi,
@@ -2,7 +2,6 @@ import type {
2
2
  AbiParameter,
3
3
  AbiParameterToPrimitiveType,
4
4
  AbiParametersToPrimitiveTypes,
5
- Narrow,
6
5
  } from 'abitype'
7
6
 
8
7
  import {
@@ -27,9 +26,9 @@ export type EncodeAbiParametersReturnType = Hex
27
26
  * @description Encodes a list of primitive values into an ABI-encoded hex value.
28
27
  */
29
28
  export function encodeAbiParameters<
30
- TParams extends readonly AbiParameter[] | readonly unknown[],
29
+ const TParams extends readonly AbiParameter[] | readonly unknown[],
31
30
  >(
32
- params: Narrow<TParams>,
31
+ params: TParams,
33
32
  values: TParams extends readonly AbiParameter[]
34
33
  ? AbiParametersToPrimitiveTypes<TParams>
35
34
  : never,
@@ -56,11 +55,11 @@ type PreparedParam = { dynamic: boolean; encoded: Hex }
56
55
  type TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }
57
56
  type Tuple = AbiParameterToPrimitiveType<TupleAbiParameter>
58
57
 
59
- function prepareParams<TParams extends readonly AbiParameter[]>({
58
+ function prepareParams<const TParams extends readonly AbiParameter[]>({
60
59
  params,
61
60
  values,
62
61
  }: {
63
- params: Narrow<TParams>
62
+ params: TParams
64
63
  values: AbiParametersToPrimitiveTypes<TParams>
65
64
  }) {
66
65
  const preparedParams: PreparedParam[] = []
@@ -70,7 +69,7 @@ function prepareParams<TParams extends readonly AbiParameter[]>({
70
69
  return preparedParams
71
70
  }
72
71
 
73
- function prepareParam<TParam extends AbiParameter>({
72
+ function prepareParam<const TParam extends AbiParameter>({
74
73
  param,
75
74
  value,
76
75
  }: {
@@ -145,7 +144,7 @@ function encodeAddress(value: Hex): PreparedParam {
145
144
  return { dynamic: false, encoded: padHex(value.toLowerCase() as Hex) }
146
145
  }
147
146
 
148
- function encodeArray<TParam extends AbiParameter>(
147
+ function encodeArray<const TParam extends AbiParameter>(
149
148
  value: AbiParameterToPrimitiveType<TParam>,
150
149
  {
151
150
  length,
@@ -190,7 +189,7 @@ function encodeArray<TParam extends AbiParameter>(
190
189
  }
191
190
  }
192
191
 
193
- function encodeBytes<TParam extends AbiParameter>(
192
+ function encodeBytes<const TParam extends AbiParameter>(
194
193
  value: Hex,
195
194
  { param }: { param: TParam },
196
195
  ): PreparedParam {
@@ -256,7 +255,7 @@ function encodeString(value: string): PreparedParam {
256
255
  }
257
256
 
258
257
  function encodeTuple<
259
- TParam extends AbiParameter & { components: readonly AbiParameter[] },
258
+ const TParam extends AbiParameter & { components: readonly AbiParameter[] },
260
259
  >(
261
260
  value: AbiParameterToPrimitiveType<TParam>,
262
261
  { param }: { param: TParam },
@@ -1,4 +1,4 @@
1
- import type { Abi, Narrow } from 'abitype'
1
+ import type { Abi } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiConstructorNotFoundError,
@@ -15,11 +15,11 @@ const docsPath = '/docs/contract/encodeDeployData'
15
15
  export type EncodeDeployDataParameters<
16
16
  TAbi extends Abi | readonly unknown[] = Abi,
17
17
  > = {
18
- abi: Narrow<TAbi>
18
+ abi: TAbi
19
19
  bytecode: Hex
20
20
  } & GetConstructorArgs<TAbi>
21
21
 
22
- export function encodeDeployData<TAbi extends Abi | readonly unknown[]>({
22
+ export function encodeDeployData<const TAbi extends Abi | readonly unknown[]>({
23
23
  abi,
24
24
  args,
25
25
  bytecode,
@@ -1,4 +1,4 @@
1
- import type { Abi, Narrow } from 'abitype'
1
+ import type { Abi } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiErrorInputsNotFoundError,
@@ -26,13 +26,13 @@ export type EncodeErrorResultParameters<
26
26
  > = {
27
27
  errorName?: _ErrorName
28
28
  } & (TErrorName extends string
29
- ? { abi: Narrow<TAbi> } & GetErrorArgs<TAbi, TErrorName>
29
+ ? { abi: TAbi } & GetErrorArgs<TAbi, TErrorName>
30
30
  : _ErrorName extends string
31
- ? { abi: [Narrow<TAbi[number]>] } & GetErrorArgs<TAbi, _ErrorName>
31
+ ? { abi: [TAbi[number]] } & GetErrorArgs<TAbi, _ErrorName>
32
32
  : never)
33
33
 
34
34
  export function encodeErrorResult<
35
- TAbi extends Abi | readonly unknown[],
35
+ const TAbi extends Abi | readonly unknown[],
36
36
  TErrorName extends string | undefined = undefined,
37
37
  >({ abi, errorName, args }: EncodeErrorResultParameters<TAbi, TErrorName>) {
38
38
  let abiItem = abi[0] as AbiItem
@@ -1,9 +1,4 @@
1
- import type {
2
- Abi,
3
- AbiParameter,
4
- AbiParameterToPrimitiveType,
5
- Narrow,
6
- } from 'abitype'
1
+ import type { Abi, AbiParameter, AbiParameterToPrimitiveType } from 'abitype'
7
2
 
8
3
  import { AbiEventNotFoundError } from '../../errors/abi.js'
9
4
  import { FilterTypeNotSupportedError } from '../../errors/log.js'
@@ -29,13 +24,13 @@ export type EncodeEventTopicsParameters<
29
24
  > = {
30
25
  eventName?: _EventName
31
26
  } & (TEventName extends string
32
- ? { abi: Narrow<TAbi>; args?: GetEventArgs<TAbi, TEventName> }
27
+ ? { abi: TAbi; args?: GetEventArgs<TAbi, TEventName> }
33
28
  : _EventName extends string
34
- ? { abi: [Narrow<TAbi[number]>]; args?: GetEventArgs<TAbi, _EventName> }
29
+ ? { abi: [TAbi[number]]; args?: GetEventArgs<TAbi, _EventName> }
35
30
  : never)
36
31
 
37
32
  export function encodeEventTopics<
38
- TAbi extends Abi | readonly unknown[],
33
+ const TAbi extends Abi | readonly unknown[],
39
34
  TEventName extends string | undefined = undefined,
40
35
  >({ abi, eventName, args }: EncodeEventTopicsParameters<TAbi, TEventName>) {
41
36
  let abiItem = abi[0] as AbiItem
@@ -1,4 +1,4 @@
1
- import type { Abi, Narrow } from 'abitype'
1
+ import type { Abi } from 'abitype'
2
2
 
3
3
  import { AbiFunctionNotFoundError } from '../../errors/abi.js'
4
4
  import type {
@@ -20,13 +20,13 @@ export type EncodeFunctionDataParameters<
20
20
  > = {
21
21
  functionName?: _FunctionName
22
22
  } & (TFunctionName extends string
23
- ? { abi: Narrow<TAbi> } & GetFunctionArgs<TAbi, TFunctionName>
23
+ ? { abi: TAbi } & GetFunctionArgs<TAbi, TFunctionName>
24
24
  : _FunctionName extends string
25
- ? { abi: [Narrow<TAbi[number]>] } & GetFunctionArgs<TAbi, _FunctionName>
25
+ ? { abi: [TAbi[number]] } & GetFunctionArgs<TAbi, _FunctionName>
26
26
  : never)
27
27
 
28
28
  export function encodeFunctionData<
29
- TAbi extends Abi | readonly unknown[],
29
+ const TAbi extends Abi | readonly unknown[],
30
30
  TFunctionName extends string | undefined = undefined,
31
31
  >({
32
32
  abi,
@@ -1,4 +1,4 @@
1
- import type { Abi, Narrow } from 'abitype'
1
+ import type { Abi } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiFunctionNotFoundError,
@@ -22,16 +22,16 @@ export type EncodeFunctionResultParameters<
22
22
  > = {
23
23
  functionName?: _FunctionName
24
24
  } & (TFunctionName extends string
25
- ? { abi: Narrow<TAbi>; result?: ContractFunctionResult<TAbi, TFunctionName> }
25
+ ? { abi: TAbi; result?: ContractFunctionResult<TAbi, TFunctionName> }
26
26
  : _FunctionName extends string
27
27
  ? {
28
- abi: [Narrow<TAbi[number]>]
28
+ abi: [TAbi[number]]
29
29
  result?: ContractFunctionResult<TAbi, _FunctionName>
30
30
  }
31
31
  : never)
32
32
 
33
33
  export function encodeFunctionResult<
34
- TAbi extends Abi | readonly unknown[],
34
+ const TAbi extends Abi | readonly unknown[],
35
35
  TFunctionName extends string | undefined = undefined,
36
36
  >({
37
37
  abi,
@@ -2,7 +2,6 @@ import type {
2
2
  AbiParameterToPrimitiveType,
3
3
  AbiType,
4
4
  Address,
5
- Narrow,
6
5
  SolidityAddress,
7
6
  SolidityArrayWithoutTuple,
8
7
  SolidityBool,
@@ -32,18 +31,17 @@ type PackedAbiType =
32
31
  | SolidityString
33
32
  | SolidityArrayWithoutTuple
34
33
 
35
- type EncodePackedValues<TPackedAbiTypes extends PackedAbiType[] | unknown[]> = {
34
+ type EncodePackedValues<
35
+ TPackedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
36
+ > = {
36
37
  [K in keyof TPackedAbiTypes]: TPackedAbiTypes[K] extends AbiType
37
38
  ? AbiParameterToPrimitiveType<{ type: TPackedAbiTypes[K] }>
38
39
  : unknown
39
40
  }
40
41
 
41
42
  export function encodePacked<
42
- TPackedAbiTypes extends PackedAbiType[] | unknown[],
43
- >(
44
- types: Narrow<TPackedAbiTypes>,
45
- values: EncodePackedValues<TPackedAbiTypes>,
46
- ): Hex {
43
+ const TPackedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
44
+ >(types: TPackedAbiTypes, values: EncodePackedValues<TPackedAbiTypes>): Hex {
47
45
  if (types.length !== values.length)
48
46
  throw new AbiEncodingLengthMismatchError({
49
47
  expectedLength: types.length as number,
@@ -59,7 +57,7 @@ export function encodePacked<
59
57
  return concat(data)
60
58
  }
61
59
 
62
- function encode<TPackedAbiType extends PackedAbiType | unknown>(
60
+ function encode<const TPackedAbiType extends PackedAbiType | unknown>(
63
61
  type: TPackedAbiType,
64
62
  value: EncodePackedValues<[TPackedAbiType]>[0],
65
63
  isArray = false,
@@ -1,4 +1,4 @@
1
- import type { Abi, AbiParameter, Address, Narrow } from 'abitype'
1
+ import type { Abi, AbiParameter, Address } from 'abitype'
2
2
 
3
3
  import type { GetFunctionArgs, InferItemName } from '../../types/contract.js'
4
4
  import { isAddress } from '../address/isAddress.js'
@@ -7,7 +7,7 @@ export type GetAbiItemParameters<
7
7
  TAbi extends Abi | readonly unknown[] = Abi,
8
8
  TItemName extends string = string,
9
9
  > = {
10
- abi: Narrow<TAbi>
10
+ abi: TAbi
11
11
  name: InferItemName<TAbi, TItemName>
12
12
  } & Partial<GetFunctionArgs<TAbi, TItemName>>
13
13
 
@@ -22,7 +22,7 @@ export type GetAbiItemReturnType<
22
22
  >
23
23
 
24
24
  export function getAbiItem<
25
- TAbi extends Abi | readonly unknown[],
25
+ const TAbi extends Abi | readonly unknown[],
26
26
  TItemName extends string,
27
27
  >({
28
28
  abi,
package/src/utils/poll.ts CHANGED
@@ -21,7 +21,7 @@ export function poll<TData>(
21
21
  const unwatch = () => (active = false)
22
22
 
23
23
  const watch = async () => {
24
- let data: TData | void
24
+ let data: TData | void = undefined
25
25
  if (emitOnBegin) data = await fn({ unpoll: unwatch })
26
26
 
27
27
  const initialWait = (await initialWaitTime?.(data)) ?? interval
@@ -58,8 +58,7 @@ export function validateTypedData<
58
58
  }
59
59
 
60
60
  // Validate domain types.
61
- if (types['EIP712Domain'] && domain)
62
- validateData(types['EIP712Domain'], domain)
61
+ if (types.EIP712Domain && domain) validateData(types.EIP712Domain, domain)
63
62
 
64
63
  if (primaryType !== 'EIP712Domain') {
65
64
  // Validate message types.
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.5.4'
1
+ export const version = '1.6.1'