import type { Annotation, TypeDesc, FieldDef, AtomicFieldDef } from '../../../model/malloy_types'; import type { ExprValue } from '../types/expr-value'; import type { ExpressionDef } from '../types/expression-def'; import type { FieldSpace } from '../types/field-space'; import { MalloyElement } from '../types/malloy-element'; import type { MakeEntry } from '../types/space-entry'; import type { Noteable } from '../types/noteable'; import { extendNoteMethod } from '../types/noteable'; import type { DynamicSpace } from '../field-space/dynamic-space'; import { SpaceField } from '../types/space-field'; export type FieldDeclarationConstructor = new (expr: ExpressionDef, defineName: string, exprSrc?: string) => AtomicFieldDeclaration; export declare abstract class AtomicFieldDeclaration extends MalloyElement implements Noteable, MakeEntry { readonly expr: ExpressionDef; readonly defineName: string; readonly exprSrc?: string | undefined; readonly isNoteableObj = true; extendNote: typeof extendNoteMethod; note?: Annotation; constructor(expr: ExpressionDef, defineName: string, exprSrc?: string | undefined); getName(): string; fieldDef(fs: FieldSpace, exprName: string): FieldDef; abstract typecheckExprValue(expr: ExprValue): void; executesInOutputSpace(): boolean; queryFieldDef(exprFS: FieldSpace, exprName: string): AtomicFieldDef; makeEntry(fs: DynamicSpace): void; } export declare class CalculateFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; executesInOutputSpace(): boolean; } export declare class AggregateFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class GroupByFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class ProjectFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class DeclareFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class MeasureFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class DimensionFieldDeclaration extends AtomicFieldDeclaration { elementType: string; typecheckExprValue(expr: ExprValue): void; } export declare class FieldDefinitionValue extends SpaceField { readonly space: FieldSpace; readonly exprDef: AtomicFieldDeclaration; fieldName: string; constructor(space: FieldSpace, exprDef: AtomicFieldDeclaration); get name(): string; private defInSource?; fieldDef(): FieldDef; private defInQuery?; getQueryFieldDef(fs: FieldSpace): AtomicFieldDef; typeDesc(): TypeDesc; }