import { Mutation } from './mutation'; import { MutationCache } from './mutationCache'; import { NetworkMode, RetryDelayValue, RetryValue } from './retryer'; import { QueryMeta } from './typeUtils'; export type MutationFunctionContext = { meta: QueryMeta | undefined; }; export interface MutationInfoConfig { options: MutationInfoOptions; cache: MutationCache; } export type MutationStatus = 'idle' | 'mutating' | 'success' | 'error'; export interface MutationInfoState { data?: TData; error: TError | null; status: MutationStatus; variables?: TVars; } export interface MutationInfoOptions { mutation: Mutation; onSuccess?: (data: TData, variables: TVars, mutationInfo: MutationInfo) => Promise | unknown; onError?: (error: unknown, variables: TVars, mutationInfo: MutationInfo) => Promise | unknown; onSettled?: (data: TData | undefined, error: unknown | null, variables: TVars, mutationInfo: MutationInfo) => Promise | unknown; retry?: RetryValue; retryDelay?: RetryDelayValue; networkMode?: NetworkMode; gcTime?: number; _defaulted?: boolean; meta?: QueryMeta; } interface MutatingAction { type: 'mutating'; variables?: TVars; } interface SuccessAction { type: 'success'; data: TData; } interface ErrorAction { type: 'error'; error: TError; } export type Action = ErrorAction | MutatingAction | SuccessAction; export interface MutationInfo extends ReturnType> { } type MutationInfoListener = (state: MutationInfoState) => void; export declare function createMutationInfo(config: MutationInfoConfig): { subscribe: (listener: MutationInfoListener) => () => void; trigger: (variables: TVars) => Promise; setOptions: (newOptions?: MutationInfoOptions) => void; readonly state: MutationInfoState; readonly meta: QueryMeta | undefined; readonly mutation: Mutation; }; export declare const getDefaultState: () => MutationInfoState; export {};