import { Selection } from '../parsing/selection/selection_parsing'; import { Filter } from '../parsing/filtering/filter_parsing'; import { OrderExpression } from '../parsing/sorting/sorting_parsing'; import { JoinExpression } from '../parsing/join_parsing'; import { ColumnRecord, ValueOrNestedValueRecord } from '../record'; import { Table } from '../queries/one/table'; export interface Constructor { new (...args: any[]): T; } export interface SelectStatement { tableName: string; columns: ColumnRecord; filters: Filter[]; joins: JoinExpression[]; orders: OrderExpression[]; selection: Selection | null; distinct: boolean; limit: number | 'all'; offset: number; kind: 'select-statement'; } export declare function createEmptySelectStatement(tableName: string, columns: ColumnRecord): SelectStatement; export declare function addParameterlessFilter(statement: SelectStatement, predicate: Function): SelectStatement; export declare function addParameterizedFilter

(statement: SelectStatement, predicate: Function, userProvided: P): SelectStatement; export declare function addAscendingOrder(statement: SelectStatement, sortBy: Function): SelectStatement; export declare function addDescendingOrder(statement: SelectStatement, sortBy: Function): SelectStatement; export declare function joinTable(statement: SelectStatement, otherTable: Table, left: Function, right: Function): SelectStatement;