import type { MutateOptions, MutationOptions } from '@tanstack/query-core' import type { Abi, ContractConstructorArgs } from 'viem' import { type DeployContractErrorType, type DeployContractParameters, type DeployContractReturnType, deployContract, } from '../actions/deployContract.js' import type { Config } from '../createConfig.js' import type { MutationParameter } from '../types/query.js' import type { Compute } from '../types/utils.js' export type DeployContractOptions< config extends Config, context = unknown, > = MutationParameter< DeployContractData, DeployContractErrorType, DeployContractVariables, context > export function deployContractMutationOptions( config: config, options: DeployContractOptions = {}, ): DeployContractMutationOptions { return { ...(options.mutation as any), mutationFn(variables) { return deployContract(config, variables) }, mutationKey: ['deployContract'], } } export type DeployContractMutationOptions = MutationOptions< DeployContractData, DeployContractErrorType, DeployContractVariables > export type DeployContractData = Compute export type DeployContractVariables< abi extends Abi | readonly unknown[], config extends Config, chainId extends config['chains'][number]['id'], /// allArgs = ContractConstructorArgs, > = DeployContractParameters export type DeployContractMutate = < abi extends Abi | readonly unknown[], chainId extends config['chains'][number]['id'], >( variables: DeployContractVariables, options?: | Compute< MutateOptions< DeployContractData, DeployContractErrorType, Compute>, context > > | undefined, ) => void export type DeployContractMutateAsync< config extends Config, context = unknown, > = < abi extends Abi | readonly unknown[], chainId extends config['chains'][number]['id'], >( variables: DeployContractVariables, options?: | Compute< MutateOptions< DeployContractData, DeployContractErrorType, Compute>, context > > | undefined, ) => Promise