type ResultCollection = | "last_statement_all_rows" | "last_statement_first_row" | "last_statement_all_rows_scalar" | "last_statement_first_row_scalar" | "all_statements_all_rows" | "all_statements_first_row" | "all_statements_all_rows_scalar" | "all_statements_first_row_scalar" | "legacy"; type FetchParams = { resultCollection?: ResultCollectionT; }; type SqlResult< T, ResultCollectionT extends ResultCollection > = ResultCollectionT extends "last_statement_first_row" ? T | null : ResultCollectionT extends "all_statements_first_row" ? T[] : ResultCollectionT extends "last_statement_all_rows" ? T[] : ResultCollectionT extends "all_statements_all_rows" ? T[][] : ResultCollectionT extends "last_statement_all_rows_scalar" ? T[keyof T][] : ResultCollectionT extends "all_statements_all_rows_scalar" ? T[keyof T][][] : ResultCollectionT extends "last_statement_first_row_scalar" ? T[keyof T] | null : ResultCollectionT extends "all_statements_first_row_scalar" ? T[keyof T][] : unknown; export type SqlStatement = { content: string; args: Record; fetch( params?: FetchParams // The union is for auto-completion ): Promise>; fetchOne( params?: Omit, "resultCollection"> ): Promise>; /** * Execute the SQL query and return only the first row as a scalar value * @param params - Optional parameters * @returns First row of the query result */ fetchOneScalar( params?: Omit< FetchParams<"last_statement_first_row_scalar">, "resultCollection" > ): Promise>; /** * Execute the SQL query without fetching rows * @param params - Optional parameters */ execute( params?: Omit< FetchParams<"last_statement_first_row_scalar">, "resultCollection" > ): Promise; }; export declare class RawSql { readonly __brand: "RawSql"; readonly value: string; constructor(value: string); } export interface SqlTemplateFunction { (strings: TemplateStringsArray, ...values: any[]): SqlStatement; raw(value: string): RawSql; } export interface DatatableSqlTemplateFunction extends SqlTemplateFunction { query(sql: string, ...params: any[]): SqlStatement; } export declare function datatable(name: string): DatatableSqlTemplateFunction; export declare function ducklake(name: string): SqlTemplateFunction; export interface DucklakeMaterializeOptions { ducklake?: string; table: string; selectSql: string; partition?: string; uniqueKey?: string; partitionCol?: string; } export declare function upsertPartition( opts: DucklakeMaterializeOptions, ): SqlStatement; export declare function appendPartition( opts: Omit, ): SqlStatement;