import { Tuple } from "../Tuple";
import { TupleSelector } from "../TupleSelector";
import { TupleOfflineStorageNameService } from "./TupleOfflineStorageNameService";
export interface TransactionDoWorkCallable {
    (TupleStorageTransaction: any): void;
}
export interface TupleStorageBatchSaveArguments {
    tupleSelector: TupleSelector;
    vortexMsg: string;
}
export declare abstract class TupleStorageServiceABC {
    protected name: TupleOfflineStorageNameService;
    protected dbName: string;
    protected constructor(name: TupleOfflineStorageNameService);
    abstract open(): Promise<void>;
    abstract isOpen(): Promise<boolean>;
    abstract close(): Promise<void>;
    abstract truncateStorage(): Promise<void>;
    loadTuples(tupleSelector: TupleSelector): Promise<Tuple[]>;
    abstract loadTuplesEncoded(tupleSelector: TupleSelector): Promise<string | null>;
    saveTuples(tupleSelector: TupleSelector, tuples: Tuple[]): Promise<void>;
    abstract saveTuplesEncoded(tupleSelector: TupleSelector, vortexMsg: string): Promise<void>;
    abstract batchSaveTuplesEncoded(data: TupleStorageBatchSaveArguments[]): Promise<void>;
    abstract deleteTuples(tupleSelector: TupleSelector): Promise<void>;
    abstract deleteOldTuples(deleteDataBeforeDate: Date): Promise<void>;
}
