import { DatabaseDriver, DatabaseOption, Index, Encrypted, Records, SortOrder, RequiredLogger } from '../../typings';
declare class Sql implements DatabaseDriver {
    private options;
    private dataSource;
    private storeRepository;
    private indexRepository;
    private ttlRepository;
    private ttlCleanup;
    private timerId;
    private JacksonStore;
    private JacksonIndex;
    private JacksonTTL;
    private logger;
    constructor(options: DatabaseOption, logger: RequiredLogger);
    init({ JacksonStore, JacksonIndex, JacksonTTL }: {
        JacksonStore: any;
        JacksonIndex: any;
        JacksonTTL: any;
    }): Promise<Sql>;
    indexNamespace(): Promise<void>;
    get(namespace: string, key: string): Promise<any>;
    getAll(namespace: string, pageOffset?: number, pageLimit?: number, _?: string, sortOrder?: SortOrder): Promise<Records>;
    getByIndex(namespace: string, idx: Index, pageOffset?: number, pageLimit?: number, _?: string, sortOrder?: SortOrder): Promise<Records>;
    getCount(namespace: string, idx?: Index): Promise<number>;
    put(namespace: string, key: string, val: Encrypted, ttl?: number, ...indexes: any[]): Promise<void>;
    delete(namespace: string, key: string): Promise<any>;
    deleteMany(namespace: string, keys: string[]): Promise<void>;
    close(): Promise<void>;
    getStats(): Record<string, number>;
}
declare const _default: {
    new: (options: {
        db: DatabaseOption;
        logger: RequiredLogger;
    }, entities: any) => Promise<Sql>;
};
export default _default;
