import { OrmGenerics } from "../types/ormGenerics";
import { DetermineResponseDataType } from "../types/ormInterfaces";
import { Executor } from "./Executor";
declare const SQL_ALLOWLIST_BLOCKED_CODE = "SQL_ALLOWLIST_BLOCKED";
export type SqlAllowListBlockedError = Error & {
    code: typeof SQL_ALLOWLIST_BLOCKED_CODE;
    tableName?: string;
    method?: string;
    normalizedSql: string;
    allowListPath: string;
    sqlAllowList: {
        sql: string;
        table: string | null;
        method: string | null;
        allowListPath: string;
        canAdd: boolean;
    };
};
export declare class SqlExecutor<G extends OrmGenerics> extends Executor<G> {
    private getPostRequestRows;
    private getTypeValidationForColumn;
    private isUuidLikePrimaryColumn;
    private hasDefinedValue;
    private generatePrimaryUuidValue;
    private assignMissingPostPrimaryUuids;
    private buildPostResponseRows;
    private resolveSqlLogMethod;
    execute(): Promise<DetermineResponseDataType<G['RequestMethod'], G['RestTableInterface']>>;
    private isPostgresRuntime;
    private withConnection;
    serialize: (row: any) => {
        [k: string]: unknown;
    };
    formatSQLWithParams(sql: string, params: any[] | {
        [key: string]: any;
    }): string;
    private formatValue;
    private stripRequestMetadata;
    private normalizeRequestPayload;
    private extractRequestBody;
    private extractPrimaryKeyValues;
    private unwrapPrimaryKeyValue;
    private extractPrimaryKeyValuesFromData;
    private broadcastWebsocketIfConfigured;
    runQuery(): Promise<DetermineResponseDataType<G['RequestMethod'], G['RestTableInterface']>>;
    private getQueryBuilder;
    private buildSqlExecutionContext;
    private createResponseFromQueryResult;
    private beginTransaction;
    private commitTransaction;
    private rollbackTransaction;
    private runSqlStatement;
    private createLifecycleHookResponse;
    private createCacheResponseEnvelope;
    private executeQueryWithLifecycle;
    private validateSqlAllowList;
}
export {};
