wagmi 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,13 +2,14 @@ import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient, QueryKey, UseInfiniteQueryOptions, QueryFunction, InfiniteQueryObserverResult, UseMutationOptions, UseMutationResult, MutationFunction, MutationKey, UseQueryOptions, QueryObserverResult } from '@tanstack/react-query';
3
3
  import { Persister } from '@tanstack/react-query-persist-client';
4
4
  import * as _wagmi_core from '@wagmi/core';
5
- import { Provider, WebSocketProvider, ClientConfig, Client as Client$1, GetAccountResult, FetchBalanceResult, FetchBalanceArgs, ConnectArgs, ConnectResult, Signer, FetchSignerResult, FetchSignerArgs, SignMessageArgs, SignMessageResult, SignTypedDataArgs, SignTypedDataResult, SwitchNetworkArgs, SwitchNetworkResult, GetContractResult, GetContractArgs, ReadContractsResult, ReadContractsConfig, ReadContractResult, ReadContractConfig, WriteContractArgs, WriteContractResult, PrepareWriteContractResult, PrepareWriteContractConfig, FetchTokenResult, FetchTokenArgs, FetchEnsAddressArgs, FetchEnsAddressResult, FetchEnsAvatarArgs, FetchEnsAvatarResult, FetchEnsNameArgs, FetchEnsNameResult, FetchEnsResolverArgs, FetchEnsResolverResult, FetchBlockNumberArgs, FetchBlockNumberResult, FetchFeeDataResult, FetchFeeDataArgs, GetProviderArgs, GetWebSocketProviderArgs, PrepareSendTransactionResult, PrepareSendTransactionArgs, SendTransactionResult, SendTransactionArgs, SendTransactionPreparedRequest, SendTransactionUnpreparedRequest, FetchTransactionArgs, FetchTransactionResult, WaitForTransactionArgs, WaitForTransactionResult } from '@wagmi/core';
5
+ import { Provider, WebSocketProvider, ClientConfig, Client as Client$1, GetAccountResult, FetchBalanceResult, FetchBalanceArgs, ConnectArgs, ConnectResult, Signer, FetchSignerResult, FetchSignerArgs, SignMessageArgs, SignMessageResult, SignTypedDataArgs, SignTypedDataResult, SwitchNetworkArgs, SwitchNetworkResult, GetContractResult, GetContractArgs, WatchContractEventConfig, ReadContractsResult, ReadContractsConfig, ReadContractResult, ReadContractConfig, WriteContractMode, WriteContractPreparedArgs, WriteContractUnpreparedArgs, WriteContractResult, WriteContractArgs, PrepareWriteContractResult, PrepareWriteContractConfig, FetchTokenResult, FetchTokenArgs, FetchEnsAddressArgs, FetchEnsAddressResult, FetchEnsAvatarArgs, FetchEnsAvatarResult, FetchEnsNameArgs, FetchEnsNameResult, FetchEnsResolverArgs, FetchEnsResolverResult, FetchBlockNumberArgs, FetchBlockNumberResult, FetchFeeDataResult, FetchFeeDataArgs, GetProviderArgs, GetWebSocketProviderArgs, PrepareSendTransactionResult, PrepareSendTransactionArgs, SendTransactionResult, SendTransactionArgs, SendTransactionPreparedRequest, SendTransactionUnpreparedRequest, FetchTransactionArgs, FetchTransactionResult, WaitForTransactionArgs, WaitForTransactionResult } from '@wagmi/core';
6
6
  export { AddChainError, Chain, ChainDoesNotSupportMulticallError, ChainMismatchError, ChainNotConfiguredError, ChainProviderFn, Connector, ConnectorAlreadyConnectedError, ConnectorData, ConnectorEvents, ConnectorNotFoundError, ContractMethodDoesNotExistError, ContractMethodNoResultError, ContractMethodRevertedError, ContractResultDecodeError, ProviderChainsNotFound, ProviderRpcError, ResourceUnavailableError, RpcError, Storage, SwitchChainError, SwitchChainNotSupportedError, Unit, UserRejectedRequestError, configureChains, createStorage, deepEqual, deserialize, erc20ABI, erc4626ABI, erc721ABI, goerli, mainnet, readContracts, serialize } from '@wagmi/core';
