import type { ObjectWithId, StringMap } from '@naturalcycles/js-lib/types';
import type { JsonSchema } from '@naturalcycles/nodejs-lib/ajv';
import type { Pipeline } from '@naturalcycles/nodejs-lib/stream';
import type { CommonDBOptions, CommonDBReadOptions, CommonDBSaveOptions, CommonDBTransactionOptions, DBTransaction, DBTransactionFn, RunQueryResult } from '../db.model.js';
import type { DBQuery } from '../query/dbQuery.js';
import type { CommonDB, CommonDBSupport } from './common.db.js';
import { CommonDBType } from './common.db.js';
/**
 * No-op implementation of CommonDB interface.
 * To be extended by actual implementations.
 */
export declare class BaseCommonDB implements CommonDB {
    dbType: CommonDBType;
    support: CommonDBSupport;
    ping(): Promise<void>;
    getTables(): Promise<string[]>;
    getTableSchema<ROW extends ObjectWithId>(_table: string): Promise<JsonSchema<ROW>>;
    createTable<ROW extends ObjectWithId>(_table: string, _schema: JsonSchema<ROW>): Promise<void>;
    getByIds<ROW extends ObjectWithId>(_table: string, _ids: string[]): Promise<ROW[]>;
    deleteByQuery<ROW extends ObjectWithId>(_q: DBQuery<ROW>): Promise<number>;
    patchByQuery<ROW extends ObjectWithId>(_q: DBQuery<ROW>, _patch: Partial<ROW>, _opt?: CommonDBOptions): Promise<number>;
    patchById<ROW extends ObjectWithId>(_table: string, _id: string, _patch: Partial<ROW>, _opt?: CommonDBOptions): Promise<void>;
    runQuery<ROW extends ObjectWithId>(_q: DBQuery<ROW>): Promise<RunQueryResult<ROW>>;
    runQueryCount<ROW extends ObjectWithId>(_q: DBQuery<ROW>): Promise<number>;
    saveBatch<ROW extends ObjectWithId>(_table: string, _rows: ROW[], _opt?: CommonDBSaveOptions<ROW>): Promise<void>;
    streamQuery<ROW extends ObjectWithId>(_q: DBQuery<ROW>): Pipeline<ROW>;
    deleteByIds(_table: string, _ids: string[], _opt?: CommonDBOptions): Promise<number>;
    runInTransaction(fn: DBTransactionFn, _opt?: CommonDBTransactionOptions): Promise<void>;
    createTransaction(_opt?: CommonDBTransactionOptions): Promise<DBTransaction>;
    incrementBatch(_table: string, _prop: string, _incrementMap: StringMap<number>, _opt?: CommonDBOptions): Promise<StringMap<number>>;
    multiGet<ROW extends ObjectWithId>(_map: StringMap<string[]>, _opt?: CommonDBReadOptions): Promise<StringMap<ROW[]>>;
    multiSave<ROW extends ObjectWithId>(_map: StringMap<ROW[]>, _opt?: CommonDBSaveOptions<ROW>): Promise<void>;
    multiDelete(_map: StringMap<string[]>, _opt?: CommonDBOptions): Promise<number>;
}
