import { PgSelectBuilder, QueryBuilder, type CreatePgSelectFromBuilderMode, type SelectedFields, type TableLikeHasEmptySelection } from 'drizzle-orm/pg-core/query-builders'; import { PgColumn, PgTable, type PgSession } from 'drizzle-orm/pg-core'; import { Subquery, WithSubquery, type SQLWrapper } from 'drizzle-orm'; import { entityKind } from 'drizzle-orm/entity'; import { PgViewBase } from 'drizzle-orm/pg-core/view-base'; import type { GetSelectTableName, GetSelectTableSelection } from 'drizzle-orm/query-builders/select.types'; import { SQL } from 'drizzle-orm/sql/sql'; import type { DuckDBDialect } from './dialect.ts'; import type { DrizzleTypeError } from 'drizzle-orm/utils'; type DistinctConfig = boolean | { on: (PgColumn | SQLWrapper)[]; }; export declare class DuckDBSelectBuilder extends PgSelectBuilder { private _fields; private _session; private _dialect; private _withList; private _distinct; constructor(config: { fields: TSelection; session: PgSession | undefined; dialect: DuckDBDialect; withList?: Subquery[]; distinct?: DistinctConfig; }); from(source: TableLikeHasEmptySelection extends true ? DrizzleTypeError<"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause"> : TFrom): CreatePgSelectFromBuilderMode, TSelection extends undefined ? GetSelectTableSelection : TSelection, TSelection extends undefined ? 'single' : 'partial'>; } /** * DuckDB resolves duplicate output names in subqueries and CTEs to the first * matching column, so every select entry point aliases fields by their keys. */ export declare function createDuckDBSelectBuilder(config: { fields: SelectedFields | undefined; session: PgSession | undefined; dialect: DuckDBDialect; withList?: Subquery[]; distinct?: DistinctConfig; }): DuckDBSelectBuilder; export declare function createDuckDBSelectMethods(session: PgSession | undefined, dialect: DuckDBDialect, withList?: Subquery[]): { select: (fields?: SelectedFields) => DuckDBSelectBuilder; selectDistinct: (fields?: SelectedFields) => DuckDBSelectBuilder; selectDistinctOn: (on: (PgColumn | SQLWrapper)[], fields?: SelectedFields) => DuckDBSelectBuilder; }; /** Query builder passed to `$with(...).as(qb => ...)`. */ export declare class DuckDBQueryBuilder extends QueryBuilder { private duckDialect; static readonly [entityKind]: string; constructor(duckDialect: DuckDBDialect); with(...queries: WithSubquery[]): ReturnType; select(): PgSelectBuilder; select(fields: TSelection): PgSelectBuilder; selectDistinct(): PgSelectBuilder; selectDistinct(fields: TSelection): PgSelectBuilder; selectDistinctOn(on: (PgColumn | SQLWrapper)[]): PgSelectBuilder; selectDistinctOn(on: (PgColumn | SQLWrapper)[], fields: TSelection): PgSelectBuilder; } export {};