/**
 * 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 ServiceTest, type Service, type ValueSpecification, ParameterValue, VariableExpression } from '@finos/legend-graph';
import { TestableTestEditorState } from '../../testable/TestableEditorState.js';
import type { ServiceTestSuiteState } from './ServiceTestableState.js';
import type { EditorStore } from '../../../../EditorStore.js';
export declare enum SERIALIZATION_FORMAT {
    PURE = "PURE",
    DEFAULT = "DEFAULT",
    PURE_TDSOBJECT = "PURE_TDSOBJECT"
}
export declare enum SERIALIZATION_FORMAT_LABEL {
    PURE = "PURE",
    TABULAR_DATA = "TABULAR DATA",
    DEFAULT = "DEFAULT"
}
export type SerializationFormatOption = {
    value: string;
    label: string;
};
export type KeyOption = {
    value: string;
    label: string;
};
export declare class ServiceTestParameterState {
    readonly uuid: string;
    readonly editorStore: EditorStore;
    readonly setupState: ServiceTestSetupState;
    parameterValue: ParameterValue;
    constructor(parameterValue: ParameterValue, editorStore: EditorStore, setupState: ServiceTestSetupState);
}
export declare class ServiceValueSpecificationTestParameterState extends ServiceTestParameterState {
    valueSpec: ValueSpecification;
    varExpression: VariableExpression;
    constructor(parameterValue: ParameterValue, editorStore: EditorStore, setupState: ServiceTestSetupState, valueSpec: ValueSpecification, varExpression: VariableExpression);
    updateValueSpecification(val: ValueSpecification): void;
    updateParameterValue(): void;
    setName(val: string): void;
    resetValueSpec(): void;
}
export declare class ServiceTestSetupState {
    readonly editorStore: EditorStore;
    readonly testState: ServiceTestState;
    parameterValueStates: ServiceTestParameterState[];
    newParameterValueName: string;
    showNewParameterModal: boolean;
    constructor(testState: ServiceTestState);
    get queryVariableExpressions(): VariableExpression[];
    get options(): SerializationFormatOption[];
    get keyOptions(): KeyOption[];
    getSelectedKeyOptions(): KeyOption[];
    addServiceTestAssertKeys(val: string[]): void;
    get newParamOptions(): {
        value: string;
        label: string;
    }[];
    syncWithQuery(): void;
    setNewParameterValueName(val: string): void;
    setShowNewParameterModal(val: boolean): void;
    openNewParamModal(): void;
    addParameterValue(): void;
    addExpressionParameterValue(expression: VariableExpression): void;
    removeParamValueState(paramState: ServiceTestParameterState): void;
    buildParameterStates(): ServiceTestParameterState[];
    getSelectedFormatOption(): SerializationFormatOption | undefined;
    changeSerializationFormat(val: string | undefined): void;
    generateTestParameterValues(): void;
}
export declare class ServiceTestState extends TestableTestEditorState {
    readonly suiteState: ServiceTestSuiteState;
    test: ServiceTest;
    testable: Service;
    setupState: ServiceTestSetupState;
    constructor(suiteState: ServiceTestSuiteState, test: ServiceTest);
    get service(): Service;
}
//# sourceMappingURL=ServiceTestEditorState.d.ts.map