import type { Abi, AbiStateMutability, Address, Narrow } from 'abitype'; import type { Client } from '../../../clients/createClient.js'; import type { Transport } from '../../../clients/transports/createTransport.js'; import type { ErrorType } from '../../../errors/utils.js'; import type { Account, GetAccountParameter } from '../../../types/account.js'; import type { Chain, GetChainParameter } from '../../../types/chain.js'; import type { ContractFunctionArgs, ContractFunctionName, GetValue, UnionWiden, Widen } from '../../../types/contract.js'; import type { MulticallContracts } from '../../../types/multicall.js'; import { type EncodeFunctionDataErrorType } from '../../../utils/abi/encodeFunctionData.js'; import { type SendCallsErrorType, type SendCallsParameters, type SendCallsReturnType } from './sendCalls.js'; export type WriteContractsParameters = Pick, 'capabilities' | 'version'> & { contracts: MulticallContracts, { mutability: AbiStateMutability; }>; } & GetAccountParameter & GetChainParameter; export type WriteContractsReturnType = SendCallsReturnType; export type WriteContractsErrorType = EncodeFunctionDataErrorType | SendCallsErrorType | ErrorType; /** * Requests for the wallet to sign and broadcast a batch of write contract calls (transactions) to the network. * * - Docs: https://viem.sh/experimental/eip5792/writeContracts * * @param client - Client to use * @param parameters - {@link WriteContractsParameters} * @returns Unique identifier for the call batch. {@link WriteContractsReturnType} * * @example * import { createPublicClient, http, parseAbi } from 'viem' * import { mainnet } from 'viem/chains' * import { writeContracts } from 'viem/experimental' * * const client = createPublicClient({ * chain: mainnet, * transport: http(), * }) * const abi = parseAbi([ * 'function approve(address, uint256) returns (bool)', * 'function transferFrom(address, address, uint256) returns (bool)', * ]) * const id = await writeContracts(client, { * contracts: [ * { * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', * abi, * functionName: 'approve', * args: ['0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC', 100n], * }, * { * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', * abi, * functionName: 'transferFrom', * args: [ * '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC', * '0x0000000000000000000000000000000000000000', * 100n * ], * }, * ], * }) */ export declare function writeContracts(client: Client, parameters: WriteContractsParameters): Promise; export type WriteContractFunctionParameters = ContractFunctionName, args extends ContractFunctionArgs = ContractFunctionArgs, allFunctionNames = ContractFunctionName, allArgs = ContractFunctionArgs> = { address: Address; abi: abi; functionName: allFunctionNames | (functionName extends allFunctionNames ? functionName : never); args?: (abi extends Abi ? UnionWiden : never) | allArgs | undefined; } & (readonly [] extends allArgs ? {} : { args: Widen; }) & GetValue; //# sourceMappingURL=writeContracts.d.ts.map