import { entityKind } from "../../entity.js"; import type { GelDialectConfig } from "../dialect.js"; import { GelDialect } from "../dialect.js"; import type { TypedQueryBuilder } from "../../query-builders/query-builder.js"; import type { ColumnsSelection, SQLWrapper } from "../../sql/sql.js"; import { WithSubquery } from "../../subquery.js"; import type { GelColumn } from "../columns/index.js"; import type { WithSubqueryWithSelection } from "../subquery.js"; import { GelSelectBuilder } from "./select.js"; import type { SelectedFields } from "./select.types.js"; export declare class QueryBuilder { static readonly [entityKind]: string; private dialect; private dialectConfig; constructor(dialect?: GelDialect | GelDialectConfig); $with(alias: TAlias): { as(qb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder)): WithSubqueryWithSelection; }; with(...queries: WithSubquery[]): { select: { (): GelSelectBuilder; (fields: TSelection): GelSelectBuilder; }; selectDistinct: { (): GelSelectBuilder; (fields: TSelection): GelSelectBuilder; }; selectDistinctOn: { (on: (GelColumn | SQLWrapper)[]): GelSelectBuilder; (on: (GelColumn | SQLWrapper)[], fields: TSelection): GelSelectBuilder; }; }; select(): GelSelectBuilder; select(fields: TSelection): GelSelectBuilder; selectDistinct(): GelSelectBuilder; selectDistinct(fields: TSelection): GelSelectBuilder; selectDistinctOn(on: (GelColumn | SQLWrapper)[]): GelSelectBuilder; selectDistinctOn(on: (GelColumn | SQLWrapper)[], fields: TSelection): GelSelectBuilder; private getDialect; }