import { Subquery, type SQLWrapper } from 'drizzle-orm'; import type { AnyPgColumn, PgTable } from 'drizzle-orm/pg-core'; import type { PgViewBase } from 'drizzle-orm/pg-core/view-base'; import { SQL } from 'drizzle-orm/sql/sql'; import type { DuckDBDatabase } from './driver.ts'; export declare const countN: (expr?: SQLWrapper) => SQL; export declare const sumN: (expr: SQLWrapper) => SQL; export declare const avgN: (expr: SQLWrapper) => SQL; export declare const sumDistinctN: (expr: SQLWrapper) => SQL; export declare const percentileCont: (p: number, expr: SQLWrapper) => SQL; export declare const median: (expr: SQLWrapper) => SQL; export declare const anyValue: (expr: SQLWrapper) => SQL; type LanceSqlArgument = SQLWrapper | string | number | boolean | readonly unknown[]; export interface LanceVectorSearchOptions { k?: number; useIndex?: boolean; nprobs?: number; refineFactor?: number; prefilter?: boolean; explainVerbose?: boolean; } export interface LanceFtsOptions { k?: number; prefilter?: boolean; } export interface LanceHybridSearchOptions { k?: number; nprobs?: number; refineFactor?: number; prefilter?: boolean; useIndex?: boolean; alpha?: number; oversampleFactor?: number; } export declare function lanceVectorSearch(table: LanceSqlArgument, vectorColumn: LanceSqlArgument, queryVector: LanceSqlArgument, options?: LanceVectorSearchOptions): SQL; export declare function lanceFts(table: LanceSqlArgument, textColumn: LanceSqlArgument, queryText: LanceSqlArgument, options?: LanceFtsOptions): SQL; export declare function lanceHybridSearch(table: LanceSqlArgument, vectorColumn: LanceSqlArgument, queryVector: LanceSqlArgument, textColumn: LanceSqlArgument, queryText: LanceSqlArgument, options?: LanceHybridSearchOptions): SQL; type PartitionOrder = { partitionBy?: SQLWrapper | SQLWrapper[]; orderBy?: SQLWrapper | SQLWrapper[]; } | undefined; export declare const rowNumber: (options?: PartitionOrder) => SQL; export declare const rank: (options?: PartitionOrder) => SQL; export declare const denseRank: (options?: PartitionOrder) => SQL; export declare const lag: (expr: SQLWrapper, offset?: number, defaultValue?: SQLWrapper, options?: PartitionOrder) => SQL; export declare const lead: (expr: SQLWrapper, offset?: number, defaultValue?: SQLWrapper, options?: PartitionOrder) => SQL; type ValueExpr = SQL | SQL.Aliased | AnyPgColumn; type GroupKey = ValueExpr; type MeasureMap = Record; type NonAggMap = Record; export declare class OlapBuilder { private db; private source?; private keys; private measureMap; private nonAggregates; private wrapNonAggWithAnyValue; private orderByClauses; constructor(db: DuckDBDatabase); from(source: PgTable | Subquery | PgViewBase | SQL): this; groupBy(keys: GroupKey[]): this; measures(measures: MeasureMap): this; selectNonAggregates(fields: NonAggMap, options?: { anyValue?: boolean; }): this; orderBy(...clauses: ValueExpr[]): this; build(): any; run(): any; } export declare const olap: (db: DuckDBDatabase) => OlapBuilder; export {};