import { useMutation } from '@tanstack/vue-query' import type { Connector, DisconnectErrorType } from '@wagmi/core' import type { Compute, ConfigParameter } from '@wagmi/core/internal' import { type DisconnectData, type DisconnectMutate, type DisconnectMutateAsync, type DisconnectOptions, type DisconnectVariables, disconnectMutationOptions, } from '@wagmi/core/query' import { computed, type Ref } from 'vue' import type { UseMutationReturnType } from '../utils/query.js' import { useConfig } from './useConfig.js' import { useConnections } from './useConnections.js' export type UseDisconnectParameters = Compute< ConfigParameter & DisconnectOptions > export type UseDisconnectReturnType = Compute< UseMutationReturnType< DisconnectData, DisconnectErrorType, DisconnectVariables, context, DisconnectMutate, DisconnectMutateAsync > & { /** @deprecated use `useConnections` instead */ connectors: Ref /** @deprecated use `mutate` instead */ disconnect: DisconnectMutate /** @deprecated use `mutateAsync` instead */ disconnectAsync: DisconnectMutateAsync } > /** https://wagmi.sh/vue/api/composables/useDisconnect */ export function useDisconnect( parameters: UseDisconnectParameters = {}, ): UseDisconnectReturnType { const config = useConfig(parameters) const connections = useConnections({ config }) const options = disconnectMutationOptions(config, parameters as any) const mutation = useMutation(options) type Return = UseDisconnectReturnType return { ...(mutation as Return), connectors: computed(() => connections.value.map((connection) => connection.connector), ), disconnect: mutation.mutate as Return['mutate'], disconnectAsync: mutation.mutateAsync as Return['mutateAsync'], } }