7
7
  import * as React from 'react';
8
- import { Address, TypedData, TypedDataToPrimitiveTypes, TypedDataDomain, ResolvedConfig, Abi, ExtractAbiEventNames, ExtractAbiEvent, AbiEvent, Narrow, AbiParametersToPrimitiveTypes } from 'abitype';
8
+ import * as abitype from 'abitype';
9
+ import { Address, TypedData, TypedDataToPrimitiveTypes, TypedDataDomain, ResolvedConfig, Abi, AbiEvent, ExtractAbiEvent, AbiParametersToPrimitiveTypes } from 'abitype';
9
10
  export { Address } from 'abitype';
10
11
  import { BigNumber, Transaction } from 'ethers';
11
- import { Optional, IsNever, Or, NotEqual, Event, ContractsConfig } from '@wagmi/core/internal';
12
+ import { Contract, ContractsConfig } from '@wagmi/core/internal';
12
13
  import * as _ethersproject_providers from '@ethersproject/providers';
13
14
 
14
15
  type CreateClientConfig<TProvider extends Provider = Provider, TWebSocketProvider extends WebSocketProvider = WebSocketProvider> = ClientConfig<TProvider, TWebSocketProvider> & {
@@ -97,6 +98,13 @@ declare module 'ethers/lib/utils.js' {
97
98
  v?: number;
98
99
  } | ResolvedConfig['BytesType'] | string): string;
99
100
  }
