export type DebouncedLatestSaveHandle = {
    trigger: () => void;
    cancel: () => void;
    flush: () => void;
    isPending: () => boolean;
};
export type DebouncedLatestSaveConfig<TSnapshot, TPayload, TResult> = {
    getSnapshot: () => TSnapshot;
    buildPayload: (snapshot: TSnapshot) => TPayload | null | undefined;
    save: (payload: TPayload) => Promise<TResult>;
    shouldSkip?: (snapshot: TSnapshot) => boolean;
    onSaving?: (snapshot: TSnapshot) => void;
    onSaved?: (result: TResult, sentSnapshotRef: {
        current: TSnapshot | null;
    }) => void;
    onFailed?: (error: unknown, sentSnapshotRef: {
        current: TSnapshot | null;
    }) => void;
    delay?: number;
    maxWait?: number;
    enabled?: boolean;
    retryDelay?: number;
};
export declare function useDebouncedLatestSave<TSnapshot, TPayload, TResult>(config: DebouncedLatestSaveConfig<TSnapshot, TPayload, TResult>): DebouncedLatestSaveHandle;
