import { AggregationType, AnalyticsQuery, Direction, FilterCondition, JoinType, TableName, FilterOperator, JoinCondition, ExpressionType, Expression, HavingCondition, JoinClause, GroupBy, Column, FilterValue } from "../../types.gen"; export declare class AnalyticsQueryBuilder { private query; constructor(); /** * Add a column to select */ select(name: string, options?: { alias?: string; aggregation?: AggregationType; distinct?: boolean; }): AnalyticsQueryBuilder; /** * Add a structured expression to select */ selectExpression(expression: ExpressionType, alias?: string): AnalyticsQueryBuilder; /** * Set the table to query from */ from(table: TableName): AnalyticsQueryBuilder; /** * Add a structured join clause */ join(table: TableName, condition: JoinCondition, options?: { type?: JoinType; }): AnalyticsQueryBuilder; /** * Add a join with column equality condition */ joinOn(table: TableName, leftColumn: string, rightColumn: string, type?: JoinType): AnalyticsQueryBuilder; /** * Add a join with USING clause */ joinUsing(table: TableName, columns: string[], type?: JoinType): AnalyticsQueryBuilder; /** * Add a complex filter condition */ where(condition: FilterCondition): AnalyticsQueryBuilder; /** * Create a nested 'AND' filter condition */ static and(conditions: FilterCondition[]): FilterCondition; /** * Create a nested 'OR' filter condition */ static or(conditions: FilterCondition[]): FilterCondition; /** * Add a GROUP BY clause with optional structured HAVING condition */ groupBy(columns: string[], having?: HavingCondition | string): AnalyticsQueryBuilder; /** * Helper to create an aggregate HAVING condition */ static having(func: AggregationType, column: string, operator: FilterOperator, value: FilterValue): HavingCondition; /** * Helper to create an AND HAVING condition */ static havingAnd(...conditions: HavingCondition[]): HavingCondition; /** * Helper to create an OR HAVING condition */ static havingOr(...conditions: HavingCondition[]): HavingCondition; /** * Add an ORDER BY clause */ orderBy(columns: string[], direction?: Direction): AnalyticsQueryBuilder; /** * Set a LIMIT clause */ limit(limit: number): AnalyticsQueryBuilder; /** * Set an OFFSET clause */ offset(offset: number): AnalyticsQueryBuilder; /** * Add a Common Table Expression (CTE) */ withCte(alias: string, query: AnalyticsQuery): AnalyticsQueryBuilder; /** * Build the final query object */ build(): AnalyticsQuery; /** * Helper to create a function expression */ static func(name: string, ...args: ExpressionType[]): ExpressionType; /** * Helper to create a column expression */ static col(name: string): ExpressionType; /** * Helper to create a literal expression */ static lit(value: FilterValue): ExpressionType; } export type { FilterCondition, JoinType, TableName, AggregationType, Direction, FilterOperator, FilterValue, JoinCondition, ExpressionType, Expression, HavingCondition, JoinClause, GroupBy, Column, }; //# sourceMappingURL=AnalyticsQueryBuilder.d.ts.map