import { ConfigType, CoreDBCon, CoreEntity, EntityConfig, EProperties, EUpDateProperties, ICoreCache, ICoreClient, ICoreKernel, ICoreKernelModule, ICorePresenter, IDataBase, IEntity, QueryInterface, RawQuery } from '@grandlinex/core';
import Database, { RunResult } from 'better-sqlite3';
export type DbType = Database.Database;
export default class SQLCon<K extends ICoreKernel<any> = ICoreKernel<any>, T extends IDataBase<any, any> | null = any, P extends ICoreClient | null = any, C extends ICoreCache | null = any, X extends ICorePresenter<any> | null = any> extends CoreDBCon<DbType, RunResult, K, T, P, C, X> implements IDataBase<DbType, RunResult, K, T, P, C, X> {
    db: DbType | null;
    printLog: boolean;
    private readonly path;
    constructor(module: ICoreKernelModule<any, any, any, any, any>, dbversion: string, printLog?: boolean);
    createEntity<E extends CoreEntity>(config: EntityConfig<E>, entity: EProperties<E>): Promise<E>;
    updateEntity<E extends CoreEntity>(config: EntityConfig<E>, e_id: string, entity: EUpDateProperties<E>): Promise<boolean>;
    updateBulkEntity<E extends IEntity>(config: EntityConfig<E>, e_id: string[], entity: EUpDateProperties<E>): Promise<boolean>;
    getEntityById<E extends CoreEntity>(config: EntityConfig<E>, id: string): Promise<E | null>;
    getEntityBulkById<E extends CoreEntity>(config: EntityConfig<E>, e_id: string[]): Promise<E[]>;
    findEntity<E extends CoreEntity>(config: EntityConfig<E>, search: {
        [D in keyof E]?: E[D] | undefined;
    }): Promise<E | null>;
    deleteEntityById(className: string, id: string): Promise<boolean>;
    deleteEntityBulkById(className: string, e_id: string[]): Promise<boolean>;
    getEntityList<E extends CoreEntity>(q: QueryInterface<E>): Promise<E[]>;
    initEntity<E extends CoreEntity>(className: string, entity: E): Promise<boolean>;
    transformEntityKeys<E extends CoreEntity>(entity: E): string;
    removeConfig(key: string): Promise<void>;
    initNewDB(): Promise<void>;
    connect(): Promise<boolean>;
    getRawDBObject(): DbType | null;
    configExist(key: string): Promise<boolean>;
    setConfig(key: string, value: string): Promise<boolean>;
    getConfig(key: string): Promise<ConfigType>;
    execScripts(list: RawQuery[]): Promise<RunResult[]>;
    disconnect(): Promise<boolean>;
}
