@wagmi/core 0.10.2 → 0.10.4

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.
@@ -0,0 +1,310 @@
1
+ import { Abi, ResolvedConfig, Address, AbiStateMutability, Narrow, ExtractAbiFunctionNames, AbiFunction, ExtractAbiFunction, AbiParametersToPrimitiveTypes, AbiParameterToPrimitiveType, AbiEvent, AbiParameter, ExtractAbiEventNames, ExtractAbiEvent } from 'abitype';
2
+ import { ethers, Signer, providers, Contract as Contract$2 } from 'ethers';
3
+
4
+ /**
5
+ * Count occurrences of {@link TType} in {@link TArray}
6
+ *
7
+ * @param TArray - Array to count occurrences in
8
+ * @param TType - Type to count occurrences of
9
+ * @returns Number of occurrences of {@link TType} in {@link TArray}
10
+ *
11
+ * @example
12
+ * type Result = CountOccurrences<['foo', 'bar', 'foo'], 'foo'>
13
+ */
14
+ type CountOccurrences<TArray extends readonly unknown[], TType> = FilterNever<[
15
+ ...{
16
+ [K in keyof TArray]: TArray[K] extends TType ? TArray[K] : never;
17
+ }
18
+ ]>['length'];
19
+ /**
20
+ * Removes all occurrences of `never` from {@link TArray}
21
+ *
22
+ * @param TArray - Array to filter
23
+ * @returns Array with `never` removed
24
+ *
25
+ * @example
26
+ * type Result = FilterNever<[1, 2, never, 3, never, 4]>
27
+ */
28
+ type FilterNever<TArray extends readonly unknown[]> = TArray['length'] extends 0 ? [] : TArray extends [infer THead, ...infer TRest] ? IsNever<THead> extends true ? FilterNever<TRest> : [THead, ...FilterNever<TRest>] : never;
29
+ /**
30
+ * Check if {@link T} is `never`
31
+ *
32
+ * @param T - Type to check
33
+ * @returns `true` if {@link T} is `never`, otherwise `false`
34
+ *
35
+ * @example
36
+ * type Result = IsNever<'foo'>
37
+ */
38
+ type IsNever<T> = [T] extends [never] ? true : false;
39
+ /**
40
+ * Checks if {@link T} is `unknown`
41
+ *
42
+ * @param T - Type to check
43
+ * @returns `true` if {@link T} is `unknown`, otherwise `false`
44
+ *
45
+ * @example
46
+ * type Result = IsUnknown<unknown>
47
+ */
48
+ type IsUnknown<T> = unknown extends T ? true : false;
49
+ /**
50
+ * Joins {@link Items} into string separated by {@link Separator}
51
+ *
52
+ * @param Items - Items to join
53
+ * @param Separator - Separator to use
54
+ * @returns Joined string
55
+ *
56
+ * @example
57
+ * type Result = Join<['foo', 'bar'], '-'>
58
+ */
59
+ type Join<Items extends string[], Separator extends string | number> = Items extends [infer First, ...infer Rest] ? First extends string ? Rest extends string[] ? Rest extends [] ? `${First}` : `${First}${Separator}${Join<Rest, Separator>}` : never : never : '';
60
+ /**
61
+ * Converts {@link Union} to intersection
62
+ *
63
+ * @param Union - Union to convert
64
+ * @returns Intersection of {@link Union}
65
+ *
66
+ * @example
67
+ * type Result = UnionToIntersection<'foo' | 'bar'>
68
+ */
69
+ type UnionToIntersection<Union> = (Union extends unknown ? (arg: Union) => unknown : never) extends (arg: infer R) => unknown ? R : never;
70
+
71
+ type Contract$1<TAbi extends Abi | readonly unknown[] = Abi | readonly unknown[], TFunctionName extends string = string> = {
72
+ abi: TAbi;
73
+ functionName: TFunctionName;
74
+ };
75
+ type GetConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiStateMutability extends AbiStateMutability = AbiStateMutability> = {
76
+ /** Contract ABI */
77
+ abi: Narrow<TAbi>;
78
+ /** Contract address */
79
+ address: Address;
80
+ /** Function to invoke on the contract */
81
+ functionName: GetFunctionName<TAbi, TFunctionName, TAbiStateMutability>;
82
+ } & GetArgs<TAbi, TFunctionName>;
83
+ type GetFunctionName<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiStateMutability extends AbiStateMutability = AbiStateMutability> = TAbi extends Abi ? ExtractAbiFunctionNames<TAbi, TAbiStateMutability> extends infer AbiFunctionNames ? AbiFunctionNames | (TFunctionName extends AbiFunctionNames ? TFunctionName : never) | (Abi extends TAbi ? string : never) : never : TFunctionName;
84
+ type GetArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TAbiFunction extends AbiFunction & {
85
+ type: 'function';
86
+ } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : AbiFunction & {
87
+ type: 'function';
88
+ }, TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['inputs']>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? {
89
+ /**
90
+ * Arguments to pass contract method
91
+ *
92
+ * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
93
+ */
94
+ args?: readonly unknown[];
95
+ } : TArgs extends readonly [] ? {
96
+ args?: never;
97
+ } : {
98
+ /** Arguments to pass contract method */ args: TArgs;
99
+ };
100
+ type GetReturnType<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiFunction extends AbiFunction & {
101
+ type: 'function';
102
+ } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : AbiFunction & {
103
+ type: 'function';
104
+ }, TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['outputs']>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? unknown : TArgs extends readonly [] ? void : TArgs extends readonly [infer Arg] ? Arg : TArgs & {
105
+ [Output in TAbiFunction['outputs'][number] as Output extends {
106
+ name: infer Name extends string;
107
+ } ? Name extends '' ? never : Name : never]: AbiParameterToPrimitiveType<Output>;
108
+ };
109
+ type MAXIMUM_DEPTH = 20;
110
+ /**
111
+ * ContractsConfig reducer recursively unwraps function arguments to infer/enforce type param
112
+ */
113
+ type ContractsConfig<TContracts extends Contract$1[], TProperties extends Record<string, any> = object, Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? (GetConfig & TProperties)[] : TContracts extends [] ? [] : TContracts extends [infer Head extends Contract$1] ? [
114
+ ...Result,
115
+ GetConfig<Head['abi'], Head['functionName'], 'pure' | 'view'> & TProperties
116
+ ] : TContracts extends [
117
+ infer Head extends Contract$1,
118
+ ...infer Tail extends Contract$1[]
119
+ ] ? ContractsConfig<[
120
+ ...Tail
121
+ ], TProperties, [
122
+ ...Result,
123
+ GetConfig<Head['abi'], Head['functionName'], 'pure' | 'view'> & TProperties
124
+ ], [
125
+ ...Depth,
126
+ 1
127
+ ]> : unknown[] extends TContracts ? TContracts : TContracts extends GetConfig<infer TAbi, infer TFunctionName>[] ? (GetConfig<TAbi, TFunctionName> & TProperties)[] : (GetConfig & TProperties)[];
128
+ /**
129
+ * ContractsResult reducer recursively maps type param to results
130
+ */
131
+ type ContractsResult<TContracts extends Contract$1[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? GetReturnType[] : TContracts extends [] ? [] : TContracts extends [infer Head extends Contract$1] ? [...Result, GetReturnType<Head['abi'], Head['functionName']>] : TContracts extends [
132
+ infer Head extends Contract$1,
133
+ ...infer Tail extends Contract$1[]
134
+ ] ? ContractsResult<[
135
+ ...Tail
136
+ ], [
137
+ ...Result,
138
+ GetReturnType<Head['abi'], Head['functionName']>
139
+ ], [
140
+ ...Depth,
141
+ 1
142
+ ]> : TContracts extends GetConfig<infer TAbi, infer TFunctionName>[] ? GetReturnType<TAbi, TFunctionName>[] : GetReturnType[];
143
+ /**
144
+ * Get name for {@link AbiFunction} or {@link AbiEvent}
145
+ *
146
+ * @param TAbiItem - {@link AbiFunction} or {@link AbiEvent}
147
+ * @param IsSignature - Whether to return the signature instead of the name
148
+ * @returns Name or signature of function or event
149
+ *
150
+ * @example
151
+ * type Result = AbiItemName<{ type: 'function'; name: 'Foo'; … }>
152
+ */
153
+ type AbiItemName<TAbiItem extends (AbiFunction & {
154
+ type: 'function';
155
+ }) | AbiEvent, IsSignature extends boolean = false> = IsSignature extends true ? TAbiItem['inputs'] extends infer TAbiParameters extends readonly AbiParameter[] ? `${TAbiItem['name']}(${Join<[
156
+ ...{
157
+ [K in keyof TAbiParameters]: TAbiParameters[K]['type'];
158
+ }
159
+ ], ','>})` : never : TAbiItem['name'];
160
+ /**
161
+ * Get overrides for {@link AbiStateMutability}
162
+ *
163
+ * @param TAbiStateMutability - {@link AbiStateMutability}
164
+ * @returns Overrides for {@link TAbiStateMutability}
165
+ *
166
+ * @example
167
+ * type Result = GetOverridesForAbiStateMutability<'pure'>
168
+ */
169
+ type GetOverridesForAbiStateMutability<TAbiStateMutability extends AbiStateMutability> = {
170
+ nonpayable: Overrides & {
171
+ from?: Address;
172
+ };
173
+ payable: PayableOverrides & {
174
+ from?: Address;
175
+ };
176
+ pure: CallOverrides;
177
+ view: CallOverrides;
178
+ }[TAbiStateMutability];
179
+ interface Overrides extends ethers.Overrides {
180
+ gasLimit?: ResolvedConfig['BigIntType'];
181
+ gasPrice?: ResolvedConfig['BigIntType'];
182
+ maxFeePerGas?: ResolvedConfig['BigIntType'];
183
+ maxPriorityFeePerGas?: ResolvedConfig['BigIntType'];
184
+ nonce?: ResolvedConfig['IntType'];
185
+ }
186
+ interface PayableOverrides extends Overrides {
187
+ value?: ResolvedConfig['IntType'] | ResolvedConfig['BigIntType'];
188
+ }
189
+ interface CallOverrides extends PayableOverrides {
190
+ blockTag?: ethers.CallOverrides['blockTag'];
191
+ from?: Address;
192
+ }
193
+ type Event<TAbiEvent extends AbiEvent> = Omit<ethers.Event, 'args' | 'event' | 'eventSignature'> & {
194
+ args: AbiParametersToPrimitiveTypes<TAbiEvent['inputs']>;
195
+ event: TAbiEvent['name'];
196
+ eventSignature: AbiItemName<TAbiEvent, true>;
197
+ };
198
+
199
+ type GetContractArgs<TAbi extends Abi | readonly unknown[] = Abi> = {
200
+ /** Contract address */
201
+ address: string;
202
+ /** Contract ABI */
203
+ abi: Narrow<TAbi>;
204
+ /** Signer or provider to attach to contract */
205
+ signerOrProvider?: Signer | providers.Provider;
206
+ };
207
+ type GetContractResult<TAbi = unknown> = TAbi extends Abi ? Contract<TAbi> & Contract$2 : Contract$2;
208
+ declare function getContract<TAbi extends Abi | readonly unknown[]>({ address, abi, signerOrProvider, }: GetContractArgs<TAbi>): GetContractResult<TAbi>;
209
+ type PropertyKeys = 'address' | 'attach' | 'connect' | 'deployed' | 'interface' | 'resolvedAddress';
210
+ type FunctionKeys = 'callStatic' | 'estimateGas' | 'functions' | 'populateTransaction';
211
+ type EventKeys = 'emit' | 'filters' | 'listenerCount' | 'listeners' | 'off' | 'on' | 'once' | 'queryFilter' | 'removeAllListeners' | 'removeListener';
212
+ type BaseContract<TContract extends Record<keyof Pick<Contract$2, PropertyKeys | FunctionKeys | EventKeys>, unknown>> = Omit<Contract$2, PropertyKeys | FunctionKeys | EventKeys> & TContract;
213
+ type InterfaceKeys = 'events' | 'functions';
214
+ type BaseInterface<Interface extends Record<keyof Pick<ethers.utils.Interface, InterfaceKeys>, unknown>> = Omit<ethers.utils.Interface, InterfaceKeys> & Interface;
215
+ type Contract<TAbi extends Abi, _Functions = Functions<TAbi>> = _Functions & BaseContract<{
216
+ address: Address;
217
+ resolvedAddress: Promise<Address>;
218
+ attach(addressOrName: Address | string): Contract<TAbi>;
219
+ connect(signerOrProvider: ethers.Signer | ethers.providers.Provider | string): Contract<TAbi>;
220
+ deployed(): Promise<Contract<TAbi>>;
221
+ interface: BaseInterface<{
222
+ events: InterfaceEvents<TAbi>;
223
+ functions: InterfaceFunctions<TAbi>;
224
+ }>;
225
+ callStatic: _Functions;
226
+ estimateGas: Functions<TAbi, {
227
+ ReturnType: ResolvedConfig['BigIntType'];
228
+ }>;
229
+ functions: Functions<TAbi, {
230
+ ReturnTypeAsArray: true;
231
+ }>;
232
+ populateTransaction: Functions<TAbi, {
233
+ ReturnType: ethers.PopulatedTransaction;
234
+ }>;
235
+ emit<TEventName extends ExtractAbiEventNames<TAbi> | ethers.EventFilter>(eventName: TEventName, ...args: AbiParametersToPrimitiveTypes<ExtractAbiEvent<TAbi, TEventName extends string ? TEventName : ExtractAbiEventNames<TAbi>>['inputs']> extends infer TArgs extends readonly unknown[] ? TArgs : never): boolean;
236
+ filters: Filters<TAbi>;
237
+ listenerCount(): number;
238
+ listenerCount<TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName): number;
239
+ listenerCount(eventFilter: ethers.EventFilter): number;
240
+ listeners(): Array<(...args: any[]) => void>;
241
+ listeners<TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName): Array<Listener<TAbi, TEventName>>;
242
+ listeners(eventFilter: ethers.EventFilter): Array<Listener<TAbi, ExtractAbiEventNames<TAbi>>>;
243
+ off: EventListener<TAbi>;
244
+ on: EventListener<TAbi>;
245
+ once: EventListener<TAbi>;
246
+ queryFilter<TEventName extends ExtractAbiEventNames<TAbi>>(event: TEventName, fromBlockOrBlockhash?: string | number, toBlock?: string | number): Promise<Array<ethers.Event>>;
247
+ queryFilter(eventFilter: ethers.EventFilter, fromBlockOrBlockhash?: string | number, toBlock?: string | number): Promise<Array<ethers.Event>>;
248
+ removeAllListeners(eventName?: ExtractAbiEventNames<TAbi>): Contract<TAbi>;
249
+ removeAllListeners(eventFilter: ethers.EventFilter): Contract<TAbi>;
250
+ removeListener: EventListener<TAbi>;
251
+ }>;
252
+ type Functions<TAbi extends Abi, Options extends {
253
+ ReturnType?: any;
254
+ ReturnTypeAsArray?: boolean;
255
+ } = {
256
+ ReturnTypeAsArray: false;
257
+ }> = UnionToIntersection<{
258
+ [K in keyof TAbi]: TAbi[K] extends infer TAbiFunction extends AbiFunction & {
259
+ type: 'function';
260
+ } ? {
261
+ [K in CountOccurrences<TAbi, {
262
+ name: TAbiFunction['name'];
263
+ }> extends 1 ? AbiItemName<TAbiFunction> : AbiItemName<TAbiFunction, true>]: (...args: [
264
+ ...args: TAbiFunction['inputs'] extends infer TInputs extends readonly AbiParameter[] ? AbiParametersToPrimitiveTypes<TInputs> : never,
265
+ overrides?: GetOverridesForAbiStateMutability<TAbiFunction['stateMutability']>
266
+ ]) => Promise<IsUnknown<Options['ReturnType']> extends true ? AbiFunctionReturnType<TAbiFunction> extends infer TAbiFunctionReturnType ? Options['ReturnTypeAsArray'] extends true ? [TAbiFunctionReturnType] : TAbiFunctionReturnType : never : Options['ReturnType']>;
267
+ } : never;
268
+ }[number]>;
269
+ type AbiFunctionReturnType<TAbiFunction extends AbiFunction & {
270
+ type: 'function';
271
+ }> = ({
272
+ payable: ethers.ContractTransaction;
273
+ nonpayable: ethers.ContractTransaction;
274
+ } & {
275
+ [_ in 'pure' | 'view']: TAbiFunction['outputs']['length'] extends infer TLength ? TLength extends 0 ? void : TLength extends 1 ? AbiParameterToPrimitiveType<TAbiFunction['outputs'][0]> : {
276
+ [Output in TAbiFunction['outputs'][number] as Output extends {
277
+ name: string;
278
+ } ? Output['name'] extends '' ? never : Output['name'] : never]: AbiParameterToPrimitiveType<Output>;
279
+ } & AbiParametersToPrimitiveTypes<TAbiFunction['outputs']> : never;
280
+ })[TAbiFunction['stateMutability']];
281
+ type InterfaceFunctions<TAbi extends Abi> = UnionToIntersection<{
282
+ [K in keyof TAbi]: TAbi[K] extends infer TAbiFunction extends AbiFunction & {
283
+ type: 'function';
284
+ } ? {
285
+ [K in AbiItemName<TAbiFunction, true>]: ethers.utils.FunctionFragment;
286
+ } : never;
287
+ }[number]>;
288
+ type InterfaceEvents<TAbi extends Abi> = UnionToIntersection<{
289
+ [K in keyof TAbi]: TAbi[K] extends infer TAbiEvent extends AbiEvent ? {
290
+ [K in AbiItemName<TAbiEvent, true>]: ethers.utils.EventFragment;
291
+ } : never;
292
+ }[number]>;
293
+ interface EventListener<TAbi extends Abi> {
294
+ <TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName, listener: Listener<TAbi, TEventName>): Contract<TAbi>;
295
+ (eventFilter: ethers.EventFilter, listener: Listener<TAbi, ExtractAbiEventNames<TAbi>>): Contract<TAbi>;
296
+ }
297
+ type Listener<TAbi extends Abi, TEventName extends string, TAbiEvent extends AbiEvent = ExtractAbiEvent<TAbi, TEventName>> = AbiParametersToPrimitiveTypes<TAbiEvent['inputs']> extends infer TArgs extends readonly unknown[] ? (...args: [...args: TArgs, event: Event<TAbiEvent>]) => void : never;
298
+ type Filters<TAbi extends Abi> = UnionToIntersection<{
299
+ [K in keyof TAbi]: TAbi[K] extends infer TAbiEvent extends AbiEvent ? {
300
+ [K in CountOccurrences<TAbi, {
301
+ name: TAbiEvent['name'];
302
+ }> extends 1 ? AbiItemName<TAbiEvent> : AbiItemName<TAbiEvent, true>]: (...args: TAbiEvent['inputs'] extends infer TAbiParameters extends readonly (AbiParameter & {
303
+ indexed?: boolean;
304
+ })[] ? {
305
+ [K in keyof TAbiParameters]: TAbiParameters[K]['indexed'] extends true ? AbiParameterToPrimitiveType<TAbiParameters[K]> | null : null;
306
+ } : never) => ethers.EventFilter;
307
+ } : never;
308
+ }[number]>;
309
+
310
+ export { Contract$1 as C, EventListener as E, GetConfig as G, Overrides as O, PayableOverrides as P, GetOverridesForAbiStateMutability as a, ContractsConfig as b, ContractsResult as c, GetReturnType as d, GetFunctionName as e, GetArgs as f, getContract as g, GetContractArgs as h, GetContractResult as i, CallOverrides as j };
package/dist/index.d.ts CHANGED
@@ -6,10 +6,11 @@ import { Connector, ConnectorData } from '@wagmi/connectors';
6
6
  export { Connector, ConnectorData, ConnectorEvents, Ethereum } from '@wagmi/connectors';
