import type { Compute } from '@bigmi/core' import type { MutateOptions, MutationOptions } from '@tanstack/query-core' import { type ConnectErrorType, type ConnectParameters, type ConnectReturnType, connect, } from '../actions/connect.js' import type { Config } from '../factories/createConfig.js' import type { Connector, CreateConnectorFn } from '../types/connector.js' export function connectMutationOptions( config: config ): { readonly mutationFn: ( variables: ConnectVariables ) => Promise> readonly mutationKey: readonly ['connect'] } { return { mutationFn( variables: ConnectVariables ): Promise> { return connect(config, variables) }, mutationKey: ['connect'], } as const satisfies MutationOptions< ConnectData, ConnectErrorType, ConnectVariables > } export type ConnectData = ConnectReturnType export type ConnectVariables< config extends Config, connector extends Connector | CreateConnectorFn, > = ConnectParameters export type ConnectMutate = < connector extends | config['connectors'][number] | Connector | CreateConnectorFn, >( variables: ConnectVariables, options?: | Compute< MutateOptions< ConnectData, ConnectErrorType, Compute>, context > > | undefined ) => void export type ConnectMutateAsync = < connector extends | config['connectors'][number] | Connector | CreateConnectorFn, >( variables: ConnectVariables, options?: | Compute< MutateOptions< ConnectData, ConnectErrorType, Compute>, context > > | undefined ) => Promise>