import type { FieldUsage, FilterCondition, PipeSegment, QuerySegment } from '../../../model/malloy_types'; import type { SourceFieldSpace } from '../types/field-space'; import { Ordering } from '../query-properties/ordering'; import type { QueryProperty } from '../types/query-property'; import type { QueryBuilder } from '../types/query-builder'; import type { QueryOperationSpace } from '../field-space/query-spaces'; import { ReduceFieldSpace } from '../field-space/query-spaces'; import type { QueryInputSpace } from '../field-space/query-input-space'; import type { MalloyElement } from '../types/malloy-element'; export declare abstract class QuerySegmentBuilder implements QueryBuilder { order?: Ordering; limit?: number; alwaysJoins: string[]; requiredGroupBys: string[]; abstract inputFS: QueryInputSpace; abstract resultFS: QueryOperationSpace; abstract readonly type: 'grouping' | 'project'; filters: FilterCondition[]; execute(qp: QueryProperty): void; abstract finalize(fromSeg: PipeSegment | undefined): PipeSegment; get fieldUsage(): FieldUsage[]; refineFrom(from: PipeSegment | undefined, to: QuerySegment): void; } export declare class ReduceBuilder extends QuerySegmentBuilder implements QueryBuilder { inputFS: QueryInputSpace; resultFS: ReduceFieldSpace; readonly type = "grouping"; constructor(baseFS: SourceFieldSpace, refineThis: PipeSegment | undefined, isNestIn: QueryOperationSpace | undefined, astEl: MalloyElement); finalize(fromSeg: PipeSegment | undefined): PipeSegment; }