import { SBDocumentData } from "../../../ui2/document/model/utils/sb-document-data";
import { DocumentScannerScanResponse, WrappedImage } from "../../../core-types";
export type SBStoreImageType = "original" | "cropped";
export declare class SBStoreImage {
    documentId: number;
    data: WrappedImage;
    type: SBStoreImageType;
}
/**
 * SBStorePageImage and SBStoreBuffer are treated the same in the DB layer,
 * separate interfaces are used for clarity's sake in the API layer. Please make sure the APIs match
 */
export interface SBStorePageImage {
    data: WrappedImage;
}
export interface SBStoreBuffer {
    data: ArrayBuffer;
}
export type SBStorageQuery = {
    type: "clear";
} | {
    type: "delete";
} | {
    type: "storeDocumentScannerResponse";
    data: DocumentScannerScanResponse;
} | {
    type: "getDocumentScannerResponses";
} | {
    type: "getDocumentScannerResponse";
    data: number;
} | {
    type: "storeImages";
    data: SBStoreImage[];
} | {
    type: "getImages";
    data: number[];
} | {
    type: "deleteImages";
    data: {
        documentId: number;
    };
} | 
/** Document RTUUI storage queries */
{
    type: "getSBDocumentIds";
} | {
    type: "insertSBDocument";
    data: SBDocumentData;
} | {
    type: "getSBDocument";
    data: number;
} | {
    type: "deleteSBDocument";
    data: number;
} | {
    type: "insertSBPageImage";
    data: SBStorePageImage;
} | {
    type: "getSBPageImage";
    data: number;
} | {
    type: "deleteSBPageImages";
    data: number[];
} | {
    type: "insertImageBuffer";
    data: SBStoreBuffer;
} | {
    type: "getImageBuffer";
    data: number;
};
export default class SBIndexedDB {
    private readonly worker;
    constructor();
    tokenCounter: number;
    generateUniqueToken(): string;
    taskMap: Map<any, any>;
    query<T>(query: SBStorageQuery): Promise<T>;
    destroy(): void;
}
