rocketh 0.15.0-testing.7 → 0.15.0-testing.8
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 +6 -0
- package/dist/environment/deployments.d.ts +1 -1
- package/dist/environment/deployments.d.ts.map +1 -1
- package/dist/environment/index.d.ts +1 -6
- package/dist/environment/index.d.ts.map +1 -1
- package/dist/environment/index.js.map +1 -1
- package/dist/environment/types.d.ts +1 -15
- package/dist/environment/types.d.ts.map +1 -1
- package/dist/environment/utils/artifacts.d.ts +1 -1
- package/dist/environment/utils/artifacts.d.ts.map +1 -1
- package/dist/environment/utils/chains.d.ts +1 -2
- package/dist/environment/utils/chains.d.ts.map +1 -1
- package/dist/environment/utils/chains.js.map +1 -1
- package/dist/executor/index.d.ts +5 -77
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +23 -7
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/setup.test.d.ts +3 -3
- package/dist/executor/setup.test.d.ts.map +1 -1
- package/dist/executor/types.d.ts +92 -0
- package/dist/executor/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -6
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +469 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/extensions.d.ts +1 -2
- package/dist/utils/extensions.d.ts.map +1 -1
- package/dist/utils/extensions.test.d.ts +2 -2
- package/dist/utils/extensions.test.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/environment/deployments.ts +1 -1
- package/src/environment/index.ts +3 -8
- package/src/environment/utils/artifacts.ts +1 -1
- package/src/environment/utils/chains.ts +2 -3
- package/src/executor/index.ts +50 -105
- package/src/executor/setup.test.ts +1 -1
- package/src/index.ts +13 -6
- package/src/{environment/types.ts → types.ts} +281 -17
- package/src/utils/extensions.test.ts +1 -1
- package/src/utils/extensions.ts +2 -2
- package/src/executor/types.ts +0 -176
|
@@ -9,10 +9,287 @@ import {
|
|
|
9
9
|
EIP1193WalletProvider,
|
|
10
10
|
} from 'eip-1193';
|
|
11
11
|
import type {Address, Chain, DeployContractParameters} from 'viem';
|
|
12
|
-
import {
|
|
13
|
-
import {ProgressIndicator} from '
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
import {TransactionHashTracker} from './environment/providers/TransactionHashTracker.js';
|
|
13
|
+
import {ProgressIndicator} from './internal/logging.js';
|
|
14
|
+
|
|
15
|
+
export type DeployScriptFunction<
|
|
16
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
17
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
18
|
+
ArgumentsTypes = undefined,
|
|
19
|
+
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
20
|
+
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
21
|
+
> = (env: Environment<NamedAccounts, Data, Deployments, Extra>, args?: ArgumentsTypes) => Promise<void | boolean>;
|
|
22
|
+
|
|
23
|
+
export interface DeployScriptModule<
|
|
24
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
25
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
26
|
+
ArgumentsTypes = undefined,
|
|
27
|
+
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
28
|
+
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
29
|
+
> {
|
|
30
|
+
(env: Environment<NamedAccounts, Data, Deployments, Extra>, args?: ArgumentsTypes): Promise<void | boolean>;
|
|
31
|
+
tags?: string[];
|
|
32
|
+
dependencies?: string[];
|
|
33
|
+
runAtTheEnd?: boolean;
|
|
34
|
+
id?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type ScriptCallback<
|
|
38
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
39
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
40
|
+
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
41
|
+
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
42
|
+
> = (env: Environment<NamedAccounts, Data, Deployments, Extra>) => Promise<void>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Utility type to extract the return value from a higher-order function
|
|
46
|
+
* For functions of type (firstParam: T) => (...args: any[]) => V or (firstParam: T) => V
|
|
47
|
+
*/
|
|
48
|
+
export type ExtractReturnFunction<T> = T extends (first: any) => infer Return ? Return : never;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Utility type to transform an object of higher-order functions by extracting their return types
|
|
52
|
+
* This handles both regular functions and getter functions
|
|
53
|
+
*/
|
|
54
|
+
export type CurriedFunctions<T> = {
|
|
55
|
+
[K in keyof T]: ExtractReturnFunction<T[K]>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Type for the enhanced environment proxy that includes both the original environment
|
|
60
|
+
* and the curried functions
|
|
61
|
+
*/
|
|
62
|
+
export type EnhancedEnvironment<
|
|
63
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
64
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
65
|
+
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
66
|
+
Extensions extends Record<
|
|
67
|
+
string,
|
|
68
|
+
(env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any
|
|
69
|
+
> = Record<string, (env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any>,
|
|
70
|
+
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
71
|
+
> = Environment<NamedAccounts, Data, Deployments, Extra> & CurriedFunctions<Extensions>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Type for a deploy script function that receives an enhanced environment
|
|
75
|
+
*/
|
|
76
|
+
export type EnhancedDeployScriptFunction<
|
|
77
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
78
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
79
|
+
ArgumentsTypes = undefined,
|
|
80
|
+
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
81
|
+
Functions extends Record<
|
|
82
|
+
string,
|
|
83
|
+
(env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any
|
|
84
|
+
> = Record<string, (env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any>,
|
|
85
|
+
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
86
|
+
> = (
|
|
87
|
+
env: EnhancedEnvironment<NamedAccounts, Data, Deployments, Functions, Extra>,
|
|
88
|
+
args?: ArgumentsTypes
|
|
89
|
+
) => Promise<void | boolean>;
|
|
90
|
+
|
|
91
|
+
type ChainBlockExplorer = {
|
|
92
|
+
name: string;
|
|
93
|
+
url: string;
|
|
94
|
+
apiUrl?: string | undefined;
|
|
95
|
+
};
|
|
96
|
+
type ChainContract = {
|
|
97
|
+
address: Address;
|
|
98
|
+
blockCreated?: number | undefined;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
type ChainNativeCurrency = {
|
|
102
|
+
name: string;
|
|
103
|
+
/** 2-6 characters long */
|
|
104
|
+
symbol: string;
|
|
105
|
+
decimals: number;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
type ChainRpcUrls = {
|
|
109
|
+
http: readonly string[];
|
|
110
|
+
webSocket?: readonly string[] | undefined;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @description Combines members of an intersection into a readable type.
|
|
115
|
+
*
|
|
116
|
+
* @see {@link https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg}
|
|
117
|
+
* @example
|
|
118
|
+
* Prettify<{ a: string } & { b: string } & { c: number, d: bigint }>
|
|
119
|
+
* => { a: string, b: string, c: number, d: bigint }
|
|
120
|
+
*/
|
|
121
|
+
type Prettify<T> = {
|
|
122
|
+
[K in keyof T]: T[K];
|
|
123
|
+
} & {};
|
|
124
|
+
|
|
125
|
+
export type ChainInfo = {
|
|
126
|
+
/** ID in number form */
|
|
127
|
+
id: number;
|
|
128
|
+
/** Human-readable name */
|
|
129
|
+
name: string;
|
|
130
|
+
/** Collection of block explorers */
|
|
131
|
+
blockExplorers?:
|
|
132
|
+
| {
|
|
133
|
+
[key: string]: ChainBlockExplorer;
|
|
134
|
+
default: ChainBlockExplorer;
|
|
135
|
+
}
|
|
136
|
+
| undefined;
|
|
137
|
+
/** Collection of contracts */
|
|
138
|
+
contracts?:
|
|
139
|
+
| Prettify<
|
|
140
|
+
{
|
|
141
|
+
[key: string]: ChainContract | {[sourceId: number]: ChainContract | undefined} | undefined;
|
|
142
|
+
} & {
|
|
143
|
+
ensRegistry?: ChainContract | undefined;
|
|
144
|
+
ensUniversalResolver?: ChainContract | undefined;
|
|
145
|
+
multicall3?: ChainContract | undefined;
|
|
146
|
+
}
|
|
147
|
+
>
|
|
148
|
+
| undefined;
|
|
149
|
+
/** Currency used by chain */
|
|
150
|
+
nativeCurrency: ChainNativeCurrency;
|
|
151
|
+
/** Collection of RPC endpoints */
|
|
152
|
+
rpcUrls: {
|
|
153
|
+
[key: string]: ChainRpcUrls;
|
|
154
|
+
default: ChainRpcUrls;
|
|
155
|
+
};
|
|
156
|
+
/** Source Chain ID (ie. the L1 chain) */
|
|
157
|
+
sourceId?: number | undefined;
|
|
158
|
+
/** Flag for test networks */
|
|
159
|
+
testnet?: boolean | undefined;
|
|
160
|
+
|
|
161
|
+
chainType: 'zksync' | 'op-stack' | 'celo' | 'default';
|
|
162
|
+
|
|
163
|
+
genesisHash?: string;
|
|
164
|
+
|
|
165
|
+
properties?: Record<string, JSONTypePlusBigInt>;
|
|
166
|
+
|
|
167
|
+
// this will bring in the following when reconstructed from the data above
|
|
168
|
+
|
|
169
|
+
// /** Custom chain data. */
|
|
170
|
+
// custom?: any;
|
|
171
|
+
|
|
172
|
+
// /**
|
|
173
|
+
// * Modifies how chain data structures (ie. Blocks, Transactions, etc)
|
|
174
|
+
// * are formatted & typed.
|
|
175
|
+
// */
|
|
176
|
+
// formatters?: any | undefined;
|
|
177
|
+
// /** Modifies how data (ie. Transactions) is serialized. */
|
|
178
|
+
// serializers?: any | undefined;
|
|
179
|
+
// /** Modifies how fees are derived. */
|
|
180
|
+
// fees?: any | undefined;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export type NamedAccountExecuteFunction<
|
|
184
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
185
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData
|
|
186
|
+
> = <ArgumentsType = undefined, Deployments extends UnknownDeployments = UnknownDeployments>(
|
|
187
|
+
callback: DeployScriptFunction<NamedAccounts, Data, ArgumentsType, Deployments>,
|
|
188
|
+
options: {tags?: string[]; dependencies?: string[]; id?: string}
|
|
189
|
+
) => DeployScriptModule<NamedAccounts, Data, ArgumentsType, Deployments>;
|
|
190
|
+
|
|
191
|
+
export interface UntypedRequestArguments {
|
|
192
|
+
readonly method: string;
|
|
193
|
+
readonly params?: readonly unknown[] | object;
|
|
194
|
+
}
|
|
195
|
+
export type UntypedEIP1193Provider = {
|
|
196
|
+
request(requestArguments: UntypedRequestArguments): Promise<unknown>;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export type ConfigOverrides = {
|
|
200
|
+
deployments?: string;
|
|
201
|
+
scripts?: string | string[];
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export type Create2DeterministicDeploymentInfo = {
|
|
205
|
+
factory: `0x${string}`;
|
|
206
|
+
deployer: `0x${string}`;
|
|
207
|
+
funding: string;
|
|
208
|
+
signedTx: `0x${string}`;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
export type Create3DeterministicDeploymentInfo = {
|
|
212
|
+
salt?: `0x${string}`;
|
|
213
|
+
factory: `0x${string}`;
|
|
214
|
+
bytecode: `0x${string}`;
|
|
215
|
+
proxyBytecode: `0x${string}`;
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export type DeterministicDeploymentInfo =
|
|
219
|
+
| Create2DeterministicDeploymentInfo
|
|
220
|
+
| {
|
|
221
|
+
create2?: Create2DeterministicDeploymentInfo;
|
|
222
|
+
create3?: Create3DeterministicDeploymentInfo;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
export type ChainUserConfig = {
|
|
226
|
+
rpcUrl?: string;
|
|
227
|
+
tags?: string[];
|
|
228
|
+
deterministicDeployment?: DeterministicDeploymentInfo;
|
|
229
|
+
info?: ChainInfo;
|
|
230
|
+
pollingInterval?: number;
|
|
231
|
+
properties?: Record<string, JSONTypePlusBigInt>;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
export type ChainConfig = {
|
|
235
|
+
rpcUrl: string;
|
|
236
|
+
tags: string[];
|
|
237
|
+
deterministicDeployment: DeterministicDeploymentInfo;
|
|
238
|
+
info: ChainInfo;
|
|
239
|
+
pollingInterval: number;
|
|
240
|
+
properties: Record<string, JSONTypePlusBigInt>;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
export type DeploymentTargetConfig = {
|
|
244
|
+
chainId: number;
|
|
245
|
+
scripts?: string | string[];
|
|
246
|
+
overrides: Omit<ChainUserConfig, 'info'>;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
export type Chains = {
|
|
250
|
+
[idOrName: number | string]: ChainUserConfig;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
export type SignerProtocolFunction = (protocolString: string) => Promise<Signer>;
|
|
254
|
+
export type SignerProtocol = {
|
|
255
|
+
getSigner: SignerProtocolFunction;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export type UserConfig<
|
|
259
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
260
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData
|
|
261
|
+
> = {
|
|
262
|
+
targets?: {[name: string]: DeploymentTargetConfig};
|
|
263
|
+
chains?: Chains;
|
|
264
|
+
deployments?: string;
|
|
265
|
+
scripts?: string | string[];
|
|
266
|
+
accounts?: NamedAccounts;
|
|
267
|
+
data?: Data;
|
|
268
|
+
signerProtocols?: Record<string, SignerProtocolFunction>;
|
|
269
|
+
defaultPollingInterval?: number;
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
export type ResolvedUserConfig<
|
|
273
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
274
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData
|
|
275
|
+
> = UserConfig & {
|
|
276
|
+
deployments: string;
|
|
277
|
+
scripts: string[];
|
|
278
|
+
defaultPollingInterval: number;
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
export type ExecutionParams<Extra extends Record<string, unknown> = Record<string, unknown>> = {
|
|
282
|
+
target?: string | {fork: string};
|
|
283
|
+
tags?: string[];
|
|
284
|
+
saveDeployments?: boolean;
|
|
285
|
+
askBeforeProceeding?: boolean;
|
|
286
|
+
reportGasUse?: boolean;
|
|
287
|
+
defaultPollingInterval?: number;
|
|
288
|
+
extra?: Extra;
|
|
289
|
+
logLevel?: number;
|
|
290
|
+
provider?: EIP1193ProviderWithoutEvents;
|
|
291
|
+
config?: ConfigOverrides;
|
|
292
|
+
};
|
|
16
293
|
|
|
17
294
|
export type {Abi, AbiConstructor, AbiError, AbiEvent, AbiFallback, AbiFunction, AbiReceive};
|
|
18
295
|
export type Libraries = {readonly [libraryName: string]: EIP1193Account};
|
|
@@ -226,19 +503,6 @@ export type ResolvedNamedSigners<T extends UnknownNamedAccounts> = {
|
|
|
226
503
|
|
|
227
504
|
export type UnknownDeploymentsAcrossNetworks = Record<string, UnknownDeployments>;
|
|
228
505
|
|
|
229
|
-
export type ExecutionParams<Extra extends Record<string, unknown> = Record<string, unknown>> = {
|
|
230
|
-
target?: string | {fork: string};
|
|
231
|
-
tags?: string[];
|
|
232
|
-
saveDeployments?: boolean;
|
|
233
|
-
askBeforeProceeding?: boolean;
|
|
234
|
-
reportGasUse?: boolean;
|
|
235
|
-
defaultPollingInterval?: number;
|
|
236
|
-
extra?: Extra;
|
|
237
|
-
logLevel?: number;
|
|
238
|
-
provider?: EIP1193ProviderWithoutEvents;
|
|
239
|
-
config: ConfigOverrides;
|
|
240
|
-
};
|
|
241
|
-
|
|
242
506
|
export type ResolvedExecutionParams<Extra extends Record<string, unknown> = Record<string, unknown>> = {
|
|
243
507
|
readonly target: {
|
|
244
508
|
readonly name: string;
|
package/src/utils/extensions.ts
CHANGED
|
@@ -3,8 +3,8 @@ import type {
|
|
|
3
3
|
UnknownDeployments,
|
|
4
4
|
UnresolvedNetworkSpecificData,
|
|
5
5
|
UnresolvedUnknownNamedAccounts,
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
CurriedFunctions,
|
|
7
|
+
} from '../types.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @param env - The environment object to inject as the first parameter
|
package/src/executor/types.ts
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import {Address} from 'abitype';
|
|
2
|
-
import type {
|
|
3
|
-
Environment,
|
|
4
|
-
JSONTypePlusBigInt,
|
|
5
|
-
UnknownDeployments,
|
|
6
|
-
UnresolvedNetworkSpecificData,
|
|
7
|
-
UnresolvedUnknownNamedAccounts,
|
|
8
|
-
} from '../environment/types.js';
|
|
9
|
-
|
|
10
|
-
export type DeployScriptFunction<
|
|
11
|
-
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
12
|
-
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
13
|
-
ArgumentsTypes = undefined,
|
|
14
|
-
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
15
|
-
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
16
|
-
> = (env: Environment<NamedAccounts, Data, Deployments, Extra>, args?: ArgumentsTypes) => Promise<void | boolean>;
|
|
17
|
-
|
|
18
|
-
export interface DeployScriptModule<
|
|
19
|
-
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
20
|
-
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
21
|
-
ArgumentsTypes = undefined,
|
|
22
|
-
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
23
|
-
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
24
|
-
> {
|
|
25
|
-
(env: Environment<NamedAccounts, Data, Deployments, Extra>, args?: ArgumentsTypes): Promise<void | boolean>;
|
|
26
|
-
tags?: string[];
|
|
27
|
-
dependencies?: string[];
|
|
28
|
-
runAtTheEnd?: boolean;
|
|
29
|
-
id?: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export type ScriptCallback<
|
|
33
|
-
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
34
|
-
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
35
|
-
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
36
|
-
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
37
|
-
> = (env: Environment<NamedAccounts, Data, Deployments, Extra>) => Promise<void>;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Utility type to extract the return value from a higher-order function
|
|
41
|
-
* For functions of type (firstParam: T) => (...args: any[]) => V or (firstParam: T) => V
|
|
42
|
-
*/
|
|
43
|
-
export type ExtractReturnFunction<T> = T extends (first: any) => infer Return ? Return : never;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Utility type to transform an object of higher-order functions by extracting their return types
|
|
47
|
-
* This handles both regular functions and getter functions
|
|
48
|
-
*/
|
|
49
|
-
export type CurriedFunctions<T> = {
|
|
50
|
-
[K in keyof T]: ExtractReturnFunction<T[K]>;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Type for the enhanced environment proxy that includes both the original environment
|
|
55
|
-
* and the curried functions
|
|
56
|
-
*/
|
|
57
|
-
export type EnhancedEnvironment<
|
|
58
|
-
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
59
|
-
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
60
|
-
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
61
|
-
Extensions extends Record<
|
|
62
|
-
string,
|
|
63
|
-
(env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any
|
|
64
|
-
> = Record<string, (env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any>,
|
|
65
|
-
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
66
|
-
> = Environment<NamedAccounts, Data, Deployments, Extra> & CurriedFunctions<Extensions>;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Type for a deploy script function that receives an enhanced environment
|
|
70
|
-
*/
|
|
71
|
-
export type EnhancedDeployScriptFunction<
|
|
72
|
-
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
73
|
-
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData,
|
|
74
|
-
ArgumentsTypes = undefined,
|
|
75
|
-
Deployments extends UnknownDeployments = UnknownDeployments,
|
|
76
|
-
Functions extends Record<
|
|
77
|
-
string,
|
|
78
|
-
(env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any
|
|
79
|
-
> = Record<string, (env: Environment<NamedAccounts, Data, Deployments>, ...args: any[]) => any>,
|
|
80
|
-
Extra extends Record<string, unknown> = Record<string, unknown>
|
|
81
|
-
> = (
|
|
82
|
-
env: EnhancedEnvironment<NamedAccounts, Data, Deployments, Functions, Extra>,
|
|
83
|
-
args?: ArgumentsTypes
|
|
84
|
-
) => Promise<void | boolean>;
|
|
85
|
-
|
|
86
|
-
type ChainBlockExplorer = {
|
|
87
|
-
name: string;
|
|
88
|
-
url: string;
|
|
89
|
-
apiUrl?: string | undefined;
|
|
90
|
-
};
|
|
91
|
-
type ChainContract = {
|
|
92
|
-
address: Address;
|
|
93
|
-
blockCreated?: number | undefined;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
type ChainNativeCurrency = {
|
|
97
|
-
name: string;
|
|
98
|
-
/** 2-6 characters long */
|
|
99
|
-
symbol: string;
|
|
100
|
-
decimals: number;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
type ChainRpcUrls = {
|
|
104
|
-
http: readonly string[];
|
|
105
|
-
webSocket?: readonly string[] | undefined;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @description Combines members of an intersection into a readable type.
|
|
110
|
-
*
|
|
111
|
-
* @see {@link https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg}
|
|
112
|
-
* @example
|
|
113
|
-
* Prettify<{ a: string } & { b: string } & { c: number, d: bigint }>
|
|
114
|
-
* => { a: string, b: string, c: number, d: bigint }
|
|
115
|
-
*/
|
|
116
|
-
type Prettify<T> = {
|
|
117
|
-
[K in keyof T]: T[K];
|
|
118
|
-
} & {};
|
|
119
|
-
|
|
120
|
-
export type ChainInfo = {
|
|
121
|
-
/** ID in number form */
|
|
122
|
-
id: number;
|
|
123
|
-
/** Human-readable name */
|
|
124
|
-
name: string;
|
|
125
|
-
/** Collection of block explorers */
|
|
126
|
-
blockExplorers?:
|
|
127
|
-
| {
|
|
128
|
-
[key: string]: ChainBlockExplorer;
|
|
129
|
-
default: ChainBlockExplorer;
|
|
130
|
-
}
|
|
131
|
-
| undefined;
|
|
132
|
-
/** Collection of contracts */
|
|
133
|
-
contracts?:
|
|
134
|
-
| Prettify<
|
|
135
|
-
{
|
|
136
|
-
[key: string]: ChainContract | {[sourceId: number]: ChainContract | undefined} | undefined;
|
|
137
|
-
} & {
|
|
138
|
-
ensRegistry?: ChainContract | undefined;
|
|
139
|
-
ensUniversalResolver?: ChainContract | undefined;
|
|
140
|
-
multicall3?: ChainContract | undefined;
|
|
141
|
-
}
|
|
142
|
-
>
|
|
143
|
-
| undefined;
|
|
144
|
-
/** Currency used by chain */
|
|
145
|
-
nativeCurrency: ChainNativeCurrency;
|
|
146
|
-
/** Collection of RPC endpoints */
|
|
147
|
-
rpcUrls: {
|
|
148
|
-
[key: string]: ChainRpcUrls;
|
|
149
|
-
default: ChainRpcUrls;
|
|
150
|
-
};
|
|
151
|
-
/** Source Chain ID (ie. the L1 chain) */
|
|
152
|
-
sourceId?: number | undefined;
|
|
153
|
-
/** Flag for test networks */
|
|
154
|
-
testnet?: boolean | undefined;
|
|
155
|
-
|
|
156
|
-
chainType: 'zksync' | 'op-stack' | 'celo' | 'default';
|
|
157
|
-
|
|
158
|
-
genesisHash?: string;
|
|
159
|
-
|
|
160
|
-
properties?: Record<string, JSONTypePlusBigInt>;
|
|
161
|
-
|
|
162
|
-
// this will bring in the following when reconstructed from the data above
|
|
163
|
-
|
|
164
|
-
// /** Custom chain data. */
|
|
165
|
-
// custom?: any;
|
|
166
|
-
|
|
167
|
-
// /**
|
|
168
|
-
// * Modifies how chain data structures (ie. Blocks, Transactions, etc)
|
|
169
|
-
// * are formatted & typed.
|
|
170
|
-
// */
|
|
171
|
-
// formatters?: any | undefined;
|
|
172
|
-
// /** Modifies how data (ie. Transactions) is serialized. */
|
|
173
|
-
// serializers?: any | undefined;
|
|
174
|
-
// /** Modifies how fees are derived. */
|
|
175
|
-
// fees?: any | undefined;
|
|
176
|
-
};
|