import type { TypeAdapter } from "../TypeAdapter";
import { Argument, AnyValueSource, OptionalType, ValueType } from "../expressions/values";
import { SqlBuilder } from "../sqlBuilders/SqlBuilder";
export declare class FragmentQueryBuilder {
    __type: ValueType;
    __typeName: string;
    __adapter: TypeAdapter | undefined;
    __optionalType: OptionalType;
    constructor(type: ValueType, typeName: string, optionalType: OptionalType, adapter: TypeAdapter | undefined);
    sql(sql: TemplateStringsArray, ...params: AnyValueSource[]): AnyValueSource;
}
export declare class FragmentFunctionBuilder {
    definitions: Argument<any, any, any, any>[];
    constructor(definitions: Argument<any, any, any, any>[]);
    as(impl: (...vs: AnyValueSource[]) => AnyValueSource): ((...args: any[]) => AnyValueSource);
}
export interface SqlBuilderSource {
    __sqlBuilder: SqlBuilder;
}
export declare class FragmentFunctionBuilderIfValue {
    definitions: Argument<any, any, any, any>[];
    sqlBuilderSource: SqlBuilderSource;
    constructor(sqlBuilderSource: SqlBuilderSource, definitions: Argument<any, any, any, any>[]);
    as(impl: (...vs: AnyValueSource[]) => AnyValueSource): ((...args: any[]) => AnyValueSource);
}
export declare class FragmentFunctionBuilderMaybeOptional {
    definitions: Argument<any, any, any, any>[];
    sqlBuilderSource: SqlBuilderSource;
    constructor(sqlBuilderSource: SqlBuilderSource, definitions: Argument<any, any, any, any>[]);
    as(impl: (...vs: AnyValueSource[]) => AnyValueSource): ((...args: any[]) => AnyValueSource);
}
