import Log4js from 'log4js';
import * as Shardus from '../shardus/shardus-types';
import Profiler from '../utils/profiler';
import Logger from '../logger';
import { Database } from 'sqlite3';
import { GenericObject, ModelAttributes, ModelData, OperationOptions, ParamEntry } from '.';
interface Sqlite3Storage {
    baseDir: string;
    storageConfig: Shardus.StrictStorageConfiguration;
    profiler: Profiler;
    mainLogger: Log4js.Logger;
    initialized: boolean;
    storageModels: {
        [tableName: string]: ModelData;
    };
    db: Database;
    oldDb: Database;
}
declare class Sqlite3Storage {
    oldDBPath: string;
    constructor(models: [string, ModelAttributes][], storageConfig: Shardus.StrictStorageConfiguration, logger: Logger, baseDir: string, profiler: Profiler);
    sqlite3Define(modelName: string, modelAttributes: ModelAttributes): void;
    deleteFolder(path: string): Promise<void>;
    deleteOldDBPath(): Promise<void>;
    init(): Promise<void>;
    close(): Promise<void>;
    runCreate(createStatement: string): Promise<void>;
    _create(table: ModelData, object: unknown, opts: OperationOptions): Promise<unknown>;
    _read(table: ModelData, params: GenericObject, opts: OperationOptions): Promise<unknown>;
    _readOld(table: ModelData, params: GenericObject, opts: OperationOptions): Promise<unknown>;
    _update(table: ModelData, values: GenericObject, where: GenericObject, opts: OperationOptions): Promise<unknown>;
    _delete(table: ModelData, where: GenericObject, opts: OperationOptions): Promise<unknown>;
    _rawQuery(queryString: string, valueArray: unknown[]): Promise<unknown>;
    _rawQueryOld(queryString: string, valueArray: unknown[]): Promise<unknown>;
    params2Array(paramsObj: GenericObject, table: ModelData): ParamEntry[];
    paramsToWhereStringAndValues(paramsArray: ParamEntry[]): {
        whereString: string;
        whereValueArray: unknown[];
    };
    paramsToAssignmentStringAndValues(paramsArray: ParamEntry[]): {
        resultString: string;
        valueArray: unknown[];
    };
    options2string(optionsObj: OperationOptions): string;
    run(sql: string, params?: any[]): Promise<unknown>;
    get(sql: string, params?: any[]): Promise<unknown>;
    all(sql: string, params?: any[]): Promise<unknown>;
    allOld(sql: string, params?: any[]): Promise<unknown>;
}
export default Sqlite3Storage;
