/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { type Hashable } from '@finos/legend-shared';
import type { Type } from '@finos/legend-graph';
import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
import type { QueryBuilderAggregateOperator } from './QueryBuilderAggregateOperator.js';
import { type QueryBuilderProjectionColumnState } from '../projection/QueryBuilderProjectionColumnState.js';
import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.js';
import type { QueryBuilderAggregateCalendarFunction } from './QueryBuilderAggregateCalendarFunction.js';
export declare class QueryBuilderAggregateColumnState extends QueryBuilderTDSColumnState implements Hashable {
    readonly aggregationState: QueryBuilderAggregationState;
    projectionColumnState: QueryBuilderProjectionColumnState;
    lambdaParameterName: string;
    operator: QueryBuilderAggregateOperator;
    calendarFunction?: QueryBuilderAggregateCalendarFunction | undefined;
    hideCalendarColumnState: boolean;
    constructor(aggregationState: QueryBuilderAggregationState, projectionColumnState: QueryBuilderProjectionColumnState, operator: QueryBuilderAggregateOperator);
    setColumnState(val: QueryBuilderProjectionColumnState): void;
    setLambdaParameterName(val: string): void;
    setHideCalendarColumnState(val: boolean): void;
    setCalendarFunction(val: QueryBuilderAggregateCalendarFunction | undefined): void;
    setOperator(val: QueryBuilderAggregateOperator): void;
    getColumnType(): Type | undefined;
    handleUsedPostFilterType(type: Type): void;
    get hashCode(): string;
    get columnName(): string;
}
export declare class QueryBuilderAggregationState implements Hashable {
    readonly tdsState: QueryBuilderTDSState;
    readonly operators: QueryBuilderAggregateOperator[];
    readonly calendarFunctions: QueryBuilderAggregateCalendarFunction[];
    columns: QueryBuilderAggregateColumnState[];
    constructor(tdsState: QueryBuilderTDSState, operators: QueryBuilderAggregateOperator[], calendarFunctions: QueryBuilderAggregateCalendarFunction[]);
    removeColumn(val: QueryBuilderAggregateColumnState): void;
    addColumn(val: QueryBuilderAggregateColumnState): void;
    changeColumnAggregateOperator(val: QueryBuilderAggregateOperator | undefined, projectionColumnState: QueryBuilderProjectionColumnState, hideOperatorInColumnName?: boolean): void;
    disableCalendar(): void;
    get allValidationIssues(): string[];
    get hashCode(): string;
}
//# sourceMappingURL=QueryBuilderAggregationState.d.ts.map