import type { MultiMatchSubquery } from "./multi_match_subquery.js";
import type { SqlExpr } from "./types.js";
export type NullFallbackPreference = "auto" | "disabled" | "enforced";
export declare const NullFallbackAuto: NullFallbackPreference;
export declare const NullFallbackDisabled: NullFallbackPreference;
export declare const NullFallbackEnforced: NullFallbackPreference;
export type ResolverResult = {
    identifier: string;
    nullFallback: NullFallbackPreference;
    params: unknown[];
    knownNonEmpty?: boolean;
    multiMatchSubquery?: MultiMatchSubquery;
    afterBuild?: (expr: SqlExpr) => SqlExpr;
};
export type QueryUpdate = {
    select: string;
    count?: string;
    params: unknown[];
};
export interface FieldResolver {
    resolve(field: string): ResolverResult;
    updateQuery?(query: QueryUpdate): QueryUpdate;
}
