import { QueryWhere, Scalar, QueryWhereFieldOperatorMap, QuerySort, QueryPager, FieldKey, QuerySelect, Type, QueryOptions, QueryDialect, QueryWhereOptions, QueryComparisonOptions, QueryWhereMap, QuerySelectOptions, QueryRaw, QuerySearch, Query, QueryConflictPaths, EntityMeta, QueryRawFnOptions } from '../type/index.js';
import { CallbackKey } from '../util/index.js';
export declare abstract class AbstractSqlDialect implements QueryDialect {
    readonly escapeIdChar: '`' | '"';
    readonly beginTransactionCommand: string;
    readonly escapeIdRegex: RegExp;
    constructor(escapeIdChar?: '`' | '"', beginTransactionCommand?: string);
    returningId<E>(entity: Type<E>): string;
    search<E>(entity: Type<E>, q?: Query<E>, opts?: QueryOptions): string;
    selectFields<E>(entity: Type<E>, select: QuerySelect<E>, opts: QuerySelectOptions): string;
    selectRelations<E>(entity: Type<E>, select?: QuerySelect<E>, { prefix }?: {
        prefix?: string;
    }): {
        fields: string;
        tables: string;
    };
    select<E>(entity: Type<E>, select: QuerySelect<E>, opts?: QueryOptions): string;
    where<E>(entity: Type<E>, where: QueryWhere<E>, opts: QueryWhereOptions): string;
    compare<E, K extends keyof QueryWhereMap<E>>(entity: Type<E>, key: K, val: QueryWhereMap<E>[K], opts?: QueryComparisonOptions): string;
    compareFieldOperator<E, K extends keyof QueryWhereFieldOperatorMap<E>>(entity: Type<E>, key: FieldKey<E>, op: K, val: QueryWhereFieldOperatorMap<E>[K], opts?: QueryOptions): string;
    getComparisonKey<E>(entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): Scalar;
    sort<E>(entity: Type<E>, sort: QuerySort<E>, { prefix }: QueryOptions): string;
    pager(opts: QueryPager): string;
    count<E>(entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): string;
    find<E>(entity: Type<E>, q: Query<E>, opts?: QueryOptions): string;
    insert<E>(entity: Type<E>, payload: E | E[]): string;
    update<E>(entity: Type<E>, q: QuerySearch<E>, payload: E, opts?: QueryOptions): string;
    upsert<E>(entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): string;
    delete<E>(entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): string;
    escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
    getPersistable<E>(meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): E;
    getPersistables<E>(meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): E[];
    getRawValue(opts: QueryRawFnOptions & {
        value: QueryRaw;
        autoPrefixAlias?: boolean;
    }): string;
    abstract escape(value: unknown): string;
}
