import type { MutateOptions, MutationOptions } from '@tanstack/query-core' import type { SignTransactionRequest as viem_SignTransactionRequest } from 'viem' import { type SignTransactionErrorType, type SignTransactionParameters, type SignTransactionReturnType, signTransaction, } from '../actions/signTransaction.js' import type { Config } from '../createConfig.js' import type { SelectChains } from '../types/chain.js' import type { MutationParameter } from '../types/query.js' import type { Compute } from '../types/utils.js' export type SignTransactionOptions< config extends Config, chainId extends config['chains'][number]['id'], request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, context = unknown, > = MutationParameter< SignTransactionData, SignTransactionErrorType, SignTransactionVariables, context > export function signTransactionMutationOptions< config extends Config, chainId extends config['chains'][number]['id'], request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, context, >( config: config, options: SignTransactionOptions = {}, ): SignTransactionMutationOptions { return { ...(options.mutation as any), mutationFn(variables) { return signTransaction(config, variables as any) }, mutationKey: ['signTransaction'], } } export type SignTransactionMutationOptions< config extends Config, chainId extends config['chains'][number]['id'], request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, > = MutationOptions< SignTransactionData, SignTransactionErrorType, SignTransactionVariables > export type SignTransactionData< config extends Config, chainId extends config['chains'][number]['id'], request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, // > = Compute> > = SignTransactionReturnType export type SignTransactionVariables< config extends Config, chainId extends config['chains'][number]['id'], request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, > = SignTransactionParameters export type SignTransactionMutate = < chainId extends config['chains'][number]['id'], const request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, >( variables: SignTransactionVariables & request, options?: | Compute< MutateOptions< SignTransactionData, SignTransactionErrorType, Compute>, context > > | undefined, ) => void export type SignTransactionMutateAsync< config extends Config, context = unknown, > = < chainId extends config['chains'][number]['id'], const request extends viem_SignTransactionRequest< SelectChains[0], SelectChains[0] >, >( variables: SignTransactionVariables & request, options?: | Compute< MutateOptions< SignTransactionData, SignTransactionErrorType, Compute>, context > > | undefined, ) => Promise>