import * as model from '../../../model/malloy_types'; import type { QueryFieldSpace, SourceFieldSpace } from '../types/field-space'; import { FieldName } from '../types/field-space'; import type { MalloyElement } from '../types/malloy-element'; import { SpaceField } from '../types/space-field'; import { WildcardFieldReference } from '../query-items/field-references'; import { RefinedSpace } from './refined-space'; import type { LookupResult } from '../types/lookup-result'; import { QueryInputSpace } from './query-input-space'; import type { SpaceEntry } from '../types/space-entry'; import type { LogMessageOptions, MessageCode, MessageParameterType } from '../../parse-log'; type TranslatedQueryField = { queryFieldDef: model.QueryFieldDef; typeDesc: model.TypeDesc; }; /** * The output space of a query operation. It is not named "QueryOutputSpace" * because this is the namespace of the Query which is a layer of an output and * an input space. It constructed with the query operation. A QueryInputSpace is * created and paired when a QueryOperationSpace is created. */ export declare abstract class QueryOperationSpace extends RefinedSpace implements QueryFieldSpace { readonly queryInputSpace: SourceFieldSpace; readonly nestParent: QueryOperationSpace | undefined; readonly astEl: MalloyElement; protected exprSpace: QueryInputSpace; abstract readonly segmentType: 'reduce' | 'project' | 'index'; expandedWild: Record; drillDimensions: { nestPath: string[]; firstDrill: MalloyElement; dimensionPath: string[]; satisfied: boolean; }[]; compositeFieldUsers: ({ type: 'filter'; filter: model.FilterCondition; } | { type: 'field'; name: string; field: SpaceField; })[]; _fieldUsage: model.FieldUsage[] | undefined; get fieldUsage(): model.FieldUsage[]; constructor(queryInputSpace: SourceFieldSpace, refineThis: model.PipeSegment | undefined, nestParent: QueryOperationSpace | undefined, astEl: MalloyElement); abstract addRefineFromFields(refineThis: model.PipeSegment): void; logError(code: T, parameters: MessageParameterType, options?: Omit): T; accessProtectionLevel(): model.AccessModifierLabel; inputSpace(): QueryInputSpace; outputSpace(): QueryOperationSpace; isQueryOutputSpace(): boolean; protected addWild(wild: WildcardFieldReference): void; protected addValidatedCompositeFieldUserFromEntry(name: string, entry: SpaceEntry): void; addFieldUserFromFilter(filter: model.FilterCondition): void; newEntry(name: string, logTo: MalloyElement, entry: SpaceEntry): void; isQueryFieldSpace(): this is QueryFieldSpace; } export declare abstract class QuerySpace extends QueryOperationSpace { addRefineFromFields(refineThis: model.PipeSegment): void; pushFields(...defs: MalloyElement[]): void; canContain(_typeDescResult: model.TypeDesc | undefined): boolean; protected queryFieldDefs(): model.QueryFieldDef[]; protected getOutputFieldDef(queryFieldDef: model.QueryFieldDef, typeDesc: model.TypeDesc): model.FieldDef; protected getPrimaryKey(fields: TranslatedQueryField[]): string | undefined; structDef(): model.SourceDef; translatedQueryFields: TranslatedQueryField[] | undefined; protected translateQueryFields(): TranslatedQueryField[]; getQuerySegment(rf: model.QuerySegment | undefined): model.QuerySegment; protected isRepeated(): boolean; getPipeSegment(refineFrom: model.QuerySegment | undefined): model.PipeSegment; lookup(path: FieldName[]): LookupResult; } export declare class ReduceFieldSpace extends QuerySpace { readonly segmentType = "reduce"; } export {};