import { ISyncEngine, DatabaseAdapter, SyncOptions, SyncResult, SyncQueryOptions, SyncQueryResult } from './types';
import { Coordinator } from './Coordinator';
export declare class SyncEngine implements ISyncEngine {
    private localCoordinator;
    private cloudCoordinator?;
    private options;
    private syncStatus;
    private isInitialized;
    private pullTimer?;
    private pushDebounceTimer?;
    constructor(localAdapter: DatabaseAdapter, options?: SyncOptions);
    private mergeDefaultOptions;
    initialize(): Promise<void>;
    private ensureInitialized;
    setCloudAdapter(cloudAdapter: DatabaseAdapter): Promise<void>;
    save<T extends {
        id: string;
    }>(storeName: string, data: T | T[]): Promise<T[]>;
    delete(storeName: string, ids: string | string[]): Promise<void>;
    sync(): Promise<SyncResult>;
    pull(): Promise<SyncResult>;
    push(): Promise<SyncResult>;
    query<T extends {
        id: string;
    }>(storeName: string, options?: SyncQueryOptions): Promise<SyncQueryResult<T>>;
    enableAutoSync(pullInterval?: number): void;
    disableAutoSync(): void;
    private executePullTask;
    private handleDataChange;
    private canTriggerSync;
    updateSyncOptions(options: Partial<SyncOptions>): SyncOptions;
    clearCloudStores(stores: string | string[]): Promise<void>;
    clearLocalStores(stores: string | string[]): Promise<void>;
    countCloudStoreItems(storeName: string): Promise<number>;
    getlocalCoordinator(): Coordinator;
    getlocalAdapter(): DatabaseAdapter;
    getCloudAdapter(): DatabaseAdapter | undefined;
    dispose(): void;
    disconnectCloud(): void;
    private checkPullAvailable;
    private checkPushAvailable;
    private updateStatus;
}
