import { Source } from '.'; import { Expression } from '../expressions'; import { Template } from '../template'; import { Type } from '../types'; export declare type Table = any> = TableSource & { [K in keyof T]: T[K]['expression']; }; export declare function source>(name: string, types: { [K in keyof T]: T[K]; }, alias?: string, columns?: string[]): Table; export declare class TableSource = Record> implements Source<{ [K in keyof T]: T[K]['expression']; }> { $: TableIdentifier; constructor(name: string, types: T, alias?: string, columns?: string[]); } export declare class TableIdentifier = Record> extends Template implements Source<{ [K in keyof T]: T[K]['expression']; }> { name: string[]; private typings; alias?: string | undefined; columns?: string[] | undefined; $: this; expr: { [K in keyof T]: T[K]['expression']; }; type: { [K in keyof T]: T[K]['primitive']; }; constructor(name: string[], typings: T, alias?: string | undefined, columns?: string[] | undefined); toQuery(start?: number): [string, string[]]; toSource(): Template; as(alias: string, columns?: string[]): Table; get types(): T; all(): { [K in keyof T]: Expression; }; }