-
-
Notifications
You must be signed in to change notification settings - Fork 1k
/
useWriteContracts.ts
85 lines (77 loc) · 2.53 KB
/
useWriteContracts.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
'use client'
import { useMutation } from '@tanstack/react-query'
import type { Config, ResolvedRegister } from '@wagmi/core'
import {
type WriteContractsData,
type WriteContractsErrorType,
type WriteContractsMutate,
type WriteContractsMutateAsync,
type WriteContractsVariables,
writeContractsMutationOptions,
} from '@wagmi/core/experimental'
import type { Compute } from '@wagmi/core/internal'
import type { ContractFunctionParameters } from 'viem'
import { useConfig } from '../../hooks/useConfig.js'
import type { ConfigParameter } from '../../types/properties.js'
import type {
UseMutationParameters,
UseMutationReturnType,
} from '../../utils/query.js'
export type UseWriteContractsParameters<
contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
config extends Config = Config,
context = unknown,
> = Compute<
ConfigParameter<config> & {
mutation?:
| UseMutationParameters<
WriteContractsData,
WriteContractsErrorType,
WriteContractsVariables<
contracts,
config,
config['chains'][number]['id']
>,
context
>
| undefined
}
>
export type UseWriteContractsReturnType<
contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
config extends Config = Config,
context = unknown,
> = Compute<
UseMutationReturnType<
WriteContractsData,
WriteContractsErrorType,
WriteContractsVariables<contracts, config, config['chains'][number]['id']>,
context
> & {
writeContracts: WriteContractsMutate<contracts, config, context>
writeContractsAsync: WriteContractsMutateAsync<contracts, config, context>
}
>
/** https://wagmi.sh/react/api/hooks/useWriteContracts */
export function useWriteContracts<
const contracts extends
readonly unknown[] = readonly ContractFunctionParameters[],
config extends Config = ResolvedRegister['config'],
context = unknown,
>(
parameters: UseWriteContractsParameters<contracts, config, context> = {},
): UseWriteContractsReturnType<contracts, config, context> {
const { mutation } = parameters
const config = useConfig(parameters)
const mutationOptions = writeContractsMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...mutation,
...mutationOptions,
})
type Return = UseWriteContractsReturnType<contracts, config, context>
return {
...result,
writeContracts: mutate as Return['writeContracts'],
writeContractsAsync: mutateAsync as Return['writeContractsAsync'],
}
}