101
+ /**
102
+ * Makes {@link TKeys} optional in {@link TType} while preserving type inference.
103
+ */
104
+ type PartialBy<TType, TKeys extends keyof TType> = Partial<Pick<TType, TKeys>> & Omit<TType, TKeys>;
105
+ type DeepPartial<T, MaxDepth extends number, Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MaxDepth ? T : T extends object ? {
106
+ [P in keyof T]?: DeepPartial<T[P], MaxDepth, [...Depth, 1]>;
107
+ } : T;
100
108
  type QueryConfig<TData, TError, TSelectData = TData> = Pick<UseQueryOptions<TData, TError, TSelectData>, 'cacheTime' | 'enabled' | 'isDataEqual' | 'keepPreviousData' | 'select' | 'staleTime' | 'structuralSharing' | 'suspense' | 'onError' | 'onSettled' | 'onSuccess'> & {
101
109
  /** Scope the cache to a given context. */
102
110
  scopeKey?: string;
@@ -190,8 +198,12 @@ declare function useSignMessage({ message, onError, onMutate, onSettled, onSucce
190
198
  variables: SignMessageArgs | undefined;
191
199
  };
192
200
 
193
- type UseSignTypedDataArgs<TTypedData = unknown> = Optional<SignTypedDataArgs<TTypedData>, 'domain' | 'types' | 'value'>;
194
- type UseSignTypedDataConfig<TTypedData = unknown> = MutationConfig<SignTypedDataResult, Error, SignTypedDataArgs<TTypedData>> & UseSignTypedDataArgs<TTypedData>;
201
+ type UseSignTypedDataArgs<TTypedData extends TypedData | {
202
+ [key: string]: unknown;
203
+ } = TypedData> = PartialBy<SignTypedDataArgs<TTypedData>, 'domain' | 'types' | 'value'>;
204
+ type UseSignTypedDataConfig<TTypedData extends TypedData | {
205
+ [key: string]: unknown;
206
+ } = TypedData> = MutationConfig<SignTypedDataResult, Error, SignTypedDataArgs<TTypedData>> & UseSignTypedDataArgs<TTypedData>;
195
207
  declare function useSignTypedData<TTypedData extends TypedData>({ domain, types, value, onError, onMutate, onSettled, onSuccess, }?: UseSignTypedDataConfig<TTypedData>): {
196
208
  data: string | undefined;
197
209
  error: Error | null;
@@ -203,7 +215,13 @@ declare function useSignTypedData<TTypedData extends TypedData>({ domain, types,
203
215
  signTypedData: <TTypedDataMutate extends TypedData = TTypedData>(args?: UseSignTypedDataArgs<TTypedDataMutate> | undefined) => void;
204
216
  signTypedDataAsync: <TTypedDataMutate_1 extends TypedData = TTypedData>(args?: UseSignTypedDataArgs<TTypedDataMutate_1> | undefined) => Promise<string>;
205
217
  status: "error" | "success" | "loading" | "idle";
206
- variables: SignTypedDataArgs<TTypedData> | undefined;
218
+ variables: SignTypedDataArgs<TTypedData, TTypedData extends TypedData ? abitype.TypedDataToPrimitiveTypes<TTypedData> : {
219
+ [key: string]: any;
220
+ }, (TTypedData extends TypedData ? abitype.TypedDataToPrimitiveTypes<TTypedData> : {
221
+ [key: string]: any;
222
+ })[keyof (TTypedData extends TypedData ? abitype.TypedDataToPrimitiveTypes<TTypedData> : {
223
+ [key: string]: any;
224
+ })]> | undefined;
207
225
  };
208
226
 
209
227
  type UseSwitchNetworkArgs = Partial<SwitchNetworkArgs>;
@@ -232,43 +250,20 @@ type UseContractConfig<TAbi extends Abi | readonly unknown[] = Abi> = Partial<Pi
232
250
  };
233
251
  declare function useContract<TAbi extends Abi | readonly unknown[]>({ address, abi, signerOrProvider, }?: UseContractConfig<TAbi>): GetContractResult<TAbi> | null;
234
252
 
235
- type GetListener<TAbiEvent extends AbiEvent, TAbi = unknown> = AbiParametersToPrimitiveTypes<TAbiEvent['inputs']> extends infer TArgs extends readonly unknown[] ? Or<IsNever<TArgs>, NotEqual<TAbi, Abi>> extends true ? {
253
+ type UseContractEventConfig<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string> = PartialBy<WatchContractEventConfig<TAbi, TEventName> & GetListener<TAbi, TEventName>, 'abi' | 'address' | 'eventName'>;
254
+ declare function useContractEvent<TAbi extends Abi | readonly unknown[], TEventName extends string>({ address, chainId, abi, listener, eventName, once, }?: UseContractEventConfig<TAbi, TEventName>): void;
255
+ 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 ? {
236
256
  /**
237
257
  * Callback when event is emitted
238
258
  *
239
259
  * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link abi} for type inference.
240
260
  */
241
- listener: (...args: any) => void;
261
+ listener: (...args: unknown[]) => void;
242
262
  } : {
243
- /** Callback when event is emitted */
244
- listener: (...args: [...args: TArgs, event: Event<TAbiEvent>]) => void;
245
- } : never;
246
- type ContractEventConfig<TAbi extends Abi | readonly unknown[] = Abi, TEventName extends string = string, TEvent extends AbiEvent = TAbi extends Abi ? ExtractAbiEvent<TAbi, TEventName> : never> = {
247
- /** Contract address */
248
- address?: string;
249
- /** Contract ABI */
250
- abi?: Narrow<TAbi>;
251
- /** Chain id to use for provider */
252
- chainId?: number;
253
- /** Event to listen for */
254
- eventName?: IsNever<TEventName> extends true ? string : TEventName;
255
- /** Receive only a single event */
256
- once?: boolean;
257
- } & GetListener<TEvent, TAbi>;
258
- type GetConfig<T> = T extends {
259
- abi: infer TAbi extends Abi;
260
- eventName: infer TEventName extends string;
261
- } ? ContractEventConfig<TAbi, ExtractAbiEventNames<TAbi>, ExtractAbiEvent<TAbi, TEventName>> : T extends {
262
- abi: infer TAbi extends readonly unknown[];
263
- eventName: infer TEventName extends string;
264
- } ? ContractEventConfig<TAbi, TEventName> : ContractEventConfig;
265
- type UseContractEventConfig<TAbi = Abi, TEventName = string> = GetConfig<{
266
- abi: TAbi;
267
- eventName: TEventName;
268
- }>;
269
- declare function useContractEvent<TAbi extends Abi | readonly unknown[], TEventName extends string>({ address, chainId, abi, listener, eventName, once, }?: UseContractEventConfig<TAbi, TEventName>): void;
263
+ /** Callback when event is emitted */ listener: (...args: TArgs extends readonly unknown[] ? TArgs : unknown[]) => void;
264
+ };
270
265
 
271
- type UseContractInfiniteReadsConfig<TContracts extends unknown[] = unknown[], TPageParam = unknown, TSelectData = ReadContractsResult<TContracts>> = Pick<ReadContractsConfig<TContracts>, 'allowFailure' | 'overrides'> & {
266
+ type UseContractInfiniteReadsConfig<TContracts extends Contract[] = Contract[], TPageParam = unknown, TSelectData = ReadContractsResult<TContracts>> = Pick<ReadContractsConfig<TContracts>, 'allowFailure' | 'overrides'> & {
272
267
  cacheKey: string;
273
268
  contracts(pageParam: TPageParam): readonly [
274
269
  ...ContractsConfig<TContracts, {
@@ -293,12 +288,7 @@ declare function paginatedIndexesConfig<TAbi extends Abi | readonly unknown[], T
293
288
  getNextPageParam: InfiniteQueryConfig<unknown[], Error, TSelectData>['getNextPageParam'];
294
289
  };
295
290
 
296
- type UseContractReadConfig<TAbi = Abi, TFunctionName = string, TSelectData = ReadContractResult<TAbi, TFunctionName>> = ReadContractConfig<TAbi, TFunctionName, {
297
- isAbiOptional: true;
298
- isAddressOptional: true;
299
- isArgsOptional: true;
300
- isFunctionNameOptional: true;
301
- }> & QueryConfig<ReadContractResult<TAbi, TFunctionName>, Error, TSelectData> & {
291
+ type UseContractReadConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TSelectData = ReadContractResult<TAbi, TFunctionName>> = PartialBy<ReadContractConfig<TAbi, TFunctionName>, 'abi' | 'address' | 'args' | 'functionName'> & QueryConfig<ReadContractResult<TAbi, TFunctionName>, Error, TSelectData> & {
302
292
  /** If set to `true`, the cache will depend on the block number */
303
293
  cacheOnBlock?: boolean;
304
294
  /** Subscribe to changes */
@@ -306,13 +296,9 @@ type UseContractReadConfig<TAbi = Abi, TFunctionName = string, TSelectData = Rea
306
296
  };
307
297
  declare function useContractRead<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TSelectData = ReadContractResult<TAbi, TFunctionName>>({ abi, address, args, cacheOnBlock, cacheTime, chainId: chainId_, enabled: enabled_, functionName, isDataEqual, onError, onSettled, onSuccess, overrides, scopeKey, select, staleTime, structuralSharing, suspense, watch, }?: UseContractReadConfig<TAbi, TFunctionName, TSelectData>): UseQueryResult<TSelectData, Error>;
308
298
 
309
- type UseContractReadsConfig<TContracts extends unknown[], TSelectData = ReadContractsResult<TContracts>> = ReadContractsConfig<TContracts, {
310
- isAbiOptional: true;
311
- isAddressOptional: true;
312
- isArgsOptional: true;
313
- isContractsOptional: true;
314
- isFunctionNameOptional: true;
315
- }> & QueryConfig<ReadContractsResult<TContracts>, Error, TSelectData> & {
299
+ type UseContractReadsConfig<TContracts extends Contract[], TSelectData = ReadContractsResult<TContracts>, Config = ReadContractsConfig<TContracts>> = {
300
+ [K in keyof Config]?: K extends 'contracts' ? DeepPartial<Config[K], 2> : Config[K];
301
+ } & QueryConfig<ReadContractsResult<TContracts>, Error, TSelectData> & {
316
302
  /** If set to `true`, the cache will depend on the block number */
317
303
  cacheOnBlock?: boolean;
318
304
  /** Subscribe to changes */
@@ -323,14 +309,10 @@ declare function useContractReads<TAbi extends Abi | readonly unknown[], TFuncti
323
309
  functionName: TFunctionName;
324
310
  }[], TSelectData = ReadContractsResult<TContracts>>({ allowFailure, cacheOnBlock, cacheTime, contracts, enabled: enabled_, isDataEqual, keepPreviousData, onError, onSettled, onSuccess, overrides, scopeKey, select, staleTime, structuralSharing, suspense, watch, }?: UseContractReadsConfig<TContracts, TSelectData>): UseQueryResult<TSelectData, Error>;
325
311
 
326
- type UseContractWriteArgs<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = WriteContractArgs<TAbi, TFunctionName, {
327
- isAbiOptional: true;
328
- isAddressOptional: true;
329
- isArgsOptional: true;
330
- isFunctionNameOptional: true;
331
- isRequestOptional: true;
332
- }>;
333
- type UseContractWriteConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = MutationConfig<WriteContractResult, Error, UseContractWriteArgs> & UseContractWriteArgs<TAbi, TFunctionName>;
312
+ type UseContractWriteArgs<TMode extends WriteContractMode = WriteContractMode, TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = {
313
+ mode: TMode;
314
+ } & (TMode extends 'prepared' ? PartialBy<WriteContractPreparedArgs<TAbi, TFunctionName>, 'abi' | 'address' | 'functionName' | 'request'> : PartialBy<WriteContractUnpreparedArgs<TAbi, TFunctionName>, 'abi' | 'address' | 'args' | 'functionName'>);
315
+ type UseContractWriteConfig<TMode extends WriteContractMode = WriteContractMode, TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = MutationConfig<WriteContractResult, Error, UseContractWriteArgs<TMode, TAbi, TFunctionName>> & UseContractWriteArgs<TMode, TAbi, TFunctionName>;
334
316
  type UseContractWriteMutationArgs<Mode extends 'prepared' | 'recklesslyUnprepared', TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string> = Mode extends 'prepared' ? undefined : {
335
317
  /**
336
318
  * Recklessly pass through unprepared config. Note: This has
@@ -359,7 +341,7 @@ type UseContractWriteMutationArgs<Mode extends 'prepared' | 'recklesslyUnprepare
359
341
  * const { data, isLoading, isSuccess, write } = useContractWrite(config)
360
342
  *
361
343
  */
362
- declare function useContractWrite<TAbi extends Abi | readonly unknown[], TFunctionName extends string>({ address, args, chainId, abi, functionName, mode, overrides, request, onError, onMutate, onSettled, onSuccess, }?: UseContractWriteConfig<TAbi, TFunctionName>): {
344
+ declare function useContractWrite<TMode extends WriteContractMode, TAbi extends Abi | readonly unknown[], TFunctionName extends string>({ address, args, chainId, abi, functionName, mode, overrides, request, onError, onMutate, onSettled, onSuccess, }?: UseContractWriteConfig<TMode, TAbi, TFunctionName>): {
363
345
  data: _wagmi_core.SendTransactionResult | undefined;
364
346
  error: Error | null;
365
347
  isError: boolean;
@@ -368,17 +350,12 @@ declare function useContractWrite<TAbi extends Abi | readonly unknown[], TFuncti
368
350
  isSuccess: boolean;
369
351
  reset: () => void;
370
352
  status: "error" | "success" | "loading" | "idle";
371
- variables: UseContractWriteArgs<Abi, string> | undefined;
372
- write: ((overrideConfig?: UseContractWriteMutationArgs<typeof mode, TAbi, TFunctionName>) => void) | undefined;
373
- writeAsync: ((overrideConfig?: UseContractWriteMutationArgs<typeof mode, TAbi, TFunctionName>) => Promise<_wagmi_core.SendTransactionResult>) | undefined;
353
+ variables: UseContractWriteArgs<WriteContractMode, Abi, string> | undefined;
354
+ write: ((overrideConfig?: UseContractWriteMutationArgs<TMode & WriteContractPreparedArgs<TAbi, TFunctionName>["mode"], TAbi, TFunctionName> | UseContractWriteMutationArgs<TMode & WriteContractUnpreparedArgs<TAbi, TFunctionName>["mode"], TAbi, TFunctionName> | undefined) => void) | undefined;
355
+ writeAsync: ((overrideConfig?: UseContractWriteMutationArgs<TMode & WriteContractPreparedArgs<TAbi, TFunctionName>["mode"], TAbi, TFunctionName> | UseContractWriteMutationArgs<TMode & WriteContractUnpreparedArgs<TAbi, TFunctionName>["mode"], TAbi, TFunctionName> | undefined) => Promise<_wagmi_core.SendTransactionResult>) | undefined;
374
356
  };
375
357
 
376
- type UsePrepareContractWriteConfig<TAbi = Abi, TFunctionName extends string = string, TSigner extends Signer = Signer> = PrepareWriteContractConfig<TAbi, TFunctionName, TSigner, {
377
- isAbiOptional: true;
378
- isAddressOptional: true;
379
- isArgsOptional: true;
380
- isFunctionNameOptional: true;
381
- }> & QueryConfig<PrepareWriteContractResult<TAbi, TFunctionName>, Error>;
358
+ type UsePrepareContractWriteConfig<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string = string, TSigner extends Signer = Signer> = PartialBy<PrepareWriteContractConfig<TAbi, TFunctionName, TSigner>, 'abi' | 'address' | 'args' | 'functionName'> & QueryConfig<PrepareWriteContractResult<TAbi, TFunctionName>, Error>;
382
359
  /**
383
360
  * @description Hook for preparing a contract write to be sent via [`useContractWrite`](/docs/hooks/useContractWrite).
384
361
  *
package/dist/index.js CHANGED
@@ -846,11 +846,7 @@ function useSignMessage({
846
846
  // src/hooks/accounts/useSignTypedData.ts
847
847
  import { signTypedData } from "@wagmi/core";
848
848
  import * as React12 from "react";
849
- function mutationKey4({
850
- domain,
851
- types,
852
- value
853
- }) {
849
+ function mutationKey4({ domain, types, value }) {
854
850
  return [{ entity: "signTypedData", domain, types, value }];
855
851
  }
856
852
  function mutationFn4(args) {
@@ -1381,7 +1377,9 @@ function useContractReads({
1381
1377
  );
1382
1378
  const enabled = React18.useMemo(() => {
1383
1379
  let enabled2 = Boolean(
1384
- enabled_ && contracts?.every((x) => x.abi && x.address && x.functionName)
1380
+ enabled_ && contracts?.every(
1381
+ (x) => x.abi && x.address && x.functionName
1382
+ )
1385
1383
  );
1386
1384
  if (cacheOnBlock)
1387
1385
  enabled2 = Boolean(enabled2 && blockNumber);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "wagmi",
3
3
  "description": "React Hooks for Ethereum",
4
4
  "license": "MIT",
5
- "version": "0.10.0",
5
+ "version": "0.10.2",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/wagmi-dev/wagmi.git",
@@ -106,7 +106,7 @@
106
106
  "@walletconnect/ethereum-provider": "^1.8.0",
107
107
  "abitype": "^0.2.5",
108
108
  "use-sync-external-store": "^1.2.0",
109
- "@wagmi/core": "0.8.7"
109
+ "@wagmi/core": "0.8.9"
110
110
  },
111
111
  "devDependencies": {
112
112
  "@testing-library/react": "^13.3.0",