import { ModelValidatorSys, ErrorSys } from '@63pokupki/components/lib';
import { Knex } from 'knex';
import { RedisSys } from './RedisSys';
import { UserSys } from './UserSys';
import { CacheSys } from './CacheSys';
import { LogicSys } from './LogicSys';
import { P63Context } from './P63Context';
import { MonitoringSys } from '@63pokupki/monitoring.lib';
import { DbClientSys } from '@63pokupki/proxy-db';
/**
 * SQL Запросы
 */
export default class BaseProxySQLts {
    protected dbProxy: DbClientSys;
    /** Единичный ведомая база данных */
    protected db: Knex;
    /** Редис запросы - база данных для кеширования */
    protected redisSys: RedisSys;
    /** Система валидации данных */
    protected modelValidatorSys: ModelValidatorSys;
    /** Система ошибок */
    protected errorSys: ErrorSys;
    protected userSys: UserSys;
    /** API context */
    protected ctx: P63Context;
    /** система кеширования */
    protected cacheSys: CacheSys;
    /** система мониторинга */
    protected monitoringSys: MonitoringSys;
    protected logicSys: LogicSys;
    /** init */
    constructor(ctx: P63Context);
    /**
     * Выполняем запрос
     */
    protected dbExe<T = any>(vQueryBuilder: Knex.QueryBuilder | Knex.Raw): Promise<T>;
    protected exe<T>(key: string, cb: () => Promise<T>): Promise<void>;
    protected throwExe<T>(key: string, cb: () => Promise<T>): Promise<void>;
    /**
     * Авто кеширование для встраивания в функцию
     * @param sKey - Ключ кеша
     * @param iTimeSec - Время кеширования
     * @param callback - функция получающая данные из БД
     */
    autoCache(sKey: string, iTimeSec: number, callback: any): Promise<any>;
    /**
     * Авто кеширование int переменной для встраивания в функцию
     * @param sKey - Ключ кеша
     * @param iTimeSec - Время кеширования
     * @param callback - функция получающая данные из БД
     */
    autoCacheInt(sKey: string, iTimeSec: number, callback: any): Promise<number>;
    /**
     * Авто кеширование ID переменной для встраивания в функцию
     * @param sKey - Ключ кеша
     * @param iTimeSec - Время кеширования
     * @param callback - функция получающая данные из БД
     */
    autoCacheID(sKey: string, iTimeSec: number, callback: any): Promise<number>;
    /**
     * Очистить кеш редиса
     * @param sKey
     */
    clearCache(sKey: string): Promise<void>;
}
