import type { Config, ResolvedRegister, SwitchChainErrorType, } from '@wagmi/core' import type { Compute, ConfigParameter } from '@wagmi/core/internal' import { type SwitchChainData, type SwitchChainMutate, type SwitchChainMutateAsync, type SwitchChainOptions, type SwitchChainVariables, switchChainMutationOptions, } from '@wagmi/core/query' import type { Ref } from 'vue' import { type UseMutationReturnType, useMutation } from '../utils/query.js' import { useChains } from './useChains.js' import { useConfig } from './useConfig.js' export type UseSwitchChainParameters< config extends Config = Config, context = unknown, > = Compute & SwitchChainOptions> export type UseSwitchChainReturnType< config extends Config = Config, context = unknown, > = Compute< UseMutationReturnType< SwitchChainData, SwitchChainErrorType, SwitchChainVariables, context, SwitchChainMutate, SwitchChainMutateAsync > & { /** @deprecated use `useChains` instead */ chains: Ref /** @deprecated use `mutate` instead */ switchChain: SwitchChainMutate /** @deprecated use `mutateAsync` instead */ switchChainAsync: SwitchChainMutateAsync } > /** https://wagmi.sh/vue/api/composables/useSwitchChain */ export function useSwitchChain< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: UseSwitchChainParameters = {}, ): UseSwitchChainReturnType { const config = useConfig(parameters) const options = switchChainMutationOptions(config, parameters as any) const mutation = useMutation(options) type Return = UseSwitchChainReturnType return { ...(mutation as unknown as Return), chains: useChains({ config }) as unknown as Ref, switchChain: mutation.mutate as Return['mutate'], switchChainAsync: mutation.mutateAsync as Return['mutateAsync'], } }