7
7
  import { P as Provider, W as WebSocketProvider, U as Unit, S as Signer, H as Hash, C as ChainProviderFn, a as ProviderWithFallbackConfig } from './index-35b6525c.js';
8
8
  export { C as ChainProviderFn, F as FallbackProviderConfig, H as Hash, P as Provider, a as ProviderWithFallbackConfig, S as Signer, U as Unit, W as WebSocketProvider, u as units } from './index-35b6525c.js';
9
- import { Address, ResolvedConfig, TypedData, TypedDataToPrimitiveTypes, TypedDataDomain, Narrow, Abi, ExtractAbiFunction, ExtractAbiEventNames, AbiParametersToPrimitiveTypes, ExtractAbiEvent, AbiFunction, AbiParameter, AbiParameterToPrimitiveType, AbiEvent, ExtractAbiFunctionNames } from 'abitype';
9
+ import { Address, ResolvedConfig, TypedData, TypedDataToPrimitiveTypes, TypedDataDomain, Narrow, Abi, ExtractAbiFunction, ExtractAbiEventNames, AbiEvent, ExtractAbiEvent, AbiParametersToPrimitiveTypes, ExtractAbiFunctionNames } from 'abitype';
10
10
  export { Address } from 'abitype';
11
- import { PopulatedTransaction, Signer as Signer$1, providers, Contract as Contract$1, ethers, Transaction, ContractInterface } from 'ethers';
12
- import { G as GetConfig, a as GetOverridesForAbiStateMutability, U as UnionToIntersection, C as CountOccurrences, A as AbiItemName, I as IsUnknown, E as Event, b as Contract$2, c as ContractsConfig, d as ContractsResult, e as GetReturnType, f as GetFunctionName, g as GetArgs } from './contracts-b112c24e.js';
11
+ import { PopulatedTransaction, providers, Transaction, ContractInterface } from 'ethers';
12
+ import { G as GetConfig, a as GetOverridesForAbiStateMutability, C as Contract, b as ContractsConfig, c as ContractsResult, d as GetReturnType, e as GetFunctionName, f as GetArgs } from './getContract-2443b222.js';
13
+ export { h as GetContractArgs, i as GetContractResult, g as getContract } from './getContract-2443b222.js';
13
14
  import { TransactionResponse } from '@ethersproject/providers';
