import type { TypedQueryBuilder } from "../query-builders/query-builder.js"; import type { AddAliasToSelection } from "../query-builders/select.types.js"; import type { ColumnsSelection, SQL } from "../sql/sql.js"; import type { Subquery, WithSubquery, WithSubqueryWithoutSelection } from "../subquery.js"; import type { QueryBuilder } from "./query-builders/query-builder.js"; export type SubqueryWithSelection = Subquery> & AddAliasToSelection; export type WithSubqueryWithSelection = WithSubquery> & AddAliasToSelection; export interface WithBuilder { (alias: TAlias): { as: { (qb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder)): WithSubqueryWithSelection; (qb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder)): WithSubqueryWithoutSelection; }; }; (alias: TAlias, selection: TSelection): { as: (qb: SQL | ((qb: QueryBuilder) => SQL)) => WithSubqueryWithSelection; }; }