/**
 * 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 RawExecutionPlan, type GraphManagerState, ExecutionPlan, ExecutionNode } from '@finos/legend-graph';
import type { TreeNodeData, TreeData } from '@finos/legend-art';
import type { GenericLegendApplicationStore } from '@finos/legend-application';
export declare class ExecutionPlanViewTreeNodeData implements TreeNodeData {
    id: string;
    label: string;
    isSelected?: boolean;
    isOpen?: boolean;
    childrenIds?: string[];
    executionPlan: ExecutionPlan;
    constructor(id: string, label: string, executionPlan: ExecutionPlan);
    setIsSelected(val: boolean): void;
    setIsOpen(val: boolean): void;
}
export declare class ExecutionNodeTreeNodeData implements TreeNodeData {
    id: string;
    label: string;
    isSelected?: boolean;
    isOpen?: boolean;
    childrenIds?: string[];
    executionNode: ExecutionNode;
    parentNodeId: string | undefined;
    constructor(id: string, label: string, executionNode: ExecutionNode, parentNodeId: string | undefined);
    setIsSelected(val: boolean): void;
    setIsOpen(val: boolean): void;
}
export declare const generateExecutionNodeTreeNodeData: (executionNode: ExecutionNode, label: string, parentNode: ExecutionNodeTreeNodeData | ExecutionPlanViewTreeNodeData | undefined) => ExecutionNodeTreeNodeData;
export declare const generateExecutionPlanTreeNodeData: (executionPlan: ExecutionPlan) => ExecutionPlanViewTreeNodeData;
export declare const getExecutionPlanTreeData: (executionPlan: ExecutionPlan) => TreeData<ExecutionPlanViewTreeNodeData | ExecutionNodeTreeNodeData>;
export declare enum EXECUTION_PLAN_VIEW_MODE {
    FORM = "Form",
    JSON = "JSON"
}
export declare enum PLAN_TABS {
    GENERAL = "GENERAL",
    GLOBAL_IMPLEMENTATION_SUPPORT = "GLOBAL_IMPLEMENTATION_SUPPORT"
}
declare class GlobalImplementationSupportState {
    selectedTab: PLAN_TABS;
    selectedJavaClass: string | undefined;
    constructor();
    setSelectedTab(tab: PLAN_TABS): void;
    setSelectedJavaClass(javaClass: string | undefined): void;
}
export declare class ExecutionPlanState {
    applicationStore: GenericLegendApplicationStore;
    graphManagerState: GraphManagerState;
    displayDataJson: object;
    displayData: string;
    selectedNode: ExecutionNodeTreeNodeData | ExecutionPlanViewTreeNodeData | undefined;
    viewMode: EXECUTION_PLAN_VIEW_MODE;
    treeData?: TreeData<ExecutionPlanViewTreeNodeData | ExecutionNodeTreeNodeData> | undefined;
    rawPlan?: RawExecutionPlan | undefined;
    plan?: ExecutionPlan | undefined;
    debugText?: string | undefined;
    globalImplementationSupportState: GlobalImplementationSupportState;
    constructor(applicationStore: GenericLegendApplicationStore, graphManagerState: GraphManagerState);
    setViewMode(val: EXECUTION_PLAN_VIEW_MODE): void;
    setTreeNode(id: string, node: ExecutionPlanViewTreeNodeData | ExecutionNodeTreeNodeData): void;
    setTreeData(val: TreeData<ExecutionPlanViewTreeNodeData | ExecutionNodeTreeNodeData> | undefined): void;
    refreshTreeData(): void;
    get nonNullableTreeData(): TreeData<ExecutionPlanViewTreeNodeData | ExecutionNodeTreeNodeData>;
    setRawPlan: (val: RawExecutionPlan | undefined) => void;
    setPlan: (val: ExecutionPlan | undefined) => void;
    initialize: (val: ExecutionPlan | undefined) => void;
    setDebugText(val: string | undefined): void;
    setSelectedNode(node: ExecutionNodeTreeNodeData | ExecutionPlanViewTreeNodeData | undefined): void;
    setExecutionPlanDisplayData(val: string): void;
    setExecutionPlanDisplayDataJson(val: object): void;
    transformMetadataToProtocolJson(metaModel: ExecutionPlan | ExecutionNode): void;
}
export {};
//# sourceMappingURL=ExecutionPlanState.d.ts.map