'use client' import { useMutation } from '@tanstack/react-query' import type { Config, Connector, ResolvedRegister, SwitchConnectionErrorType, } from '@wagmi/core' import type { Compute, ConfigParameter } from '@wagmi/core/internal' import { type SwitchConnectionData, type SwitchConnectionMutate, type SwitchConnectionMutateAsync, type SwitchConnectionOptions, type SwitchConnectionVariables, switchConnectionMutationOptions, } from '@wagmi/core/query' import type { UseMutationReturnType } from '../utils/query.js' import { useConfig } from './useConfig.js' import { useConnections } from './useConnections.js' export type UseSwitchConnectionParameters< config extends Config = Config, context = unknown, > = Compute & SwitchConnectionOptions> export type UseSwitchConnectionReturnType< config extends Config = Config, context = unknown, > = Compute< UseMutationReturnType< SwitchConnectionData, SwitchConnectionErrorType, SwitchConnectionVariables, context, SwitchConnectionMutate, SwitchConnectionMutateAsync > & { /** @deprecated use `useConnections` instead */ connectors: readonly Connector[] /** @deprecated use `mutate` instead */ switchAccount: SwitchConnectionMutate /** @deprecated use `mutateAsync` instead */ switchAccountAsync: SwitchConnectionMutateAsync /** @deprecated use `mutate` instead */ switchConnection: SwitchConnectionMutate /** @deprecated use `mutateAsync` instead */ switchConnectionAsync: SwitchConnectionMutateAsync } > /** https://wagmi.sh/react/api/hooks/useSwitchConnection */ export function useSwitchConnection< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: UseSwitchConnectionParameters = {}, ): UseSwitchConnectionReturnType { const config = useConfig(parameters) const options = switchConnectionMutationOptions(config, parameters) const mutation = useMutation(options) type Return = UseSwitchConnectionReturnType return { ...(mutation as Return), connectors: useConnections({ config }).map( (connection) => connection.connector, ), switchAccount: mutation.mutate as Return['mutate'], switchAccountAsync: mutation.mutateAsync as Return['mutateAsync'], switchConnection: mutation.mutate as Return['mutate'], switchConnectionAsync: mutation.mutateAsync as Return['mutateAsync'], } }