import { ReactiveCacheListener } from './reactive-cache';
export interface MutationPending<T> {
    data: Promise<T>;
    status: 'pending';
}
export interface MutationSuccess<T> {
    data: T;
    status: 'success';
}
export interface MutationFailure {
    data: any;
    status: 'failure';
}
export type MutationResult<T> = MutationPending<T> | MutationSuccess<T> | MutationFailure;
export interface Mutation<T> {
    result: MutationResult<T>;
    timestamp: number;
    isValidating: boolean;
}
export declare const MUTATION_CACHE: import("./reactive-cache").ReactiveCache<Mutation<any>>;
export type MutationListener<T> = ReactiveCacheListener<Mutation<T>>;
export declare function subscribeMutation<T>(key: string, listener: MutationListener<T>): () => void;
export declare function setMutation<T>(key: string, value: Mutation<T>): void;
export declare function getMutation<T>(key: string): Mutation<T> | undefined;
export declare function getMutationListenerSize(key: string): number;
