import { Deferred } from './deferred.cjs';
import { MutationFn, PendingMutation, TransactionConfig, TransactionState } from './types.cjs';
export declare function createTransaction<TData extends object = Record<string, unknown>>(config: TransactionConfig<TData>): Transaction<TData>;
export declare function getActiveTransaction(): Transaction | undefined;
export declare class Transaction<T extends object = Record<string, unknown>> {
    id: string;
    state: TransactionState;
    mutationFn: MutationFn<T>;
    mutations: Array<PendingMutation<T>>;
    isPersisted: Deferred<Transaction<T>>;
    autoCommit: boolean;
    createdAt: Date;
    metadata: Record<string, unknown>;
    error?: {
        message: string;
        error: Error;
    };
    constructor(config: TransactionConfig<T>);
    setState(newState: TransactionState): void;
    mutate(callback: () => void): Transaction<T>;
    applyMutations(mutations: Array<PendingMutation<any>>): void;
    rollback(config?: {
        isSecondaryRollback?: boolean;
    }): Transaction<T>;
    touchCollection(): void;
    commit(): Promise<Transaction<T>>;
}
