/**
 * 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 Class, type PureModel, type Property } from '@finos/legend-graph';
import { type PlainObject } from '@finos/legend-shared';
import type { TreeData, TreeNodeData } from '@finos/legend-art';
export declare abstract class ProtocolValueFieldNode implements TreeNodeData {
    readonly id: string;
    readonly label: string;
    readonly builderState: ProtocolValueBuilderState;
    readonly property: Property;
    readonly propertyPath: string;
    isOpen: boolean;
    childrenIds: string[];
    childrenNodes: ProtocolValueFieldNode[];
    constructor(id: string, label: string, builderState: ProtocolValueBuilderState, property: Property, propertyPath: string);
    setIsOpen(val: boolean): void;
    abstract getValue(): unknown;
}
export declare class StringFieldNode extends ProtocolValueFieldNode {
    value: string;
    constructor(id: string, label: string, builderState: ProtocolValueBuilderState, property: Property, propertyPath: string, initialValue: string);
    setValue(val: string): void;
    getValue(): string;
}
export declare class OptionalStringFieldNode extends ProtocolValueFieldNode {
    value: string | undefined;
    constructor(id: string, label: string, builderState: ProtocolValueBuilderState, property: Property, propertyPath: string, initialValue: string | undefined);
    setValue(val: string | undefined): void;
    getValue(): string | undefined;
}
export declare class UnsupportedFieldNode extends ProtocolValueFieldNode {
    readonly value: unknown;
    constructor(id: string, label: string, builderState: ProtocolValueBuilderState, property: Property, propertyPath: string, initialValue: unknown);
    getValue(): unknown;
}
export declare class ProtocolValueBuilderState {
    readonly type: Class;
    readonly isCyclic: boolean;
    readonly graph: PureModel;
    readonly excludedPaths: Map<string, string[]>;
    readonly initialValue: PlainObject;
    readonly onValueChange?: ((value: PlainObject) => void) | undefined;
    readonly decorateValue?: ((value: PlainObject) => PlainObject) | undefined;
    treeData: TreeData<ProtocolValueFieldNode> | undefined;
    constructor(type: Class, options: {
        graph: PureModel;
        initialValue: PlainObject | undefined;
        excludedPaths: string[];
        onValueChange?: ((value: PlainObject) => void) | undefined;
        decorateValue?: ((value: PlainObject) => PlainObject) | undefined;
    });
    buildTreeData(type: Class): TreeData<ProtocolValueFieldNode>;
    private generateInitialValue;
    getValue(): PlainObject;
}
//# sourceMappingURL=ProtocolValueBuilderState.d.ts.map