import { TableCertificate } from './schema/tables/TableCertificate';
import { TableCertificateField } from './schema/tables/TableCertificateField';
import { TableCommission } from './schema/tables/TableCommission';
import { TableMonitorEvent } from './schema/tables/TableMonitorEvent';
import { TableOutput } from './schema/tables/TableOutput';
import { TableOutputBasket } from './schema/tables/TableOutputBasket';
import { TableOutputTag } from './schema/tables/TableOutputTag';
import { TableOutputTagMap } from './schema/tables/TableOutputTagMap';
import { TableProvenTx } from './schema/tables/TableProvenTx';
import { TableProvenTxReq } from './schema/tables/TableProvenTxReq';
import { TableSyncState } from './schema/tables/TableSyncState';
import { TableTransaction } from './schema/tables/TableTransaction';
import { TableTxLabel } from './schema/tables/TableTxLabel';
import { TableTxLabelMap } from './schema/tables/TableTxLabelMap';
import { TableUser } from './schema/tables/TableUser';
import { StorageReader, StorageReaderOptions } from './StorageReader';
import { AuthId, FindOutputTagMapsArgs, FindProvenTxReqsArgs, FindProvenTxsArgs, FindTxLabelMapsArgs, ProcessSyncChunkResult, RequestSyncChunkArgs, SyncChunk, TrxToken } from '../sdk/WalletStorage.interfaces';
export declare abstract class StorageReaderWriter extends StorageReader {
    constructor(options: StorageReaderWriterOptions);
    abstract dropAllData(): Promise<void>;
    abstract migrate(storageName: string, storageIdentityKey: string): Promise<string>;
    abstract findOutputTagMaps(args: FindOutputTagMapsArgs): Promise<TableOutputTagMap[]>;
    abstract findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>;
    abstract findProvenTxs(args: FindProvenTxsArgs): Promise<TableProvenTx[]>;
    abstract findTxLabelMaps(args: FindTxLabelMapsArgs): Promise<TableTxLabelMap[]>;
    abstract countOutputTagMaps(args: FindOutputTagMapsArgs): Promise<number>;
    abstract countProvenTxReqs(args: FindProvenTxReqsArgs): Promise<number>;
    abstract countProvenTxs(args: FindProvenTxsArgs): Promise<number>;
    abstract countTxLabelMaps(args: FindTxLabelMapsArgs): Promise<number>;
    abstract insertCertificate(certificate: TableCertificate, trx?: TrxToken): Promise<number>;
    abstract insertCertificateField(certificateField: TableCertificateField, trx?: TrxToken): Promise<void>;
    abstract insertCommission(commission: TableCommission, trx?: TrxToken): Promise<number>;
    abstract insertMonitorEvent(event: TableMonitorEvent, trx?: TrxToken): Promise<number>;
    abstract insertOutput(output: TableOutput, trx?: TrxToken): Promise<number>;
    abstract insertOutputBasket(basket: TableOutputBasket, trx?: TrxToken): Promise<number>;
    abstract insertOutputTag(tag: TableOutputTag, trx?: TrxToken): Promise<number>;
    abstract insertOutputTagMap(tagMap: TableOutputTagMap, trx?: TrxToken): Promise<void>;
    abstract insertProvenTx(tx: TableProvenTx, trx?: TrxToken): Promise<number>;
    abstract insertProvenTxReq(tx: TableProvenTxReq, trx?: TrxToken): Promise<number>;
    abstract insertSyncState(syncState: TableSyncState, trx?: TrxToken): Promise<number>;
    abstract insertTransaction(tx: TableTransaction, trx?: TrxToken): Promise<number>;
    abstract insertTxLabel(label: TableTxLabel, trx?: TrxToken): Promise<number>;
    abstract insertTxLabelMap(labelMap: TableTxLabelMap, trx?: TrxToken): Promise<void>;
    abstract insertUser(user: TableUser, trx?: TrxToken): Promise<number>;
    abstract updateCertificate(id: number, update: Partial<TableCertificate>, trx?: TrxToken): Promise<number>;
    abstract updateCertificateField(certificateId: number, fieldName: string, update: Partial<TableCertificateField>, trx?: TrxToken): Promise<number>;
    abstract updateCommission(id: number, update: Partial<TableCommission>, trx?: TrxToken): Promise<number>;
    abstract updateMonitorEvent(id: number, update: Partial<TableMonitorEvent>, trx?: TrxToken): Promise<number>;
    abstract updateOutput(id: number, update: Partial<TableOutput>, trx?: TrxToken): Promise<number>;
    abstract updateOutputBasket(id: number, update: Partial<TableOutputBasket>, trx?: TrxToken): Promise<number>;
    abstract updateOutputTag(id: number, update: Partial<TableOutputTag>, trx?: TrxToken): Promise<number>;
    abstract updateOutputTagMap(outputId: number, tagId: number, update: Partial<TableOutputTagMap>, trx?: TrxToken): Promise<number>;
    abstract updateProvenTx(id: number, update: Partial<TableProvenTx>, trx?: TrxToken): Promise<number>;
    abstract updateProvenTxReq(id: number | number[], update: Partial<TableProvenTxReq>, trx?: TrxToken): Promise<number>;
    abstract updateSyncState(id: number, update: Partial<TableSyncState>, trx?: TrxToken): Promise<number>;
    abstract updateTransaction(id: number | number[], update: Partial<TableTransaction>, trx?: TrxToken): Promise<number>;
    abstract updateTxLabel(id: number, update: Partial<TableTxLabel>, trx?: TrxToken): Promise<number>;
    abstract updateTxLabelMap(transactionId: number, txLabelId: number, update: Partial<TableTxLabelMap>, trx?: TrxToken): Promise<number>;
    abstract updateUser(id: number, update: Partial<TableUser>, trx?: TrxToken): Promise<number>;
    setActive(auth: AuthId, newActiveStorageIdentityKey: string): Promise<number>;
    findCertificateById(id: number, trx?: TrxToken): Promise<TableCertificate | undefined>;
    findCommissionById(id: number, trx?: TrxToken): Promise<TableCommission | undefined>;
    findOutputById(id: number, trx?: TrxToken, noScript?: boolean): Promise<TableOutput | undefined>;
    findOutputBasketById(id: number, trx?: TrxToken): Promise<TableOutputBasket | undefined>;
    findProvenTxById(id: number, trx?: TrxToken | undefined): Promise<TableProvenTx | undefined>;
    findProvenTxReqById(id: number, trx?: TrxToken | undefined): Promise<TableProvenTxReq | undefined>;
    findSyncStateById(id: number, trx?: TrxToken): Promise<TableSyncState | undefined>;
    findTransactionById(id: number, trx?: TrxToken, noRawTx?: boolean): Promise<TableTransaction | undefined>;
    findTxLabelById(id: number, trx?: TrxToken): Promise<TableTxLabel | undefined>;
    findOutputTagById(id: number, trx?: TrxToken): Promise<TableOutputTag | undefined>;
    findUserById(id: number, trx?: TrxToken): Promise<TableUser | undefined>;
    findOrInsertUser(identityKey: string, trx?: TrxToken): Promise<{
        user: TableUser;
        isNew: boolean;
    }>;
    findOrInsertTransaction(newTx: TableTransaction, trx?: TrxToken): Promise<{
        tx: TableTransaction;
        isNew: boolean;
    }>;
    findOrInsertOutputBasket(userId: number, name: string, trx?: TrxToken): Promise<TableOutputBasket>;
    findOrInsertTxLabel(userId: number, label: string, trx?: TrxToken): Promise<TableTxLabel>;
    findOrInsertTxLabelMap(transactionId: number, txLabelId: number, trx?: TrxToken): Promise<TableTxLabelMap>;
    findOrInsertOutputTag(userId: number, tag: string, trx?: TrxToken): Promise<TableOutputTag>;
    findOrInsertOutputTagMap(outputId: number, outputTagId: number, trx?: TrxToken): Promise<TableOutputTagMap>;
    findOrInsertSyncStateAuth(auth: AuthId, storageIdentityKey: string, storageName: string): Promise<{
        syncState: TableSyncState;
        isNew: boolean;
    }>;
    findOrInsertProvenTxReq(newReq: TableProvenTxReq, trx?: TrxToken): Promise<{
        req: TableProvenTxReq;
        isNew: boolean;
    }>;
    findOrInsertProvenTx(newProven: TableProvenTx, trx?: TrxToken): Promise<{
        proven: TableProvenTx;
        isNew: boolean;
    }>;
    abstract processSyncChunk(args: RequestSyncChunkArgs, chunk: SyncChunk): Promise<ProcessSyncChunkResult>;
    tagOutput(partial: Partial<TableOutput>, tag: string, trx?: TrxToken): Promise<void>;
}
export interface StorageReaderWriterOptions extends StorageReaderOptions {
}
//# sourceMappingURL=StorageReaderWriter.d.ts.map