viem 0.0.0-w-20230815171822 → 0.0.0-w-20230816153316
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/dist/cjs/actions/public/multicall.js +2 -2
- package/dist/cjs/actions/public/multicall.js.map +1 -1
- package/dist/cjs/actions/public/readContract.js +2 -1
- package/dist/cjs/actions/public/readContract.js.map +1 -1
- package/dist/cjs/actions/wallet/writeContract.js +2 -1
- package/dist/cjs/actions/wallet/writeContract.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/actions/public/multicall.js +2 -2
- package/dist/esm/actions/public/multicall.js.map +1 -1
- package/dist/esm/actions/public/readContract.js +2 -1
- package/dist/esm/actions/public/readContract.js.map +1 -1
- package/dist/esm/actions/wallet/writeContract.js +2 -1
- package/dist/esm/actions/wallet/writeContract.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/actions/public/multicall.d.ts +12 -9
- package/dist/types/actions/public/multicall.d.ts.map +1 -1
- package/dist/types/actions/public/readContract.d.ts +4 -4
- package/dist/types/actions/public/readContract.d.ts.map +1 -1
- package/dist/types/actions/wallet/writeContract.d.ts +4 -4
- package/dist/types/actions/wallet/writeContract.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +11 -0
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/multicall.d.ts +35 -35
- package/dist/types/types/multicall.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/multicall.ts +30 -23
- package/src/actions/public/readContract.ts +19 -21
- package/src/actions/wallet/writeContract.ts +35 -37
- package/src/index.ts +3 -0
- package/src/types/contract.ts +55 -0
- package/src/types/multicall.ts +82 -76
package/src/types/multicall.ts
CHANGED
@@ -1,108 +1,114 @@
|
|
1
|
-
import type { Abi, ExtractAbiFunctionNames } 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
8
|
export type MulticallContract<
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
15
14
|
> = string,
|
16
|
-
> = { abi:
|
15
|
+
> = { abi: abi; functionName: functionName }
|
17
16
|
|
18
17
|
export type MulticallContracts<
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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 []
|
26
26
|
? []
|
27
|
-
:
|
27
|
+
: contracts extends [infer head extends MulticallContract]
|
28
28
|
? [
|
29
|
-
...
|
30
|
-
|
29
|
+
...result,
|
30
|
+
ContractParameters<head['abi'], 'pure' | 'view', head['functionName']> &
|
31
|
+
properties,
|
31
32
|
]
|
32
|
-
:
|
33
|
-
infer
|
34
|
-
...infer
|
33
|
+
: contracts extends [
|
34
|
+
infer head extends MulticallContract,
|
35
|
+
...infer tail extends readonly MulticallContract[],
|
35
36
|
]
|
36
37
|
? MulticallContracts<
|
37
|
-
[...
|
38
|
-
|
38
|
+
[...tail],
|
39
|
+
properties,
|
39
40
|
[
|
40
|
-
...
|
41
|
-
|
41
|
+
...result,
|
42
|
+
ContractParameters<head['abi'], 'pure' | 'view', head['functionName']> &
|
43
|
+
properties,
|
42
44
|
],
|
43
|
-
[...
|
45
|
+
[...depth, 1]
|
44
46
|
>
|
45
|
-
: unknown[] extends
|
46
|
-
?
|
47
|
-
: // If `
|
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!
|
48
50
|
// use this to infer the param types in the case of Array.map() argument
|
49
|
-
|
50
|
-
? (
|
51
|
-
:
|
52
|
-
|
53
|
-
export type MulticallResult<
|
54
|
-
Result,
|
55
|
-
TAllowFailure extends boolean = true,
|
56
|
-
> = TAllowFailure extends true
|
57
|
-
?
|
58
|
-
| {
|
59
|
-
error?: undefined
|
60
|
-
result: Result
|
61
|
-
status: 'success'
|
62
|
-
}
|
63
|
-
| {
|
64
|
-
error: Error
|
65
|
-
result?: undefined
|
66
|
-
status: 'failure'
|
67
|
-
}
|
68
|
-
: Result
|
51
|
+
contracts extends ContractParameters<infer abi, infer _, infer functionName>[]
|
52
|
+
? (ContractParameters<abi, 'pure' | 'view', functionName> & properties)[]
|
53
|
+
: // Fallback
|
54
|
+
(ContractParameters & properties)[]
|
69
55
|
|
70
56
|
export type MulticallResults<
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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 []
|
78
65
|
? []
|
79
|
-
:
|
66
|
+
: contracts extends [infer head extends MulticallContract]
|
80
67
|
? [
|
81
|
-
...
|
68
|
+
...result,
|
82
69
|
MulticallResult<
|
83
|
-
|
84
|
-
|
70
|
+
ContractReturnType<head['abi'], 'pure' | 'view', head['functionName']>,
|
71
|
+
allowFailure
|
85
72
|
>,
|
86
73
|
]
|
87
|
-
:
|
88
|
-
infer
|
89
|
-
...infer
|
74
|
+
: contracts extends [
|
75
|
+
infer head extends MulticallContract,
|
76
|
+
...infer tail extends readonly MulticallContract[],
|
90
77
|
]
|
91
78
|
? MulticallResults<
|
92
|
-
[...
|
93
|
-
|
79
|
+
[...tail],
|
80
|
+
allowFailure,
|
94
81
|
[
|
95
|
-
...
|
82
|
+
...result,
|
96
83
|
MulticallResult<
|
97
|
-
|
98
|
-
|
84
|
+
ContractReturnType<
|
85
|
+
head['abi'],
|
86
|
+
'pure' | 'view',
|
87
|
+
head['functionName']
|
88
|
+
>,
|
89
|
+
allowFailure
|
99
90
|
>,
|
100
91
|
],
|
101
|
-
[...
|
92
|
+
[...depth, 1]
|
102
93
|
>
|
103
|
-
:
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
107
103
|
>[]
|
108
|
-
:
|
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
|