import { Database, Filter } from './database'; import { QueryBuilder } from './filter'; import { ComputedField, Field, Schema, SimpleField } from './schema'; type TableEntry = string; type JoinType = 'inner' | 'left' | 'right' | 'cross'; type JoinEntry = { type?: JoinType; table: TableEntry; on?: string; }; export type ViewOptions = { table: TableEntry; joins?: JoinEntry[]; }; export declare class ViewModel { db: Database; schema: Schema; name: string; fields: Field[]; fieldMap: { [key: string]: SimpleField | ComputedField; }; aliasMap: { [key: string]: string; }; options: ViewOptions; constructor(db: Database, options: ViewOptions); private buildAliasMap; private buildFields; buildFrom(builder: QueryBuilder, filter: Filter): string; model(alias: string): import("./schema").Model | undefined; field(path: string): Field | undefined; } export declare function cloneField(field: SimpleField): SimpleField; export {};