import type { StreamChat } from 'stream-chat';
import type { PendingTask } from '../store/types';
export declare class DBSyncManager {
    static syncStatus: boolean;
    static listeners: Array<(status: boolean) => void>;
    static client: StreamChat | null;
    static connectionChangedListener: {
        unsubscribe: () => void;
    } | null;
    /**
     * Returns weather channel states in local DB are synced with backend or not.
     * @returns boolean
     */
    static getSyncStatus: () => boolean;
    /**
     * Initializes the DBSyncManager. This function should be called only once
     * throughout the lifetime of SDK.
     *
     * @param client
     */
    static init: (client: StreamChat) => Promise<void>;
    /**
     * Subscribes a listener for sync status change.
     *
     * @param listener {function}
     * @returns {function} to unsubscribe the listener.
     */
    static onSyncStatusChange: (listener: (status: boolean) => void) => {
        unsubscribe: () => void;
    };
    static sync: (client: StreamChat) => Promise<void>;
    static syncAndExecutePendingTasks: () => Promise<void>;
    static queueTask: ({ client, task }: {
        client: StreamChat;
        task: PendingTask;
    }) => Promise<(import("stream-chat").APIResponse & {
        message: import("stream-chat").MessageResponse;
    }) | undefined>;
    static executeTask: ({ client, task }: {
        client: StreamChat;
        task: PendingTask;
    }) => Promise<import("stream-chat").APIResponse & {
        message: import("stream-chat").MessageResponse;
    }>;
    static executePendingTasks: (client: StreamChat) => Promise<void>;
    static dropPendingTasks: (conditions: {
        messageId: string;
    }) => Promise<void>;
}
//# sourceMappingURL=DBSyncManager.d.ts.map