import type { Annotation, JoinFieldDef, JoinType, MatrixOperation, SourceDef, AccessModifierLabel } from '../../../model/malloy_types'; import type { DynamicSpace } from '../field-space/dynamic-space'; import { DefinitionList } from '../types/definition-list'; import type { QueryBuilder } from '../types/query-builder'; import type { ExpressionDef } from '../types/expression-def'; import type { FieldSpace } from '../types/field-space'; import type { ModelEntryReference } from '../types/malloy-element'; import { MalloyElement } from '../types/malloy-element'; import type { Noteable } from '../types/noteable'; import { extendNoteMethod } from '../types/noteable'; import type { MakeEntry } from '../types/space-entry'; import type { SourceQueryElement } from '../source-query-elements/source-query-element'; import type { ParameterSpace } from '../field-space/parameter-space'; import type { QueryPropertyInterface } from '../types/query-property-interface'; import { LegalRefinementStage } from '../types/query-property-interface'; export declare abstract class Join extends MalloyElement implements Noteable, MakeEntry { abstract name: ModelEntryReference; abstract getStructDef(parameterSpace: ParameterSpace): JoinFieldDef; abstract fixupJoinOn(outer: FieldSpace, inStruct: JoinFieldDef): void; readonly isNoteableObj = true; extendNote: typeof extendNoteMethod; abstract sourceExpr: SourceQueryElement; note?: Annotation; makeEntry(fs: DynamicSpace): void; getName(): string; protected getStructDefFromExpr(parameterSpace: ParameterSpace): SourceDef; } export declare class KeyJoin extends Join { readonly name: ModelEntryReference; readonly sourceExpr: SourceQueryElement; readonly keyExpr: ExpressionDef; elementType: string; constructor(name: ModelEntryReference, sourceExpr: SourceQueryElement, keyExpr: ExpressionDef); getStructDef(parameterSpace: ParameterSpace): JoinFieldDef; fixupJoinOn(outer: FieldSpace, inStruct: JoinFieldDef): void; } export declare class ExpressionJoin extends Join { readonly name: ModelEntryReference; readonly sourceExpr: SourceQueryElement; elementType: string; joinType: JoinType; matrixOperation: MatrixOperation; private expr?; constructor(name: ModelEntryReference, sourceExpr: SourceQueryElement); set joinOn(joinExpr: ExpressionDef | undefined); get joinOn(): ExpressionDef | undefined; fixupJoinOn(outer: FieldSpace, inStruct: JoinFieldDef): void; getStructDef(parameterSpace: ParameterSpace): JoinFieldDef; } export declare class JoinStatement extends DefinitionList implements QueryPropertyInterface { readonly accessModifier: AccessModifierLabel | undefined; elementType: string; forceQueryClass: undefined; queryRefinementStage: LegalRefinementStage; constructor(joins: Join[], accessModifier: AccessModifierLabel | undefined); queryExecute(executeFor: QueryBuilder): void; get delarationNames(): string[]; }