import type { MutateOptions, MutationOptions } from '@tanstack/query-core' import { type SwitchChainErrorType, type SwitchChainParameters, type SwitchChainReturnType, switchChain, } from '../actions/switchChain.js' import type { Config } from '../createConfig.js' import type { MutationParameter } from '../types/query.js' import type { Compute } from '../types/utils.js' export type SwitchChainOptions< config extends Config, context = unknown, > = MutationParameter< SwitchChainData, SwitchChainErrorType, SwitchChainVariables, context > export function switchChainMutationOptions( config: config, options: SwitchChainOptions = {}, ): SwitchChainMutationOptions { return { ...(options.mutation as any), mutationFn(variables) { return switchChain(config, variables) }, mutationKey: ['switchChain'], } } export type SwitchChainMutationOptions = MutationOptions< SwitchChainData, SwitchChainErrorType, SwitchChainVariables > export type SwitchChainData< config extends Config, chainId extends config['chains'][number]['id'], > = Compute> export type SwitchChainVariables< config extends Config, chainId extends config['chains'][number]['id'], > = Compute> export type SwitchChainMutate = < chainId extends config['chains'][number]['id'], >( variables: SwitchChainVariables, options?: | Compute< MutateOptions< SwitchChainData, SwitchChainErrorType, Compute>, context > > | undefined, ) => void export type SwitchChainMutateAsync = < chainId extends config['chains'][number]['id'], >( variables: SwitchChainVariables, options?: | Compute< MutateOptions< SwitchChainData, SwitchChainErrorType, Compute>, context > > | undefined, ) => Promise>