import { Source } from '.'; import { AnyExpression } from '../expressions'; import { Template } from '../template'; export declare type Query = any> = QuerySource & T; export declare class QuerySource = Record> implements Source { $: QueryDefinition; constructor(tmpl: Template, keys: string[], alias?: string, columns?: string[], cteAlias?: string, cteColumns?: string[]); } export declare class QueryDefinition = Record> extends Template implements Source { $: this; expr: T; tmpl: Template; alias?: string; columns?: string[]; cteAlias?: string; cteColumns?: string[]; keys: (keyof T)[]; constructor(tmpl: Template, keys: string[], alias?: string, columns?: string[], cteAlias?: string, cteColumns?: string[]); as(alias: string, columns?: (keyof T)[]): Query; as>(alias: string, columns?: (keyof NT)[]): Query; asCTE(cteAlias: string, cteColumns?: (keyof T)[]): Query; asCTE>(alias: string, columns?: (keyof NT)[]): Query; toQuery(start?: number): [string, any[]]; toSource(): Template; all(): { [K in keyof T]: T[K]; }; }