import { Abi, Address, ExtractAbiFunction } from 'abitype'; import { PopulatedTransaction } from 'ethers/lib/ethers'; import { Signer } from '../../types'; import { DefaultOptions, GetConfig, GetOverridesForAbiStateMutability, Options } from '../../types/contracts'; export declare type PrepareWriteContractConfig = GetConfig<{ abi: TAbi; functionName: TFunctionName; /** Chain id to use for provider */ chainId?: number; /** Overrides */ overrides?: GetOverridesForAbiStateMutability<[ TAbi, TFunctionName ] extends [ infer TAbi_ extends Abi, infer TFunctionName_ extends string ] ? ExtractAbiFunction['stateMutability'] : 'nonpayable' | 'payable'>; /** Custom signer */ signer?: TSigner | null; }, 'nonpayable' | 'payable', TOptions>; export declare type PrepareWriteContractResult = { abi: TAbi extends Abi ? [ExtractAbiFunction] : readonly unknown[]; address: string; chainId?: number; functionName: TFunctionName; mode: 'prepared'; request: PopulatedTransaction & { to: Address; gasLimit: NonNullable; }; }; /** * @description Prepares the parameters required for a contract write transaction. * * Returns config to be passed through to `writeContract`. * * @example * import { prepareWriteContract, writeContract } from '@wagmi/core' * * const config = await prepareWriteContract({ * address: '0x...', * abi: wagmiAbi, * functionName: 'mint', * }) * const result = await writeContract(config) */ export declare function prepareWriteContract({ abi, address, args, chainId, functionName, overrides, signer: signer_, }: PrepareWriteContractConfig): Promise>;