/**
 * 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 ValueSpecification, SimpleFunctionExpression } from '@finos/legend-graph';
import { FilterConditionState, type QueryBuilderFilterState } from '../QueryBuilderFilterState.js';
import type { QueryBuilderFilterOperator } from '../QueryBuilderFilterOperator.js';
export declare const buildFilterConditionExpression: (filterConditionState: FilterConditionState, operatorFunctionFullPath: string, lambdaParameterName?: string | undefined) => ValueSpecification;
/**
 * Extracts the raw type path from the left-hand side of a filter expression.
 * Handles both AbstractPropertyExpression (class properties) and
 * FunctionExpression with RelationColumn (relation column properties).
 */
export declare const getFilterExpressionLeftSideTypePath: (expression: SimpleFunctionExpression) => string | undefined;
export declare const buildFilterConditionState: (filterState: QueryBuilderFilterState, expression: SimpleFunctionExpression, operatorFunctionFullPath: string, operator: QueryBuilderFilterOperator, 
/**
 * Use this flag for operator that does not require any param (e.g. isEmpty)
 * NOTE: this is not the cleanest way to do this, if we find ourselves adding more and more customization
 * to this utility function, we should just create a bunch of different methods
 */
hasNoValue?: boolean) => FilterConditionState | undefined;
//# sourceMappingURL=QueryBuilderFilterOperatorValueSpecificationBuilder.d.ts.map