import type { MutateOptions, MutationOptions } from '@tanstack/query-core' import { type ConnectErrorType, type ConnectParameters, type ConnectReturnType, connect, } from '../actions/connect.js' import type { CreateConnectorFn } from '../connectors/createConnector.js' import type { Config, Connector } from '../createConfig.js' import type { MutationParameter } from '../types/query.js' import type { Compute } from '../types/utils.js' export type ConnectOptions< config extends Config, context = unknown, > = MutationParameter< ConnectData, ConnectErrorType, ConnectVariables, context > export function connectMutationOptions( config: config, options: ConnectOptions = {}, ): ConnectMutationOptions { return { ...(options.mutation as any), mutationFn: async (variables) => { return connect(config, variables) }, mutationKey: ['connect'], } } export type ConnectMutationOptions = MutationOptions< ConnectData, ConnectErrorType, ConnectVariables > export type ConnectData< config extends Config, connector extends Connector | CreateConnectorFn, withCapabilities extends boolean, > = ConnectReturnType export type ConnectVariables< config extends Config, connector extends Connector | CreateConnectorFn, withCapabilities extends boolean, > = ConnectParameters export type ConnectMutate = < connector extends | config['connectors'][number] | Connector | CreateConnectorFn, withCapabilities extends boolean = false, >( variables: ConnectVariables, options?: | Compute< MutateOptions< ConnectData, ConnectErrorType, Compute>, context > > | undefined, ) => void export type ConnectMutateAsync = < connector extends | config['connectors'][number] | Connector | CreateConnectorFn, withCapabilities extends boolean = false, >( variables: ConnectVariables, options?: | Compute< MutateOptions< ConnectData, ConnectErrorType, Compute>, context > > | undefined, ) => Promise>