@wagmi/core 0.8.6 → 0.8.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.
@@ -2106,11 +2106,11 @@ function getContract({
2106
2106
  async function prepareWriteContract({
2107
2107
  abi,
2108
2108
  address,
2109
- args,
2110
2109
  chainId,
2111
2110
  functionName,
2112
2111
  overrides,
2113
- signer: signer_
2112
+ signer: signer_,
2113
+ ...config
2114
2114
  }) {
2115
2115
  const signer = signer_ ?? await fetchSigner({ chainId });
2116
2116
  if (!signer)
@@ -2122,6 +2122,7 @@ async function prepareWriteContract({
2122
2122
  abi,
2123
2123
  signerOrProvider: signer
2124
2124
  });
2125
+ const args = config.args;
2125
2126
  const normalizedFunctionName = normalizeFunctionName({
2126
2127
  contract,
2127
2128
  functionName,
@@ -2260,11 +2261,12 @@ async function multicall({
2260
2261
  ...params
2261
2262
  );
2262
2263
  return results.map(({ returnData, success }, i) => {
2263
- const { address, abi, args, functionName } = contracts[i];
2264
+ const { address, abi, functionName, ...rest } = contracts[i];
2264
2265
  const contract = getContract({
2265
2266
  address,
2266
2267
  abi
2267
2268
  });
2269
+ const args = rest.args;
2268
2270
  const normalizedFunctionName = normalizeFunctionName({
2269
2271
  contract,
2270
2272
  functionName,
@@ -2328,11 +2330,11 @@ async function multicall({
2328
2330
  // src/actions/contracts/readContract.ts
2329
2331
  async function readContract({
2330
2332
  address,
2331
- args,
2332
2333
  chainId,
2333
2334
  abi,
2334
2335
  functionName,
2335
- overrides
2336
+ overrides,
2337
+ ...config
2336
2338
  }) {
2337
2339
  const provider = getProvider({ chainId });
2338
2340
  const contract = getContract({
@@ -2340,6 +2342,7 @@ async function readContract({
2340
2342
  abi,
2341
2343
  signerOrProvider: provider
2342
2344
  });
2345
+ const args = config.args;
2343
2346
  const normalizedFunctionName = normalizeFunctionName({
2344
2347
  contract,
2345
2348
  functionName,
@@ -2736,6 +2739,39 @@ async function waitForTransaction({
2736
2739
  }
2737
2740
  }
2738
2741
 
2742
+ // src/actions/transactions/watchPendingTransactions.ts
2743
+ import shallow3 from "zustand/shallow";
2744
+ function watchPendingTransactions(args, callback) {
2745
+ let previousProvider;
2746
+ const createListener = (provider) => {
2747
+ if (previousProvider) {
2748
+ previousProvider?.off("pending", callback);
2749
+ }
2750
+ provider.on("pending", callback);
2751
+ previousProvider = provider;
2752
+ };
2753
+ const provider_ = getWebSocketProvider({ chainId: args.chainId }) ?? getProvider({ chainId: args.chainId });
2754
+ createListener(provider_);
2755
+ const client2 = getClient();
2756
+ const unsubscribe = client2.subscribe(
2757
+ ({ provider, webSocketProvider }) => ({ provider, webSocketProvider }),
2758
+ async ({ provider, webSocketProvider }) => {
2759
+ const provider_2 = webSocketProvider ?? provider;
2760
+ if (!args.chainId && provider_2) {
2761
+ createListener(provider_2);
2762
+ }
2763
+ },
2764
+ {
2765
+ equalityFn: shallow3
2766
+ }
2767
+ );
2768
+ return () => {
2769
+ unsubscribe();
2770
+ provider_?.off("pending", callback);
2771
+ previousProvider?.off("pending", callback);
2772
+ };
2773
+ }
2774
+
2739
2775
  // src/actions/contracts/writeContract.ts
2740
2776
  async function writeContract({
2741
2777
  address,
@@ -2863,8 +2899,8 @@ function getAccount() {
2863
2899
  };
2864
2900
  case "connecting":
2865
2901
  return {
2866
- address: void 0,
2867
- connector: void 0,
2902
+ address: data?.account,
2903
+ connector,
2868
2904
  isConnected: false,
2869
2905
  isConnecting: true,
2870
2906
  isDisconnected: false,
@@ -2967,7 +3003,7 @@ async function switchNetwork({
2967
3003
  }
2968
3004
 
2969
3005
  // src/actions/accounts/watchAccount.ts
2970
- import shallow3 from "zustand/shallow";
3006
+ import shallow4 from "zustand/shallow";
2971
3007
  function watchAccount(callback, { selector = (x) => x } = {}) {
2972
3008
  const client2 = getClient();
2973
3009
  const handleChange = () => callback(getAccount());
@@ -2979,14 +3015,14 @@ function watchAccount(callback, { selector = (x) => x } = {}) {
2979
3015
  }),
2980
3016
  handleChange,
2981
3017
  {
2982
- equalityFn: shallow3
3018
+ equalityFn: shallow4
2983
3019
  }
2984
3020
  );
2985
3021
  return unsubscribe;
2986
3022
  }
2987
3023
 
2988
3024
  // src/actions/accounts/watchNetwork.ts
2989
- import shallow4 from "zustand/shallow";
3025
+ import shallow5 from "zustand/shallow";
2990
3026
  function watchNetwork(callback, { selector = (x) => x } = {}) {
2991
3027
  const client2 = getClient();
2992
3028
  const handleChange = () => callback(getNetwork());
@@ -2994,14 +3030,14 @@ function watchNetwork(callback, { selector = (x) => x } = {}) {
2994
3030
  ({ data, chains }) => selector({ chainId: data?.chain?.id, chains }),
2995
3031
  handleChange,
2996
3032
  {
2997
- equalityFn: shallow4
3033
+ equalityFn: shallow5
2998
3034
  }
2999
3035
  );
3000
3036
  return unsubscribe;
3001
3037
  }
3002
3038
 
3003
3039
  // src/actions/accounts/watchSigner.ts
3004
- import shallow5 from "zustand/shallow";
3040
+ import shallow6 from "zustand/shallow";
3005
3041
  function watchSigner({ chainId }, callback) {
3006
3042
  const client2 = getClient();
3007
3043
  const handleChange = async () => {
@@ -3018,7 +3054,7 @@ function watchSigner({ chainId }, callback) {
3018
3054
  }),
3019
3055
  handleChange,
3020
3056
  {
3021
- equalityFn: shallow5
3057
+ equalityFn: shallow6
3022
3058
  }
3023
3059
  );
3024
3060
  return unsubscribe;
@@ -3320,6 +3356,7 @@ export {
3320
3356
  sendTransaction,
3321
3357
  fetchFeeData,
3322
3358
  waitForTransaction,
3359
+ watchPendingTransactions,
3323
3360
  writeContract,
3324
3361
  fetchBalance,
3325
3362
  fetchSigner,
@@ -0,0 +1,199 @@
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 };
package/dist/index.d.ts CHANGED
@@ -6,10 +6,10 @@ import { Connector, ConnectorData } from '@wagmi/connectors';
6
6
  export { Connector, ConnectorData, ConnectorEvents } 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-37d6352e.js';
8
8
  export { C as ChainProviderFn, E as Ethereum, 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-37d6352e.js';
9
- import { Address, ResolvedConfig, TypedDataDomain, Narrow, TypedData, TypedDataToPrimitiveTypes, Abi, ExtractAbiFunction, ExtractAbiEventNames, AbiParametersToPrimitiveTypes, ExtractAbiEvent, AbiFunction, AbiParameter, AbiParameterToPrimitiveType, AbiEvent, ExtractAbiFunctionNames } from 'abitype';
9
+ import { Address, ResolvedConfig, TypedData, TypedDataToPrimitiveTypes, TypedDataDomain, Narrow, Abi, ExtractAbiFunction, ExtractAbiEventNames, AbiParametersToPrimitiveTypes, ExtractAbiEvent, AbiFunction, AbiParameter, AbiParameterToPrimitiveType, AbiEvent, ExtractAbiFunctionNames } from 'abitype';
10
10
  export { Address } from 'abitype';
11
- import { PopulatedTransaction, Signer as Signer$1, providers, Contract as Contract$1, ethers, ContractInterface } from 'ethers';
12
- import { O as Options$2, D as DefaultOptions, G as GetConfig$1, a as GetOverridesForAbiStateMutability, U as UnionToIntersection, C as CountOccurrences, A as AbiItemName, I as IsUnknown, E as Event, b as ContractsConfig, c as ContractsResult, d as GetReturnType, e as Or, f as IsNever, N as NotEqual } from './contracts-3880ee54.js';
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 } from './contracts-9eb7706c.js';
13
13
  import { TransactionResponse } from '@ethersproject/providers';
14
14
  export { InjectedConnector, InjectedConnectorOptions } from '@wagmi/connectors/injected';
15
15
  import * as abitype_dist_abi_b1bae27f from 'abitype/dist/abi-b1bae27f';
@@ -935,8 +935,8 @@ type GetAccountResult<TProvider extends Provider = Provider> = {
935
935
  isReconnecting: true;
936
936
  status: 'reconnecting';
937
937
  } | {
938
- address: undefined;
939
- connector: undefined;
938
+ address: Data$1<TProvider>['account'];
939
+ connector: Client<TProvider>['connector'];
940
940
  isConnected: false;
941
941
  isReconnecting: false;
942
942
  isConnecting: true;
@@ -968,12 +968,16 @@ type SignMessageArgs = {
968
968
  type SignMessageResult = ResolvedConfig['BytesType'];
969
969
  declare function signMessage(args: SignMessageArgs): Promise<SignMessageResult>;
970
970
 
971
- type SignTypedDataArgs<TTypedData = unknown> = {
971
+ type SignTypedDataArgs<TTypedData extends TypedData | {
972
+ [key: string]: unknown;
973
+ } = TypedData, TSchema = TTypedData extends TypedData ? TypedDataToPrimitiveTypes<TTypedData> : {
974
+ [key: string]: any;
975
+ }, TValue = TSchema[keyof TSchema]> = {
972
976
  /** Domain or domain signature for origin or contract */
973
977
  domain: TypedDataDomain;
974
978
  /** Named list of all type definitions */
975
979
  types: Narrow<TTypedData>;
976
- } & (TTypedData extends TypedData ? TypedDataToPrimitiveTypes<TTypedData> extends infer TSchema ? TSchema[keyof TSchema] extends infer TValue ? {
980
+ } & ({
977
981
  [key: string]: any;
978
982
  } extends TValue ? {
979
983
  /**
@@ -987,7 +991,7 @@ type SignTypedDataArgs<TTypedData = unknown> = {
987
991
  } : {
988
992
  /** Data to sign */
989
993
  value: TValue;
990
- } : never : never : never);
994
+ });
991
995
  type SignTypedDataResult = string;
992
996
  declare function signTypedData<TTypedData extends TypedData>({ domain, types, value, }: SignTypedDataArgs<TTypedData>): Promise<SignTypedDataResult>;
993
997
 
@@ -1040,9 +1044,8 @@ type FetchTokenResult = {
1040
1044
  };
1041
1045
  declare function fetchToken({ address, chainId, formatUnits: units, }: FetchTokenArgs): Promise<FetchTokenResult>;
1042
1046
 
1043
- type PrepareWriteContractConfig<TAbi = Abi, TFunctionName = string, TSigner extends Signer = Signer, TOptions extends Options$2 = DefaultOptions> = GetConfig$1<{
1044
- abi: TAbi;
1045
- functionName: TFunctionName;
1047
+ type StateMutability$1 = 'nonpayable' | 'payable';
1048
+ type PrepareWriteContractConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TSigner extends Signer = Signer> = GetConfig<TAbi, TFunctionName, StateMutability$1> & {
1046
1049
  /** Chain id to use for provider */
1047
1050
  chainId?: number;
1048
1051
  /** Overrides */
@@ -1052,20 +1055,21 @@ type PrepareWriteContractConfig<TAbi = Abi, TFunctionName = string, TSigner exte
1052
1055
  ] extends [
1053
1056
  infer TAbi_ extends Abi,
1054
1057
  infer TFunctionName_ extends string
1055
- ] ? ExtractAbiFunction<TAbi_, TFunctionName_>['stateMutability'] : 'nonpayable' | 'payable'>;
1058
+ ] ? ExtractAbiFunction<TAbi_, TFunctionName_>['stateMutability'] : StateMutability$1>;
1056
1059
  /** Custom signer */
1057
1060
  signer?: TSigner | null;
1058
- }, 'nonpayable' | 'payable', TOptions>;
1059
- type PrepareWriteContractResult<TAbi = Abi, TFunctionName extends string = string> = {
1061
+ };
1062
+ type Request$1 = PopulatedTransaction & {
1063
+ to: Address;
1064
+ gasLimit: NonNullable<PopulatedTransaction['gasLimit']>;
1065
+ };
1066
+ type PrepareWriteContractResult<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = {
1060
1067
  abi: TAbi extends Abi ? [ExtractAbiFunction<TAbi, TFunctionName>] : TAbi;
1061
- address: string;
1068
+ address: Address;
1062
1069
  chainId?: number;
1063
1070
  functionName: TFunctionName;
1064
1071
  mode: 'prepared';
1065
- request: PopulatedTransaction & {
1066
- to: Address;
1067
- gasLimit: NonNullable<PopulatedTransaction['gasLimit']>;
1068
- };
1072
+ request: Request$1;
1069
1073
  };
1070
1074
  /**
1071
1075
  * @description Prepares the parameters required for a contract write transaction.
@@ -1082,7 +1086,7 @@ type PrepareWriteContractResult<TAbi = Abi, TFunctionName extends string = strin
1082
1086
  * })
1083
1087
  * const result = await writeContract(config)
1084
1088
  */
1085
- declare function prepareWriteContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TSigner extends Signer = Signer>({ abi, address, args, chainId, functionName, overrides, signer: signer_, }: PrepareWriteContractConfig<TAbi, TFunctionName, TSigner>): Promise<PrepareWriteContractResult<TAbi, TFunctionName>>;
1089
+ declare function prepareWriteContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TSigner extends Signer = Signer>({ abi, address, chainId, functionName, overrides, signer: signer_, ...config }: PrepareWriteContractConfig<TAbi, TFunctionName, TSigner>): Promise<PrepareWriteContractResult<TAbi, TFunctionName>>;
1086
1090
 
1087
1091
  type GetContractArgs<TAbi extends Abi | readonly unknown[] = Abi> = {
1088
1092
  /** Contract address */
@@ -1195,7 +1199,7 @@ type Filters<TAbi extends Abi> = UnionToIntersection<{
1195
1199
  } : never;
1196
1200
  }[number]>;
1197
1201
 
1198
- type MulticallConfig<TContracts extends unknown[]> = {
1202
+ type MulticallConfig<TContracts extends Contract$2[]> = {
1199
1203
  /** Failures in the multicall will fail silently */
1200
1204
  allowFailure?: boolean;
1201
1205
  /** Chain id to use for provider */
@@ -1203,83 +1207,64 @@ type MulticallConfig<TContracts extends unknown[]> = {
1203
1207
  /** Contracts to query */
1204
1208
  contracts: readonly [...ContractsConfig<TContracts>];
1205
1209
  /** Call overrides */
1206
- overrides?: GetOverridesForAbiStateMutability<'pure'> | GetOverridesForAbiStateMutability<'view'>;
1210
+ overrides?: GetOverridesForAbiStateMutability<'pure' | 'view'>;
1207
1211
  };
1208
- type MulticallResult<TContracts extends unknown[]> = ContractsResult<TContracts>;
1212
+ type MulticallResult<TContracts extends Contract$2[]> = ContractsResult<TContracts>;
1209
1213
  declare function multicall<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1210
1214
  abi: TAbi;
1211
1215
  functionName: TFunctionName;
1212
1216
  }[]>({ allowFailure, chainId, contracts, overrides, }: MulticallConfig<TContracts>): Promise<MulticallResult<TContracts>>;
1213
1217
 
1214
- type ReadContractConfig<TAbi = Abi, TFunctionName = string, TOptions extends Options$2 = DefaultOptions> = GetConfig$1<{
1215
- abi: TAbi;
1216
- functionName: TFunctionName;
1218
+ type StateMutability = 'pure' | 'view';
1219
+ type ReadContractConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = GetConfig<TAbi, TFunctionName, StateMutability> & {
1217
1220
  /** Chain id to use for provider */
1218
1221
  chainId?: number;
1219
1222
  /** Call overrides */
1220
- overrides?: GetOverridesForAbiStateMutability<'pure' | 'view'>;
1221
- }, 'pure' | 'view', TOptions>;
1222
- type ReadContractResult<TAbi = Abi, TFunctionName = string> = GetReturnType<{
1223
- abi: TAbi;
1224
- functionName: TFunctionName;
1225
- }>;
1226
- declare function readContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string>({ address, args, chainId, abi, functionName, overrides, }: ReadContractConfig<TAbi, TFunctionName>): Promise<ReadContractResult<TAbi, TFunctionName>>;
1227
-
1228
- type Options$1 = Options$2 & {
1229
- isContractsOptional?: boolean;
1223
+ overrides?: GetOverridesForAbiStateMutability<StateMutability>;
1230
1224
  };
1231
- type ReadContractsConfig<TContracts extends unknown[], TOptions extends Options$1 = DefaultOptions, _Contracts = readonly [
1232
- ...ContractsConfig<TContracts, {
1233
- /** Chain id to use for provider */
1234
- chainId?: number;
1235
- }, TOptions>
1236
- ]> = {
1225
+ type ReadContractResult<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = GetReturnType<TAbi, TFunctionName>;
1226
+ declare function readContract<TAbi extends Abi | readonly unknown[], TFunctionName extends string>({ address, chainId, abi, functionName, overrides, ...config }: ReadContractConfig<TAbi, TFunctionName>): Promise<ReadContractResult<TAbi, TFunctionName>>;
1227
+
1228
+ type ReadContractsConfig<TContracts extends Contract$2[]> = {
1237
1229
  /** Failures in the multicall will fail silently */
1238
1230
  allowFailure?: boolean;
1231
+ /** Contracts to query */
1232
+ contracts: readonly [
1233
+ ...ContractsConfig<TContracts, {
1234
+ /** Chain id to use for provider */
1235
+ chainId?: number;
1236
+ }>
1237
+ ];
1239
1238
  /** Call overrides */
1240
1239
  overrides?: GetOverridesForAbiStateMutability<'pure' | 'view'>;
1241
- } & (TOptions['isContractsOptional'] extends true ? {
1242
- /** Contracts to query */
1243
- contracts?: _Contracts;
1244
- } : {
1245
- /** Contracts to query */
1246
- contracts: _Contracts;
1247
- });
1248
- type ReadContractsResult<TContracts extends unknown[]> = ContractsResult<TContracts>;
1240
+ };
1241
+ type ReadContractsResult<TContracts extends Contract$2[]> = ContractsResult<TContracts>;
1249
1242
  declare function readContracts<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1250
1243
  abi: TAbi;
1251
1244
  functionName: TFunctionName;
1252
1245
  }[]>({ allowFailure, contracts, overrides, }: ReadContractsConfig<TContracts>): Promise<ReadContractsResult<TContracts>>;
1253
1246
 
1254
- type ContractEventConfig<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string> = {
1255
- /** Contract address */
1256
- address: string;
1247
+ type WatchContractEventConfig<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string> = {
1257
1248
  /** Contract ABI */
1258
1249
  abi: Narrow<TAbi>;
1250
+ /** Contract address */
1251
+ address: Address;
1259
1252
  /** Chain id to use for provider */
1260
1253
  chainId?: number;
1261
- /** Event to listen for */
1262
- eventName: IsNever<TEventName> extends true ? string : TEventName;
1254
+ /** Function to invoke on the contract */
1255
+ eventName: GetEventName<TAbi, TEventName>;
1263
1256
  /** Receive only a single event */
1264
1257
  once?: boolean;
1265
1258
  };
1266
- type GetConfig<T> = T extends {
1267
- abi: infer TAbi extends Abi;
1268
- } ? ContractEventConfig<TAbi, ExtractAbiEventNames<TAbi>> : T extends {
1269
- abi: infer TAbi extends readonly unknown[];
1270
- eventName: infer TEventName extends string;
1271
- } ? ContractEventConfig<TAbi, TEventName> : ContractEventConfig;
1272
- type WatchContractEventConfig<TAbi = Abi, TEventName = string> = GetConfig<{
1273
- abi: TAbi;
1274
- eventName: TEventName;
1275
- }>;
1276
- type WatchContractEventCallback<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string, TAbiEvent extends AbiEvent = TAbi extends Abi ? ExtractAbiEvent<TAbi, TEventName> : never> = AbiParametersToPrimitiveTypes<TAbiEvent['inputs']> extends infer TArgs extends readonly unknown[] ? Or<IsNever<TArgs>, NotEqual<TAbi, Abi>> extends true ? (...args: any) => void : (...args: [...args: TArgs, event: Event<TAbiEvent>]) => void : never;
1259
+ type WatchContractEventCallback<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string> = GetListener<TAbi, TEventName>;
1277
1260
  declare function watchContractEvent<TAbi extends Abi | readonly unknown[], TEventName extends string>({ address, abi, chainId, eventName, once, }: WatchContractEventConfig<TAbi, TEventName>, callback: WatchContractEventCallback<TAbi, TEventName>): () => void;
1261
+ 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;
1262
+ 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;
1278
1263
 
1279
- type WatchMulticallConfig<TContracts extends unknown[]> = MulticallConfig<TContracts> & {
1264
+ type WatchMulticallConfig<TContracts extends Contract$2[]> = MulticallConfig<TContracts> & {
1280
1265
  listenToBlock?: boolean;
1281
1266
  };
1282
- type WatchMulticallCallback<TContracts extends unknown[]> = (results: MulticallResult<TContracts>) => void;
1267
+ type WatchMulticallCallback<TContracts extends Contract$2[]> = (results: MulticallResult<TContracts>) => void;
1283
1268
  declare function watchMulticall<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1284
1269
  abi: TAbi;
1285
1270
  functionName: TFunctionName;
@@ -1291,10 +1276,10 @@ type WatchReadContractConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunct
1291
1276
  type WatchReadContractCallback<TAbi extends Abi | readonly unknown[], TFunctionName extends string> = (result: ReadContractResult<TAbi, TFunctionName>) => void;
1292
1277
  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;
1293
1278
 
1294
- type WatchReadContractsConfig<TContracts extends unknown[]> = ReadContractsConfig<TContracts> & {
1279
+ type WatchReadContractsConfig<TContracts extends Contract$2[]> = ReadContractsConfig<TContracts> & {
1295
1280
  listenToBlock?: boolean;
1296
1281
  };
1297
- type WatchReadContractsCallback<TContracts extends unknown[]> = (results: ReadContractsResult<TContracts>) => void;
1282
+ type WatchReadContractsCallback<TContracts extends Contract$2[]> = (results: ReadContractsResult<TContracts>) => void;
1298
1283
  declare function watchReadContracts<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TContracts extends {
1299
1284
  abi: TAbi;
1300
1285
  functionName: TFunctionName;
@@ -1418,14 +1403,19 @@ type WaitForTransactionArgs = {
1418
1403
  type WaitForTransactionResult = providers.TransactionReceipt;
1419
1404
  declare function waitForTransaction({ chainId, confirmations, hash, onSpeedUp, timeout, }: WaitForTransactionArgs): Promise<WaitForTransactionResult>;
1420
1405
 
1421
- type Options = Options$2 & {
1422
- isRequestOptional?: boolean;
1406
+ type WatchPendingTransactionsResult = Transaction;
1407
+ type WatchPendingTransactionsArgs = {
1408
+ chainId?: number;
1423
1409
  };
1410
+ type WatchPendingTransactionsCallback = (transaction: WatchPendingTransactionsResult) => void;
1411
+ declare function watchPendingTransactions(args: WatchPendingTransactionsArgs, callback: WatchPendingTransactionsCallback): () => void;
1412
+
1413
+ type WriteContractMode = 'prepared' | 'recklesslyUnprepared';
1424
1414
  type Request = PopulatedTransaction & {
1425
1415
  to: Address;
1426
1416
  gasLimit: NonNullable<PopulatedTransaction['gasLimit']>;
1427
1417
  };
1428
- type WriteContractPreparedArgs<TOptions extends Options = DefaultOptions> = {
1418
+ type WriteContractPreparedArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string> = {
1429
1419
  /**
1430
1420
  * `recklesslyUnprepared`: Allow to pass through unprepared config. Note: This has
1431
1421
  * [UX pitfalls](https://wagmi.sh/react/prepare-hooks/intro#ux-pitfalls-without-prepare-hooks),
@@ -1436,21 +1426,26 @@ type WriteContractPreparedArgs<TOptions extends Options = DefaultOptions> = {
1436
1426
  * via the {@link prepareWriteContract} function
1437
1427
  * */
1438
1428
  mode: 'prepared';
1429
+ /** Chain id to use for provider */
1430
+ chainId?: number;
1431
+ /** Request to submit transaction for */
1432
+ request: Request;
1439
1433
  args?: never;
1440
1434
  overrides?: never;
1441
- } & (TOptions['isRequestOptional'] extends true ? {
1442
- /** The prepared request. */
1443
- request?: Request;
1444
- } : {
1445
- /** The prepared request. */
1446
- request: Request;
1447
- });
1448
- type WriteContractUnpreparedArgs<TAbi = Abi, TFunctionName = string, TOptions extends Options = DefaultOptions> = {
1435
+ } & Omit<GetConfig<TAbi, TFunctionName, 'nonpayable' | 'payable'>, 'args'>;
1436
+ type WriteContractUnpreparedArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string> = {
1437
+ /**
1438
+ * `recklesslyUnprepared`: Allow to pass through unprepared config. Note: This has
1439
+ * [UX pitfalls](https://wagmi.sh/react/prepare-hooks/intro#ux-pitfalls-without-prepare-hooks),
1440
+ * it is highly recommended to not use this and instead prepare the request upfront
1441
+ * using the {@link prepareWriteContract} function.
1442
+ *
1443
+ * `prepared`: The request has been prepared with parameters required for sending a transaction
1444
+ * via the {@link prepareWriteContract} function
1445
+ * */
1449
1446
  mode: 'recklesslyUnprepared';
1450
- request?: never;
1451
- } & GetConfig$1<{
1452
- abi: TAbi;
1453
- functionName: TFunctionName;
1447
+ /** Chain id to use for provider */
1448
+ chainId?: number;
1454
1449
  /** Call overrides */
1455
1450
  overrides?: GetOverridesForAbiStateMutability<[
1456
1451
  TAbi,
@@ -1459,13 +1454,9 @@ type WriteContractUnpreparedArgs<TAbi = Abi, TFunctionName = string, TOptions ex
1459
1454
  infer TAbi_ extends Abi,
1460
1455
  infer TFunctionName_ extends string
1461
1456
  ] ? ExtractAbiFunction<TAbi_, TFunctionName_>['stateMutability'] : 'nonpayable' | 'payable'>;
1462
- }, 'nonpayable' | 'payable', TOptions>;
1463
- type WriteContractArgs<TAbi = Abi, TFunctionName = string, TOptions extends Options = DefaultOptions> = Omit<GetConfig$1<{
1464
- abi: TAbi;
1465
- functionName: TFunctionName;
1466
- /** Chain id to use for provider */
1467
- chainId?: number;
1468
- }, 'nonpayable' | 'payable', TOptions>, 'args'> & (WriteContractUnpreparedArgs<TAbi, TFunctionName, TOptions> | WriteContractPreparedArgs<TOptions>);
1457
+ request?: never;
1458
+ } & GetConfig<TAbi, TFunctionName, 'nonpayable' | 'payable'>;
1459
+ type WriteContractArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string> = WriteContractUnpreparedArgs<TAbi, TFunctionName> | WriteContractPreparedArgs<TAbi, TFunctionName>;
1469
1460
  type WriteContractResult = SendTransactionResult;
1470
1461
  /**
1471
1462
  * @description Function to call a contract write method.
@@ -1762,4 +1753,4 @@ type CircularReplacer = (key: string, value: any, referenceKey: string) => any;
1762
1753
  */
1763
1754
  declare function serialize(value: any, replacer?: StandardReplacer | null | undefined, indent?: number | null | undefined, circularReplacer?: CircularReplacer | null | undefined): string;
1764
1755
 
1765
- 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, WatchMulticallCallback, WatchMulticallConfig, WatchNetworkCallback, WatchProviderCallback, WatchReadContractCallback, WatchReadContractConfig, WatchReadContractsCallback, WatchReadContractsConfig, WatchSignerCallback, WatchWebSocketProviderCallback, WriteContractArgs, 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, watchProvider, watchReadContract, watchReadContracts, watchSigner, watchWebSocketProvider, writeContract };
1756
+ 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 };
package/dist/index.js CHANGED
@@ -65,13 +65,14 @@ import {
65
65
  watchContractEvent,
66
66
  watchMulticall,
67
67
  watchNetwork,
68
+ watchPendingTransactions,
68
69
  watchProvider,
69
70
  watchReadContract,
70
71
  watchReadContracts,
71
72
  watchSigner,
72
73
  watchWebSocketProvider,
73
74
  writeContract
74
- } from "./chunk-DYHSCPJD.js";
75
+ } from "./chunk-VRBYTA34.js";
75
76
  import {
76
77
  goerli,
77
78
  mainnet
@@ -153,6 +154,7 @@ export {
153
154
  watchContractEvent,
154
155
  watchMulticall,
155
156
  watchNetwork,
157
+ watchPendingTransactions,
156
158
  watchProvider,
157
159
  watchReadContract,
158
160
  watchReadContracts,
@@ -1,4 +1,4 @@
1
- export { g as AbiParameter, h as ContractConfig, b as ContractsConfig, c as ContractsResult, E as Event, i as GetArgs, G as GetConfig, d as GetReturnType, f as IsNever, N as NotEqual, j as Optional, e as Or } from '../contracts-3880ee54.js';
1
+ export { b as Contract, c as ContractsConfig } from '../contracts-9eb7706c.js';
2
2
  import '../index-37d6352e.js';
3
3
  import 'abitype';
4
4
  import 'ethers';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  debounce
3
- } from "../chunk-DYHSCPJD.js";
3
+ } from "../chunk-VRBYTA34.js";
4
4
  import "../chunk-BVC4KGLQ.js";
5
5
  import "../chunk-MQXBDTVK.js";
6
6
  export {
@@ -1,5 +1,5 @@
1
1
  import "../chunk-KX4UEHS5.js";
2
- import "../chunk-DYHSCPJD.js";
2
+ import "../chunk-VRBYTA34.js";
3
3
  import {
4
4
  foundry,
5
5
  goerli,
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.8.6",
5
+ "version": "0.8.8",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/wagmi-dev/wagmi.git",
@@ -115,7 +115,7 @@
115
115
  "eventemitter3": "^4.0.7",
116
116
  "zustand": "^4.1.4",
117
117
  "@wagmi/chains": "0.1.7",
118
- "@wagmi/connectors": "0.1.2"
118
+ "@wagmi/connectors": "0.1.3"
119
119
  },
120
120
  "devDependencies": {
121
121
  "@coinbase/wallet-sdk": "^3.6.0",
@@ -1,334 +0,0 @@
1
- import { AbiParameter as AbiParameter$1, Abi, AbiFunction, AbiParametersToPrimitiveTypes, ExtractAbiFunction, Narrow, AbiStateMutability, ExtractAbiFunctionNames, AbiEvent, AbiParameterToPrimitiveType, Address, 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
- * Check if {@link T} and {@link U} are equal
62
- *
63
- * @param T
64
- * @param U
65
- * @returns `true` if {@link T} and {@link U} are not equal, otherwise `false`
66
- *
67
- * @example
68
- * type Result = NotEqual<'foo', 'bar'>
69
- */
70
- type NotEqual<T, U> = [T] extends [U] ? false : true;
71
- /**
72
- * Convert {@link TKeys} of {@link TObject} to optional properties
73
- *
74
- * @param TObject
75
- * @param TKeys
76
- * @returns {@link TObject} with {@link TKeys} converted to optional properties
77
- *
78
- * @example
79
- * type Result = Optional<{ foo: string; bar: number }, 'foo'>
80
- */
81
- type Optional<TObject, TKeys extends keyof TObject> = {
82
- [K in keyof TObject as K extends TKeys ? never : K]: TObject[K];
83
- } & {
84
- [K in keyof TObject as K extends TKeys ? K : never]?: TObject[K];
85
- };
86
- /**
87
- * Boolean "or" operator
88
- *
89
- * @param T
90
- * @param U
91
- * @returns `true` if either {@link T} or {@link U} are `true`, otherwise `false`
92
- *
93
- * @example
94
- * type Result = Or<true, false>
95
- */
96
- type Or<T, U> = T extends true ? true : U extends true ? true : false;
97
- /**
98
- * Converts {@link Union} to intersection
99
- *
100
- * @param Union - Union to convert
101
- * @returns Intersection of {@link Union}
102
- *
103
- * @example
104
- * type Result = UnionToIntersection<'foo' | 'bar'>
105
- */
106
- type UnionToIntersection<Union> = (Union extends unknown ? (arg: Union) => unknown : never) extends (arg: infer R) => unknown ? R : never;
107
-
108
- type AbiParameter = AbiParameter$1;
109
- /**
110
- * Configuration options for contract types
111
- */
112
- type Options = {
113
- /** Flag for making `abi` optional */
114
- isAbiOptional?: boolean;
115
- /** Flag for making `address` optional */
116
- isAddressOptional?: boolean;
117
- /** Flag for making `args` optional */
118
- isArgsOptional?: boolean;
119
- /** Flag for making `functionName` optional */
120
- isFunctionNameOptional?: boolean;
121
- };
122
- /**
123
- * Default {@link Options}
124
- */
125
- type DefaultOptions = {
126
- isAbiOptional: false;
127
- isAddressOptional: false;
128
- isArgsOptional: false;
129
- isFunctionNameOptional: false;
130
- };
131
- /**
132
- * Gets arguments of contract function
133
- *
134
- * @param TAbi - Contract {@link Abi}
135
- * @param TFunctionName - Name of contract function
136
- * @param TOptions - Options for configuring arguments. Defaults to {@link DefaultOptions}.
137
- * @returns Inferred args of contract function
138
- *
139
- * @example
140
- * type Result = GetArgs<[…], 'tokenURI'>
141
- */
142
- type GetArgs<TAbi extends Abi | readonly unknown[], TFunction extends AbiFunction & {
143
- type: 'function';
144
- }, TOptions extends Options = DefaultOptions> = TFunction['inputs'] extends infer TInputs extends readonly AbiParameter[] ? Or<IsNever<TInputs>, NotEqual<TAbi, Abi>> extends true ? {
145
- /**
146
- * Arguments to pass contract method
147
- *
148
- * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
149
- */
150
- args?: readonly unknown[];
151
- } : TInputs['length'] extends 0 ? {
152
- args?: never;
153
- } : AbiParametersToPrimitiveTypes<TInputs> extends infer TArgs ? TOptions['isArgsOptional'] extends true ? {
154
- /** Arguments to pass contract method */
155
- args?: TArgs;
156
- } : {
157
- /** Arguments to pass contract method */
158
- args: TArgs;
159
- } : never : never;
160
- /**
161
- * Contract configuration object for inferring function name and arguments based on {@link TAbi}.
162
- */
163
- type ContractConfig<TContract = {
164
- [key: string]: unknown;
165
- }, TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TFunction extends AbiFunction & {
166
- type: 'function';
167
- } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : never, TOptions extends Options = DefaultOptions> = (TOptions['isAbiOptional'] extends true ? {
168
- /** Contract ABI */
169
- abi?: Narrow<TAbi>;
170
- } : {
171
- /** Contract ABI */
172
- abi: Narrow<TAbi>;
173
- }) & (TOptions['isAddressOptional'] extends true ? {
174
- /** Contract address */
175
- address?: string;
176
- } : {
177
- /** Contract address */
178
- address: string;
179
- }) & (TOptions['isFunctionNameOptional'] extends true ? {
180
- /** Function to invoke on the contract */
181
- functionName?: IsNever<TFunctionName> extends true ? string : TFunctionName;
182
- } : {
183
- /** Function to invoke on the contract */
184
- functionName: IsNever<TFunctionName> extends true ? string : TFunctionName;
185
- }) & GetArgs<TAbi, TFunction, TOptions> & TContract;
186
- type OmitConfigProperties = 'abi' | 'args' | 'functionName';
187
- /**
188
- * Gets configuration type of contract function
189
- *
190
- * @param TContract - Contract config in `{ abi: Abi, functionName: string }` format
191
- * @param TAbiStateMutibility - State mutability of contract function
192
- * @param TOptions - Options for configuring arguments. Defaults to {@link DefaultOptions}.
193
- * @returns Inferred configuration type of contract function
194
- *
195
- * @example
196
- * type Result = GetConfig<{ abi: […], functionName: 'tokenURI' }, 'view'>
197
- */
198
- type GetConfig<TContract = unknown, TAbiStateMutibility extends AbiStateMutability = AbiStateMutability, TOptions extends Options = DefaultOptions> = TContract extends {
199
- abi: infer TAbi extends Abi;
200
- functionName: infer TFunctionName extends string;
201
- } ? ContractConfig<Omit<TContract, OmitConfigProperties>, TAbi, ExtractAbiFunctionNames<TAbi, TAbiStateMutibility>, ExtractAbiFunction<TAbi, TFunctionName>, TOptions> : TContract extends {
202
- abi: infer TAbi extends readonly unknown[];
203
- functionName: infer TFunctionName extends string;
204
- } ? ContractConfig<Omit<TContract, OmitConfigProperties>, TAbi, TFunctionName, never, TOptions> : ContractConfig<Omit<TContract, OmitConfigProperties>, Abi, string, never, TOptions>;
205
- /**
206
- * Unwraps return type of contract function
207
- *
208
- * @param TAbi - Contract {@link Abi}
209
- * @param TFunctionName - Name of contract function
210
- * @returns Inferred return type of contract function
211
- *
212
- * @example
213
- * type Result = GetResult<[…], 'tokenURI'>
214
- */
215
- type GetResult<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TFunction extends AbiFunction & {
216
- type: 'function';
217
- } = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : never> = TFunction['outputs'] extends infer TOutputs extends readonly AbiParameter[] ? Or<IsNever<TOutputs>, NotEqual<TAbi, Abi>> extends true ? unknown : TOutputs['length'] extends infer TLength ? TLength extends 0 ? void : TLength extends 1 ? AbiParameterToPrimitiveType<TOutputs[0]> : TOutputs extends readonly [...infer _] ? /**
218
- * Return output as array assigned to an object with named keys
219
- *
220
- * | Outputs | Result |
221
- * | --------------------------------------------------------------------- | ---------------------------------------------------------- |
222
- * | `[{ name: 'foo', type: 'uint256' }, { name: 'bar', type: 'string' }]` | `readonly [bigint, string] & { foo: bigint; bar: string }` |
223
- * | `[{ name: 'foo', type: 'uint256' }, { name: '', type: 'string' }]` | `readonly [bigint, string] & { foo: bigint }` |
224
- */ {
225
- [Output in TOutputs[number] as Output extends {
226
- name: string;
227
- } ? Output['name'] extends '' ? never : Output['name'] : never]: AbiParameterToPrimitiveType<Output>;
228
- } & AbiParametersToPrimitiveTypes<TOutputs> : unknown : never : never;
229
- /**
230
- * Gets return type of contract function
231
- *
232
- * @param TContract - Contract config in `{ abi: Abi, functionName: string }` format
233
- * @returns Inferred return type of contract function
234
- *
235
- * @example
236
- * type Result = GetReturnType<{ abi: […], functionName: 'tokenURI' }>
237
- */
238
- type GetReturnType<TContract = unknown> = TContract extends {
239
- abi: infer TAbi extends Abi;
240
- functionName: infer TFunctionName extends string;
241
- } ? GetResult<TAbi, TFunctionName, ExtractAbiFunction<TAbi, TFunctionName>> : TContract extends {
242
- abi: infer TAbi extends readonly unknown[];
243
- functionName: infer TFunctionName extends string;
244
- } ? GetResult<TAbi, TFunctionName> : GetResult;
245
- type MAXIMUM_DEPTH = 20;
246
- /**
247
- * ContractsConfig reducer recursively unwraps function arguments to infer/enforce type param
248
- *
249
- * @param TContracts - Array of contracts in shape of {@link ContractConfig}
250
- * @returns Array of inferred contract configurations
251
- */
252
- type ContractsConfig<TContracts extends unknown[], TContractProperties extends {
253
- [key: string]: unknown;
254
- } = {
255
- [key: string]: unknown;
256
- }, TOptions extends Options = DefaultOptions, Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? GetConfig<TContractProperties, 'pure' | 'view', TOptions>[] : TContracts extends [] ? [] : TContracts extends [infer Head] ? [
257
- ...Result,
258
- GetConfig<Head & TContractProperties, 'pure' | 'view', TOptions>
259
- ] : TContracts extends [infer Head, ...infer Tail] ? ContractsConfig<[
260
- ...Tail
261
- ], TContractProperties, TOptions, [
262
- ...Result,
263
- GetConfig<Head & TContractProperties, 'pure' | 'view', TOptions>
264
- ], [
265
- ...Depth,
266
- 1
267
- ]> : unknown[] extends TContracts ? TContracts : TContracts extends ContractConfig<infer TContract, infer TAbi, infer TFunctionName, infer TFunction>[] ? ContractConfig<Omit<TContract & TContractProperties, OmitConfigProperties>, TAbi, TFunctionName, TFunction, TOptions>[] : GetConfig<TContractProperties, 'pure' | 'view', TOptions>[];
268
- /**
269
- * ContractsResult reducer recursively maps type param to results
270
- *
271
- * @param TContracts - Array of contracts in shape of {@link ContractConfig}
272
- * @returns Array of inferred contract results
273
- */
274
- type ContractsResult<TContracts extends unknown[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? GetReturnType[] : TContracts extends [] ? [] : TContracts extends [infer Head] ? [...Result, GetReturnType<Head>] : TContracts extends [infer Head, ...infer Tail] ? ContractsResult<[...Tail], [...Result, GetReturnType<Head>], [...Depth, 1]> : TContracts extends ContractConfig<infer _TContract, infer TAbi, infer TFunctionName>[] ? GetReturnType<{
275
- abi: TAbi;
276
- functionName: TFunctionName;
277
- }>[] : GetReturnType[];
278
- /**
279
- * Get name for {@link AbiFunction} or {@link AbiEvent}
280
- *
281
- * @param TAbiItem - {@link AbiFunction} or {@link AbiEvent}
282
- * @param IsSignature - Whether to return the signature instead of the name
283
- * @returns Name or signature of function or event
284
- *
285
- * @example
286
- * type Result = AbiItemName<{ type: 'function'; name: 'Foo'; … }>
287
- */
288
- type AbiItemName<TAbiItem extends (AbiFunction & {
289
- type: 'function';
290
- }) | AbiEvent, IsSignature extends boolean = false> = IsSignature extends true ? TAbiItem['inputs'] extends infer TAbiParameters extends readonly AbiParameter[] ? `${TAbiItem['name']}(${Join<[
291
- ...{
292
- [K in keyof TAbiParameters]: TAbiParameters[K]['type'];
293
- }
294
- ], ','>})` : never : TAbiItem['name'];
295
- /**
296
- * Get overrides for {@link AbiStateMutability}
297
- *
298
- * @param TAbiStateMutability - {@link AbiStateMutability}
299
- * @returns Overrides for {@link TAbiStateMutability}
300
- *
301
- * @example
302
- * type Result = GetOverridesForAbiStateMutability<'pure'>
303
- */
304
- type GetOverridesForAbiStateMutability<TAbiStateMutability extends AbiStateMutability> = {
305
- nonpayable: Overrides & {
306
- from?: Address;
307
- };
308
- payable: PayableOverrides & {
309
- from?: Address;
310
- };
311
- pure: CallOverrides;
312
- view: CallOverrides;
313
- }[TAbiStateMutability];
314
- interface Overrides extends ethers.Overrides {
315
- gasLimit?: ResolvedConfig['BigIntType'];
316
- gasPrice?: ResolvedConfig['BigIntType'];
317
- maxFeePerGas?: ResolvedConfig['BigIntType'];
318
- maxPriorityFeePerGas?: ResolvedConfig['BigIntType'];
319
- nonce?: ResolvedConfig['IntType'];
320
- }
321
- interface PayableOverrides extends Overrides {
322
- value?: ResolvedConfig['IntType'] | ResolvedConfig['BigIntType'];
323
- }
324
- interface CallOverrides extends PayableOverrides {
325
- blockTag?: ethers.CallOverrides['blockTag'];
326
- from?: Address;
327
- }
328
- type Event<TAbiEvent extends AbiEvent> = Omit<ethers.Event, 'args' | 'event' | 'eventSignature'> & {
329
- args: AbiParametersToPrimitiveTypes<TAbiEvent['inputs']>;
330
- event: TAbiEvent['name'];
331
- eventSignature: AbiItemName<TAbiEvent, true>;
332
- };
333
-
334
- export { AbiItemName as A, CountOccurrences as C, DefaultOptions as D, Event as E, GetConfig as G, IsUnknown as I, NotEqual as N, Options as O, UnionToIntersection as U, GetOverridesForAbiStateMutability as a, ContractsConfig as b, ContractsResult as c, GetReturnType as d, Or as e, IsNever as f, AbiParameter as g, ContractConfig as h, GetArgs as i, Optional as j };