import { type PostgresTodosSyncPushResult, type PostgresTodosSyncStore, type PullPostgresTodosSnapshotOptions, type TodosPostgresQueryClient } from "./postgres-sync.js";
import { type CreateLocalSqliteTodosStorageAdapterOptions } from "./local-sqlite.js";
import type { TodosStorageAdapter, TodosStorageContext, TodosStorageImportResult } from "./interfaces.js";
export interface HybridTodosStorageSyncResult {
    pulled: TodosStorageImportResult;
    pushed: PostgresTodosSyncPushResult;
}
export interface HybridTodosRemoteSync {
    ensureSchema(): Promise<void>;
    pushSnapshot(context?: TodosStorageContext): Promise<PostgresTodosSyncPushResult>;
    pullSnapshot(options?: PullPostgresTodosSnapshotOptions, context?: TodosStorageContext): Promise<TodosStorageImportResult>;
    syncOnce(options?: PullPostgresTodosSnapshotOptions, context?: TodosStorageContext): Promise<HybridTodosStorageSyncResult>;
}
export interface HybridTodosStorageAdapter extends TodosStorageAdapter {
    readonly kind: "hybrid";
    readonly remote: HybridTodosRemoteSync;
}
export interface CreateHybridTodosStorageAdapterOptions {
    localAdapter?: TodosStorageAdapter;
    local?: CreateLocalSqliteTodosStorageAdapterOptions;
    syncStore?: PostgresTodosSyncStore;
    postgresClient?: TodosPostgresQueryClient;
    sourceMachineId?: string;
}
export declare function createHybridTodosStorageAdapter(options: CreateHybridTodosStorageAdapterOptions): HybridTodosStorageAdapter;
//# sourceMappingURL=hybrid.d.ts.map