/**
 * 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 { AbstractPropertyExpression, DerivedProperty, MILESTONING_STEREOTYPE, type ValueSpecification, type PureModel } from '@finos/legend-graph';
import type { QueryBuilderMilestoningState } from './QueryBuilderMilestoningState.js';
import type { QueryBuilderDerivedPropertyExpressionState } from '../QueryBuilderPropertyEditorState.js';
import type { QueryBuilderState } from '../QueryBuilderState.js';
export declare const getDerivedPropertyMilestoningSteoreotype: (property: DerivedProperty, graph: PureModel) => MILESTONING_STEREOTYPE | undefined;
/**
 * Checks if the provided property expression match the criteria for default
 * date propagation so we know whether we need to fill in values for the parameter
 * or just propgate values from the parent's expression
 *
 * NOTE: this takes date propgation into account. See the table below for all
 * the combination:
 *
 *             | [source] |          |          |          |          |
 * ----------------------------------------------------------------------
 *   [target]  |          |   NONE   |  PR_TMP  |  BI_TMP  |  BU_TMP  |
 * ----------------------------------------------------------------------
 *             |   NONE   |   N.A.   |   PRD    | PRD,BUD  |    BUD   |
 * ----------------------------------------------------------------------
 *             |  PR_TMP  |   N.A.   |    X     | PRD,BUD  |    BUD   |
 * ----------------------------------------------------------------------
 *             |  BI_TMP  |   N.A.   |    X     |    X     |    X     |
 * ----------------------------------------------------------------------
 *             |  BU_TMP  |   N.A.   |   PRD    | PRD,BUD  |    X     |
 * ----------------------------------------------------------------------
 *
 * Annotations:
 *
 * [source]: source temporal type
 * [target]: target temporal type
 *
 * PR_TMP  : processing temporal
 * BI_TMP  : bitemporal
 * BU_TMP  : business temporal
 *
 * X       : no default date propagated
 * PRD     : default processing date is propagated
 * BUD     : default business date is propgated
 */
export declare const isDefaultDatePropagationSupported: (currentPropertyExpression: AbstractPropertyExpression, queryBuilderState: QueryBuilderState, prevPropertyExpression?: AbstractPropertyExpression | undefined) => boolean;
export declare const checkIfEquivalent: (param1: ValueSpecification | undefined, param2: ValueSpecification | undefined) => boolean;
/**
 * Check if the parameter value of the milestoned property is
 * the same as those specified in global scope, so that we can
 * potentially replace them with propgated value.
 */
export declare const matchMilestoningParameterValue: (stereotype: MILESTONING_STEREOTYPE, idx: number, parameterValue: ValueSpecification, milestoningDate: QueryBuilderMilestoningState) => boolean;
/**
 * Generate a parameter value for the derived property given the index if the property is milestoned.
 *
 * This method considers different scenarios for milestoning and take into account date propagation
 * See https://github.com/finos/legend-studio/pull/891
 */
export declare const generateMilestonedPropertyParameterValue: (derivedPropertyExpressionState: QueryBuilderDerivedPropertyExpressionState, idx: number) => ValueSpecification | undefined;
export declare const validateMilestoningPropertyExpressionChain: (sourceStereotype: MILESTONING_STEREOTYPE | undefined, targetStereotype: MILESTONING_STEREOTYPE, propertyExpression: AbstractPropertyExpression, queryBuilderState: QueryBuilderState) => void;
//# sourceMappingURL=QueryBuilderMilestoningHelper.d.ts.map