'use client' import { useMutation } from '@tanstack/vue-query' import type { Config, GetChainsReturnType, ResolvedRegister, SwitchChainErrorType, } from '@wagmi/core' import type { Evaluate } from '@wagmi/core/internal' import { type SwitchChainData, type SwitchChainMutate, type SwitchChainMutateAsync, type SwitchChainVariables, switchChainMutationOptions, } from '@wagmi/core/query' import type { Ref } from 'vue-demi' import type { ConfigParameter, MaybeRefDeep } from '../types.js' import type { UseMutationParameters, UseMutationReturnType, } from '../utils/query.js' import { useChains } from './useChains.js' import { useConfig } from './useConfig.js' export type UseSwitchChainParameters< config extends Config = Config, context = unknown, > = Evaluate< MaybeRefDeep> & { mutation?: | UseMutationParameters< SwitchChainData, SwitchChainErrorType, SwitchChainVariables, context > | undefined } > export type UseSwitchChainReturnType< config extends Config = Config, context = unknown, > = Evaluate< UseMutationReturnType< SwitchChainData, SwitchChainErrorType, SwitchChainVariables, context > & { chains: Ref>> switchChain: SwitchChainMutate switchChainAsync: SwitchChainMutateAsync } > /** https://wagmi.sh/react/api/hooks/useSwitchChain */ export function useSwitchChain< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: UseSwitchChainParameters = {}, ): UseSwitchChainReturnType { const { mutation } = parameters const config = useConfig(parameters) const mutationOptions = switchChainMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...mutation, ...mutationOptions, }) return { ...result, chains: useChains({ config }), switchChain: mutate, switchChainAsync: mutateAsync, } as UseSwitchChainReturnType }