import { OrmGenerics } from "../types/ormGenerics";
import { DetermineResponseDataType, iRest, iRestReactiveLifecycle, RequestQueryBody } from "../types/ormInterfaces";
import { SqlDialect } from "../orm/dialects/SqlDialect";
export declare abstract class Executor<G extends OrmGenerics> {
    protected config: iRest<G['RestShortTableName'], G['RestTableInterface'], G['PrimaryKey']>;
    protected request: RequestQueryBody<G['RequestMethod'], G['RestTableInterface'], G['CustomAndRequiredFields'], G['RequestTableOverrides']>;
    protected useNamedParams: boolean;
    constructor(config: iRest<G['RestShortTableName'], G['RestTableInterface'], G['PrimaryKey']>, request: RequestQueryBody<G['RequestMethod'], G['RestTableInterface'], G['CustomAndRequiredFields'], G['RequestTableOverrides']>, useNamedParams?: boolean);
    protected get sqlDialect(): SqlDialect;
    abstract execute(): Promise<DetermineResponseDataType<G['RequestMethod'], G['RestTableInterface']>>;
    runLifecycleHooks<Phase extends keyof iRestReactiveLifecycle<G>>(phase: Phase, args: Parameters<NonNullable<iRestReactiveLifecycle<G>[Phase]>[string]>[0]): Promise<void>;
}