14
15
  export { InjectedConnector, InjectedConnectorOptions } from '@wagmi/connectors/injected';
15
16
  import * as abitype_dist_abi_78346466 from 'abitype/dist/abi-78346466';
@@ -1092,118 +1093,7 @@ type PrepareWriteContractResult<TAbi extends Abi | readonly unknown[] = Abi, TFu
1092
1093
  */
1093
1094
  declare function prepareWriteContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TChainId extends number, TSigner extends Signer = Signer>({ abi, address, chainId, functionName, overrides, signer: signer_, ...config }: PrepareWriteContractConfig<TAbi, TFunctionName, TChainId, TSigner>): Promise<PrepareWriteContractResult<TAbi, TFunctionName, TChainId>>;
1094
1095
 
1095
- type GetContractArgs<TAbi extends Abi | readonly unknown[] = Abi> = {
1096
- /** Contract address */
1097
- address: string;
1098
- /** Contract ABI */
1099
- abi: Narrow<TAbi>;
1100
- /** Signer or provider to attach to contract */
1101
- signerOrProvider?: Signer$1 | providers.Provider;
1102
- };
1103
- type GetContractResult<TAbi = unknown> = TAbi extends Abi ? Contract<TAbi> & Contract$1 : Contract$1;
1104
- declare function getContract<TAbi extends Abi | readonly unknown[]>({ address, abi, signerOrProvider, }: GetContractArgs<TAbi>): GetContractResult<TAbi>;
1105
- type PropertyKeys = 'address' | 'attach' | 'connect' | 'deployed' | 'interface' | 'resolvedAddress';
1106
- type FunctionKeys = 'callStatic' | 'estimateGas' | 'functions' | 'populateTransaction';
1107
- type EventKeys = 'emit' | 'filters' | 'listenerCount' | 'listeners' | 'off' | 'on' | 'once' | 'queryFilter' | 'removeAllListeners' | 'removeListener';
1108
- type BaseContract<TContract extends Record<keyof Pick<Contract$1, PropertyKeys | FunctionKeys | EventKeys>, unknown>> = Omit<Contract$1, PropertyKeys | FunctionKeys | EventKeys> & TContract;
1109
- type InterfaceKeys = 'events' | 'functions';
1110
- type BaseInterface<Interface extends Record<keyof Pick<ethers.utils.Interface, InterfaceKeys>, unknown>> = Omit<ethers.utils.Interface, InterfaceKeys> & Interface;
1111
- type Contract<TAbi extends Abi, _Functions = Functions<TAbi>> = _Functions & BaseContract<{
1112
- address: Address;
1113
- resolvedAddress: Promise<Address>;
1114
- attach(addressOrName: Address | string): Contract<TAbi>;
1115
- connect(signerOrProvider: ethers.Signer | ethers.providers.Provider | string): Contract<TAbi>;
1116
- deployed(): Promise<Contract<TAbi>>;
1117
- interface: BaseInterface<{
1118
- events: InterfaceEvents<TAbi>;
1119
- functions: InterfaceFunctions<TAbi>;
1120
- }>;
1121
- callStatic: _Functions;
1122
- estimateGas: Functions<TAbi, {
1123
- ReturnType: ResolvedConfig['BigIntType'];
1124
- }>;
1125
- functions: Functions<TAbi, {
1126
- ReturnTypeAsArray: true;
1127
- }>;
1128
- populateTransaction: Functions<TAbi, {
1129
- ReturnType: ethers.PopulatedTransaction;
1130
- }>;
1131
- emit<TEventName extends ExtractAbiEventNames<TAbi> | ethers.EventFilter>(eventName: TEventName, ...args: AbiParametersToPrimitiveTypes<ExtractAbiEvent<TAbi, TEventName extends string ? TEventName : ExtractAbiEventNames<TAbi>>['inputs']> extends infer TArgs extends readonly unknown[] ? TArgs : never): boolean;
1132
- filters: Filters<TAbi>;
1133
- listenerCount(): number;
1134
- listenerCount<TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName): number;
1135
- listenerCount(eventFilter: ethers.EventFilter): number;
1136
- listeners(): Array<(...args: any[]) => void>;
1137
- listeners<TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName): Array<Listener<TAbi, TEventName>>;
1138
- listeners(eventFilter: ethers.EventFilter): Array<Listener<TAbi, ExtractAbiEventNames<TAbi>>>;
1139
- off: EventListener<TAbi>;
1140
- on: EventListener<TAbi>;
1141
- once: EventListener<TAbi>;
1142
- queryFilter<TEventName extends ExtractAbiEventNames<TAbi>>(event: TEventName, fromBlockOrBlockhash?: string | number, toBlock?: string | number): Promise<Array<ethers.Event>>;
1143
- queryFilter(eventFilter: ethers.EventFilter, fromBlockOrBlockhash?: string | number, toBlock?: string | number): Promise<Array<ethers.Event>>;
1144
- removeAllListeners(eventName?: ExtractAbiEventNames<TAbi>): Contract<TAbi>;
1145
- removeAllListeners(eventFilter: ethers.EventFilter): Contract<TAbi>;
1146
- removeListener: EventListener<TAbi>;
1147
- }>;
1148
- type Functions<TAbi extends Abi, Options extends {
1149
- ReturnType?: any;
1150
- ReturnTypeAsArray?: boolean;
1151
- } = {
1152
- ReturnTypeAsArray: false;
1153
- }> = UnionToIntersection<{
1154
- [K in keyof TAbi]: TAbi[K] extends infer TAbiFunction extends AbiFunction & {
1155
- type: 'function';
1156
- } ? {
1157
- [K in CountOccurrences<TAbi, {
1158
- name: TAbiFunction['name'];
1159
- }> extends 1 ? AbiItemName<TAbiFunction> : AbiItemName<TAbiFunction, true>]: (...args: [
1160
- ...args: TAbiFunction['inputs'] extends infer TInputs extends readonly AbiParameter[] ? AbiParametersToPrimitiveTypes<TInputs> : never,
1161
- overrides?: GetOverridesForAbiStateMutability<TAbiFunction['stateMutability']>
1162
- ]) => Promise<IsUnknown<Options['ReturnType']> extends true ? AbiFunctionReturnType<TAbiFunction> extends infer TAbiFunctionReturnType ? Options['ReturnTypeAsArray'] extends true ? [TAbiFunctionReturnType] : TAbiFunctionReturnType : never : Options['ReturnType']>;
1163
- } : never;
1164
- }[number]>;
1165
- type AbiFunctionReturnType<TAbiFunction extends AbiFunction & {
1166
- type: 'function';
1167
- }> = ({
1168
- payable: ethers.ContractTransaction;
1169
- nonpayable: ethers.ContractTransaction;
1170
- } & {
1171
- [_ in 'pure' | 'view']: TAbiFunction['outputs']['length'] extends infer TLength ? TLength extends 0 ? void : TLength extends 1 ? AbiParameterToPrimitiveType<TAbiFunction['outputs'][0]> : {
1172
- [Output in TAbiFunction['outputs'][number] as Output extends {
1173
- name: string;
1174
- } ? Output['name'] extends '' ? never : Output['name'] : never]: AbiParameterToPrimitiveType<Output>;
1175
- } & AbiParametersToPrimitiveTypes<TAbiFunction['outputs']> : never;
1176
- })[TAbiFunction['stateMutability']];
1177
- type InterfaceFunctions<TAbi extends Abi> = UnionToIntersection<{
1178
- [K in keyof TAbi]: TAbi[K] extends infer TAbiFunction extends AbiFunction & {
1179
- type: 'function';
1180
- } ? {
1181
- [K in AbiItemName<TAbiFunction, true>]: ethers.utils.FunctionFragment;
1182
- } : never;
1183
- }[number]>;
1184
- type InterfaceEvents<TAbi extends Abi> = UnionToIntersection<{
1185
- [K in keyof TAbi]: TAbi[K] extends infer TAbiEvent extends AbiEvent ? {
1186
- [K in AbiItemName<TAbiEvent, true>]: ethers.utils.EventFragment;
1187
- } : never;
1188
- }[number]>;
1189
- interface EventListener<TAbi extends Abi> {
1190
- <TEventName extends ExtractAbiEventNames<TAbi>>(eventName: TEventName, listener: Listener<TAbi, TEventName>): Contract<TAbi>;
1191
- (eventFilter: ethers.EventFilter, listener: Listener<TAbi, ExtractAbiEventNames<TAbi>>): Contract<TAbi>;
1192
- }
1193
- type Listener<TAbi extends Abi, TEventName extends string, TAbiEvent extends AbiEvent = ExtractAbiEvent<TAbi, TEventName>> = AbiParametersToPrimitiveTypes<TAbiEvent['inputs']> extends infer TArgs extends readonly unknown[] ? (...args: [...args: TArgs, event: Event<TAbiEvent>]) => void : never;
1194
- type Filters<TAbi extends Abi> = UnionToIntersection<{
1195
- [K in keyof TAbi]: TAbi[K] extends infer TAbiEvent extends AbiEvent ? {
1196
- [K in CountOccurrences<TAbi, {
1197
- name: TAbiEvent['name'];
1198
- }> extends 1 ? AbiItemName<TAbiEvent> : AbiItemName<TAbiEvent, true>]: (...args: TAbiEvent['inputs'] extends infer TAbiParameters extends readonly (AbiParameter & {
1199
- indexed?: boolean;
1200
- })[] ? {
1201
- [K in keyof TAbiParameters]: TAbiParameters[K]['indexed'] extends true ? AbiParameterToPrimitiveType<TAbiParameters[K]> | null : null;
1202
- } : never) => ethers.EventFilter;
1203
- } : never;
1204
- }[number]>;
1205
-
1206
- type MulticallConfig<TContracts extends Contract$2[]> = {
1096
+ type MulticallConfig<TContracts extends Contract[]> = {
1207
1097
  /** Failures in the multicall will fail silently */
1208
1098
  allowFailure?: boolean;
1209
1099
  /** Chain id to use for provider */
@@ -1213,7 +1103,7 @@ type MulticallConfig<TContracts extends Contract$2[]> = {
1213
1103
  /** Call overrides */
1214
1104
  overrides?: GetOverridesForAbiStateMutability<'pure' | 'view'>;
1215
1105
  };
1216
- type MulticallResult<TContracts extends Contract$2[]> = ContractsResult<TContracts>;
1106
+ type MulticallResult<TContracts extends Contract[]> = ContractsResult<TContracts>;
1217
1107
  declare function multicall<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1218
1108
  abi: TAbi;
1219
1109
  functionName: TFunctionName;
@@ -1229,7 +1119,7 @@ type ReadContractConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionNa
1229
1119
  type ReadContractResult<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = GetReturnType<TAbi, TFunctionName>;
1230
1120
  declare function readContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string>({ address, chainId, abi, functionName, overrides, ...config }: ReadContractConfig<TAbi, TFunctionName>): Promise<ReadContractResult<TAbi, TFunctionName>>;
1231
1121
 
1232
- type ReadContractsConfig<TContracts extends Contract$2[]> = {
1122
+ type ReadContractsConfig<TContracts extends Contract[]> = {
1233
1123
  /** Failures in the multicall will fail silently */
1234
1124
  allowFailure?: boolean;
1235
1125
  /** Contracts to query */
@@ -1242,7 +1132,7 @@ type ReadContractsConfig<TContracts extends Contract$2[]> = {
1242
1132
  /** Call overrides */
1243
1133
  overrides?: GetOverridesForAbiStateMutability<'pure' | 'view'>;
1244
1134
  };
1245
- type ReadContractsResult<TContracts extends Contract$2[]> = ContractsResult<TContracts>;
1135
+ type ReadContractsResult<TContracts extends Contract[]> = ContractsResult<TContracts>;
1246
1136
  declare function readContracts<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1247
1137
  abi: TAbi;
1248
1138
  functionName: TFunctionName;
@@ -1265,10 +1155,10 @@ declare function watchContractEvent<TAbi extends Abi | readonly unknown[], TEven
1265
1155
  type GetEventName<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string> = TAbi extends Abi ? ExtractAbiEventNames<TAbi> extends infer AbiEventNames ? AbiEventNames | (TEventName extends AbiEventNames ? TEventName : never) | (Abi extends TAbi ? string : never) : never : TEventName;
1266
1156
  type GetListener<TAbi extends Abi | readonly unknown[], TEventName extends string, TAbiEvent extends AbiEvent = TAbi extends Abi ? ExtractAbiEvent<TAbi, TEventName> : AbiEvent, TArgs = AbiParametersToPrimitiveTypes<TAbiEvent['inputs']>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? (...args: readonly unknown[]) => void : (...args: TArgs extends readonly unknown[] ? TArgs : readonly unknown[]) => void;
1267
1157
 
1268
- type WatchMulticallConfig<TContracts extends Contract$2[]> = MulticallConfig<TContracts> & {
1158
+ type WatchMulticallConfig<TContracts extends Contract[]> = MulticallConfig<TContracts> & {
1269
1159
  listenToBlock?: boolean;
1270
1160
  };
1271
- type WatchMulticallCallback<TContracts extends Contract$2[]> = (results: MulticallResult<TContracts>) => void;
1161
+ type WatchMulticallCallback<TContracts extends Contract[]> = (results: MulticallResult<TContracts>) => void;
1272
1162
  declare function watchMulticall<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1273
1163
  abi: TAbi;
1274
1164
  functionName: TFunctionName;
@@ -1280,10 +1170,10 @@ type WatchReadContractConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunct
1280
1170
  type WatchReadContractCallback<TAbi extends Abi | readonly unknown[], TFunctionName extends string> = (result: ReadContractResult<TAbi, TFunctionName>) => void;
1281
1171
  declare function watchReadContract<TAbi extends Abi | readonly unknown[], TFunctionName extends TAbi extends Abi ? ExtractAbiFunctionNames<TAbi, 'view' | 'pure'> : string>(config: WatchReadContractConfig<TAbi, TFunctionName>, callback: WatchReadContractCallback<TAbi, TFunctionName>): () => void;
1282
1172
 
1283
- type WatchReadContractsConfig<TContracts extends Contract$2[]> = ReadContractsConfig<TContracts> & {
1173
+ type WatchReadContractsConfig<TContracts extends Contract[]> = ReadContractsConfig<TContracts> & {
1284
1174
  listenToBlock?: boolean;
1285
1175
  };
1286
- type WatchReadContractsCallback<TContracts extends Contract$2[]> = (results: ReadContractsResult<TContracts>) => void;
1176
+ type WatchReadContractsCallback<TContracts extends Contract[]> = (results: ReadContractsResult<TContracts>) => void;
1287
1177
  declare function watchReadContracts<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1288
1178
  abi: TAbi;
1289
1179
  functionName: TFunctionName;
@@ -1766,4 +1656,4 @@ type CircularReplacer = (key: string, value: any, referenceKey: string) => any;
1766
1656
  */
1767
1657
  declare function serialize(value: any, replacer?: StandardReplacer | null | undefined, indent?: number | null | undefined, circularReplacer?: CircularReplacer | null | undefined): string;
1768
1658
 
1769
- export { AddChainError, ChainDoesNotSupportMulticallError, ChainMismatchError, ChainNotConfiguredError, Client, ClientConfig, ConfigureChainsConfig, ConnectArgs, ConnectResult, ConnectorAlreadyConnectedError, ConnectorNotFoundError, ContractMethodDoesNotExistError, ContractMethodNoResultError, ContractMethodRevertedError, ContractResultDecodeError, FetchBalanceArgs, FetchBalanceResult, FetchBlockNumberArgs, FetchBlockNumberResult, FetchEnsAddressArgs, FetchEnsAddressResult, FetchEnsAvatarArgs, FetchEnsAvatarResult, FetchEnsNameArgs, FetchEnsNameResult, FetchEnsResolverArgs, FetchEnsResolverResult, FetchFeeDataArgs, FetchFeeDataResult, FetchSignerArgs, FetchSignerResult, FetchTokenArgs, FetchTokenResult, FetchTransactionArgs, FetchTransactionResult, GetAccountResult, GetContractArgs, GetContractResult, GetNetworkResult, GetProviderArgs, GetProviderResult, GetWebSocketProviderArgs, GetWebSocketProviderResult, MulticallConfig, MulticallResult, PrepareSendTransactionArgs, PrepareSendTransactionResult, PrepareWriteContractConfig, PrepareWriteContractResult, ProviderChainsNotFound, ProviderRpcError, ReadContractConfig, ReadContractResult, ReadContractsConfig, ReadContractsResult, ResourceUnavailableError, RpcError, SendTransactionArgs, SendTransactionPreparedRequest, SendTransactionResult, SendTransactionUnpreparedRequest, SignMessageArgs, SignMessageResult, SignTypedDataArgs, SignTypedDataResult, ClientStorage as Storage, SwitchChainError, SwitchChainNotSupportedError, SwitchNetworkArgs, SwitchNetworkResult, UserRejectedRequestError, WaitForTransactionArgs, WaitForTransactionResult, WatchAccountCallback, WatchBlockNumberArgs, WatchBlockNumberCallback, WatchContractEventCallback, WatchContractEventConfig, WatchMulticallCallback, WatchMulticallConfig, WatchNetworkCallback, WatchPendingTransactionsArgs, WatchPendingTransactionsCallback, WatchPendingTransactionsResult, WatchProviderCallback, WatchReadContractCallback, WatchReadContractConfig, WatchReadContractsCallback, WatchReadContractsConfig, WatchSignerCallback, WatchWebSocketProviderCallback, WriteContractArgs, WriteContractMode, WriteContractPreparedArgs, WriteContractResult, WriteContractUnpreparedArgs, configureChains, connect, createClient, createStorage, deepEqual, deserialize, disconnect, erc20ABI, erc4626ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, fetchTransaction, getAccount, getClient, getContract, getNetwork, getProvider, getWebSocketProvider, minimizeContractInterface, multicall, noopStorage, normalizeChainId, parseContractResult, prepareSendTransaction, prepareWriteContract, readContract, readContracts, sendTransaction, serialize, signMessage, signTypedData, switchNetwork, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchMulticall, watchNetwork, watchPendingTransactions, watchProvider, watchReadContract, watchReadContracts, watchSigner, watchWebSocketProvider, writeContract };
1659
+ export { AddChainError, ChainDoesNotSupportMulticallError, ChainMismatchError, ChainNotConfiguredError, Client, ClientConfig, ConfigureChainsConfig, ConnectArgs, ConnectResult, ConnectorAlreadyConnectedError, ConnectorNotFoundError, ContractMethodDoesNotExistError, ContractMethodNoResultError, ContractMethodRevertedError, ContractResultDecodeError, FetchBalanceArgs, FetchBalanceResult, FetchBlockNumberArgs, FetchBlockNumberResult, FetchEnsAddressArgs, FetchEnsAddressResult, FetchEnsAvatarArgs, FetchEnsAvatarResult, FetchEnsNameArgs, FetchEnsNameResult, FetchEnsResolverArgs, FetchEnsResolverResult, FetchFeeDataArgs, FetchFeeDataResult, FetchSignerArgs, FetchSignerResult, FetchTokenArgs, FetchTokenResult, FetchTransactionArgs, FetchTransactionResult, GetAccountResult, GetNetworkResult, GetProviderArgs, GetProviderResult, GetWebSocketProviderArgs, GetWebSocketProviderResult, MulticallConfig, MulticallResult, PrepareSendTransactionArgs, PrepareSendTransactionResult, PrepareWriteContractConfig, PrepareWriteContractResult, ProviderChainsNotFound, ProviderRpcError, ReadContractConfig, ReadContractResult, ReadContractsConfig, ReadContractsResult, ResourceUnavailableError, RpcError, SendTransactionArgs, SendTransactionPreparedRequest, SendTransactionResult, SendTransactionUnpreparedRequest, SignMessageArgs, SignMessageResult, SignTypedDataArgs, SignTypedDataResult, ClientStorage as Storage, SwitchChainError, SwitchChainNotSupportedError, SwitchNetworkArgs, SwitchNetworkResult, UserRejectedRequestError, WaitForTransactionArgs, WaitForTransactionResult, WatchAccountCallback, WatchBlockNumberArgs, WatchBlockNumberCallback, WatchContractEventCallback, WatchContractEventConfig, WatchMulticallCallback, WatchMulticallConfig, WatchNetworkCallback, WatchPendingTransactionsArgs, WatchPendingTransactionsCallback, WatchPendingTransactionsResult, WatchProviderCallback, WatchReadContractCallback, WatchReadContractConfig, WatchReadContractsCallback, WatchReadContractsConfig, WatchSignerCallback, WatchWebSocketProviderCallback, WriteContractArgs, WriteContractMode, WriteContractPreparedArgs, WriteContractResult, WriteContractUnpreparedArgs, configureChains, connect, createClient, createStorage, deepEqual, deserialize, disconnect, erc20ABI, erc4626ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, fetchTransaction, getAccount, getClient, getNetwork, getProvider, getWebSocketProvider, minimizeContractInterface, multicall, noopStorage, normalizeChainId, parseContractResult, prepareSendTransaction, prepareWriteContract, readContract, readContracts, sendTransaction, serialize, signMessage, signTypedData, switchNetwork, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchMulticall, watchNetwork, watchPendingTransactions, watchProvider, watchReadContract, watchReadContracts, watchSigner, watchWebSocketProvider, writeContract };
@@ -1,4 +1,4 @@
1
- export { b as Contract, c as ContractsConfig } from '../contracts-b112c24e.js';
1
+ export { j as CallOverrides, C as Contract, b as ContractsConfig, E as EventListener, O as Overrides, P as PayableOverrides } from '../getContract-2443b222.js';
2
2
  import '../index-35b6525c.js';
3
3
  import 'abitype';
4
4
  import 'ethers';
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@wagmi/core",
3
3
  "description": "Vanilla JS library for Ethereum",
4
4
  "license": "MIT",
5
- "version": "0.10.2",
5
+ "version": "0.10.4",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/wagmi-dev/wagmi.git",
@@ -118,8 +118,8 @@
118
118
  "abitype": "^0.3.0",
119
119
  "eventemitter3": "^4.0.7",
120
120
  "zustand": "^4.3.1",
121
- "@wagmi/chains": "0.2.13",
122
- "@wagmi/connectors": "0.3.4"
121
+ "@wagmi/chains": "0.2.14",
122
+ "@wagmi/connectors": "0.3.6"
123
123
  },
124
124
  "devDependencies": {
125
125
  "ethers": "^5.7.1"
@@ -1,199 +0,0 @@
1
- import { Abi, AbiStateMutability, Narrow, Address, ExtractAbiFunctionNames, AbiFunction, ExtractAbiFunction, AbiParametersToPrimitiveTypes, AbiParameterToPrimitiveType, AbiEvent, AbiParameter, ResolvedConfig } from 'abitype';
2
- import { ethers } from 'ethers';
3
-
4
- /**
5
- * Count occurrences of {@link TType} in {@link TArray}
6
- *
7
- * @param TArray - Array to count occurrences in
8
- * @param TType - Type to count occurrences of
9
- * @returns Number of occurrences of {@link TType} in {@link TArray}
10
- *
11
- * @example
12
- * type Result = CountOccurrences<['foo', 'bar', 'foo'], 'foo'>
13
- */
14
- type CountOccurrences<TArray extends readonly unknown[], TType> = FilterNever<[
15
- ...{
16
- [K in keyof TArray]: TArray[K] extends TType ? TArray[K] : never;
17
- }
18
- ]>['length'];
19
- /**
20
- * Removes all occurrences of `never` from {@link TArray}
21
- *
22
- * @param TArray - Array to filter
23
- * @returns Array with `never` removed
24
- *
25
- * @example
26
- * type Result = FilterNever<[1, 2, never, 3, never, 4]>
27
- */
28
- type FilterNever<TArray extends readonly unknown[]> = TArray['length'] extends 0 ? [] : TArray extends [infer THead, ...infer TRest] ? IsNever<THead> extends true ? FilterNever<TRest> : [THead, ...FilterNever<TRest>] : never;
29
- /**
30
- * Check if {@link T} is `never`
31
- *
32
- * @param T - Type to check
33
- * @returns `true` if {@link T} is `never`, otherwise `false`
34
- *
35
- * @example
36
- * type Result = IsNever<'foo'>
37
- */
38
- type IsNever<T> = [T] extends [never] ? true : false;
39
- /**
40
- * Checks if {@link T} is `unknown`
41
- *
42
- * @param T - Type to check
43
- * @returns `true` if {@link T} is `unknown`, otherwise `false`
44
- *
45
- * @example
46
- * type Result = IsUnknown<unknown>
47
- */
48
- type IsUnknown<T> = unknown extends T ? true : false;
49
- /**
50
- * Joins {@link Items} into string separated by {@link Separator}
51
- *
52
- * @param Items - Items to join
53
- * @param Separator - Separator to use
54
- * @returns Joined string
55
- *
56
- * @example
57
- * type Result = Join<['foo', 'bar'], '-'>
58
- */
59
- type Join<Items extends string[], Separator extends string | number> = Items extends [infer First, ...infer Rest] ? First extends string ? Rest extends string[] ? Rest extends [] ? `${First}` : `${First}${Separator}${Join<Rest, Separator>}` : never : never : '';
60
- /**
61
- * Converts {@link Union} to intersection
62
- *
63
- * @param Union - Union to convert
64
- * @returns Intersection of {@link Union}
65
- *
66
- * @example
67
- * type Result = UnionToIntersection<'foo' | 'bar'>
68
- */
69
- type UnionToIntersection<Union> = (Union extends unknown ? (arg: Union) => unknown : never) extends (arg: infer R) => unknown ? R : never;
70
-
71
- type Contract<TAbi extends Abi | readonly unknown[] = Abi | readonly unknown[], TFunctionName extends string = string> = {
72
- abi: TAbi;
73
- functionName: TFunctionName;
74
- };
75
- type GetConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiStateMutability extends AbiStateMutability = AbiStateMutability> = {
76
- /** Contract ABI */
77
- abi: Narrow<TAbi>;
78
- /** Contract address */
79
- address: Address;
80
- /** Function to invoke on the contract */
81
- functionName: GetFunctionName<TAbi, TFunctionName, TAbiStateMutability>;
82
- } & GetArgs<TAbi, TFunctionName>;
83
- type GetFunctionName<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiStateMutability extends AbiStateMutability = AbiStateMutability> = TAbi extends Abi ? ExtractAbiFunctionNames<TAbi, TAbiStateMutability> extends infer AbiFunctionNames ? AbiFunctionNames | (TFunctionName extends AbiFunctionNames ? TFunctionName : never) | (Abi extends TAbi ? string : never) : never : TFunctionName;
84
- type GetArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TAbiFunction extends AbiFunction & {
85
- type: 'function';
86
- } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : AbiFunction & {
87
- type: 'function';
88
- }, TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['inputs']>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? {
89
- /**
90
- * Arguments to pass contract method
91
- *
92
- * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
93
- */
94
- args?: readonly unknown[];
95
- } : TArgs extends readonly [] ? {
96
- args?: never;
97
- } : {
98
- /** Arguments to pass contract method */ args: TArgs;
99
- };
100
- type GetReturnType<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TAbiFunction extends AbiFunction & {
101
- type: 'function';
102
- } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : AbiFunction & {
103
- type: 'function';
104
- }, TArgs = AbiParametersToPrimitiveTypes<TAbiFunction['outputs']>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? unknown : TArgs extends readonly [] ? void : TArgs extends readonly [infer Arg] ? Arg : TArgs & {
105
- [Output in TAbiFunction['outputs'][number] as Output extends {
106
- name: infer Name extends string;
107
- } ? Name extends '' ? never : Name : never]: AbiParameterToPrimitiveType<Output>;
108
- };
109
- type MAXIMUM_DEPTH = 20;
110
- /**
111
- * ContractsConfig reducer recursively unwraps function arguments to infer/enforce type param
112
- */
113
- type ContractsConfig<TContracts extends Contract[], TProperties extends Record<string, any> = object, Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? (GetConfig & TProperties)[] : TContracts extends [] ? [] : TContracts extends [infer Head extends Contract] ? [
114
- ...Result,
115
- GetConfig<Head['abi'], Head['functionName'], 'pure' | 'view'> & TProperties
116
- ] : TContracts extends [
117
- infer Head extends Contract,
118
- ...infer Tail extends Contract[]
119
- ] ? ContractsConfig<[
120
- ...Tail
121
- ], TProperties, [
122
- ...Result,
123
- GetConfig<Head['abi'], Head['functionName'], 'pure' | 'view'> & TProperties
124
- ], [
125
- ...Depth,
126
- 1
127
- ]> : unknown[] extends TContracts ? TContracts : TContracts extends GetConfig<infer TAbi, infer TFunctionName>[] ? (GetConfig<TAbi, TFunctionName> & TProperties)[] : (GetConfig & TProperties)[];
128
- /**
129
- * ContractsResult reducer recursively maps type param to results
130
- */
131
- type ContractsResult<TContracts extends Contract[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? GetReturnType[] : TContracts extends [] ? [] : TContracts extends [infer Head extends Contract] ? [...Result, GetReturnType<Head['abi'], Head['functionName']>] : TContracts extends [
132
- infer Head extends Contract,
133
- ...infer Tail extends Contract[]
134
- ] ? ContractsResult<[
135
- ...Tail
136
- ], [
137
- ...Result,
138
- GetReturnType<Head['abi'], Head['functionName']>
139
- ], [
140
- ...Depth,
141
- 1
142
- ]> : TContracts extends GetConfig<infer TAbi, infer TFunctionName>[] ? GetReturnType<TAbi, TFunctionName>[] : GetReturnType[];
143
- /**
144
- * Get name for {@link AbiFunction} or {@link AbiEvent}
145
- *
146
- * @param TAbiItem - {@link AbiFunction} or {@link AbiEvent}
147
- * @param IsSignature - Whether to return the signature instead of the name
148
- * @returns Name or signature of function or event
149
- *
150
- * @example
151
- * type Result = AbiItemName<{ type: 'function'; name: 'Foo'; … }>
152
- */
153
- type AbiItemName<TAbiItem extends (AbiFunction & {
154
- type: 'function';
155
- }) | AbiEvent, IsSignature extends boolean = false> = IsSignature extends true ? TAbiItem['inputs'] extends infer TAbiParameters extends readonly AbiParameter[] ? `${TAbiItem['name']}(${Join<[
156
- ...{
157
- [K in keyof TAbiParameters]: TAbiParameters[K]['type'];
158
- }
159
- ], ','>})` : never : TAbiItem['name'];
160
- /**
161
- * Get overrides for {@link AbiStateMutability}
162
- *
163
- * @param TAbiStateMutability - {@link AbiStateMutability}
164
- * @returns Overrides for {@link TAbiStateMutability}
165
- *
166
- * @example
167
- * type Result = GetOverridesForAbiStateMutability<'pure'>
168
- */
169
- type GetOverridesForAbiStateMutability<TAbiStateMutability extends AbiStateMutability> = {
170
- nonpayable: Overrides & {
171
- from?: Address;
172
- };
173
- payable: PayableOverrides & {
174
- from?: Address;
175
- };
176
- pure: CallOverrides;
177
- view: CallOverrides;
178
- }[TAbiStateMutability];
179
- interface Overrides extends ethers.Overrides {
180
- gasLimit?: ResolvedConfig['BigIntType'];
181
- gasPrice?: ResolvedConfig['BigIntType'];
182
- maxFeePerGas?: ResolvedConfig['BigIntType'];
183
- maxPriorityFeePerGas?: ResolvedConfig['BigIntType'];
184
- nonce?: ResolvedConfig['IntType'];
185
- }
186
- interface PayableOverrides extends Overrides {
187
- value?: ResolvedConfig['IntType'] | ResolvedConfig['BigIntType'];
188
- }
189
- interface CallOverrides extends PayableOverrides {
190
- blockTag?: ethers.CallOverrides['blockTag'];
191
- from?: Address;
192
- }
193
- type Event<TAbiEvent extends AbiEvent> = Omit<ethers.Event, 'args' | 'event' | 'eventSignature'> & {
194
- args: AbiParametersToPrimitiveTypes<TAbiEvent['inputs']>;
195
- event: TAbiEvent['name'];
196
- eventSignature: AbiItemName<TAbiEvent, true>;
197
- };
198
-
199
- export { AbiItemName as A, CountOccurrences as C, Event as E, GetConfig as G, IsUnknown as I, UnionToIntersection as U, GetOverridesForAbiStateMutability as a, Contract as b, ContractsConfig as c, ContractsResult as d, GetReturnType as e, GetFunctionName as f, GetArgs as g };