import { __name } from "../../_virtual/_rolldown/runtime.mjs";
import { Types } from "../types.mjs";
import { OverlaysActorRef } from "../../overlays/overlaysActor.mjs";
import { SearchActorRef } from "../../search/searchActor.mjs";
import { EditorActorRef } from "../../editor/actor/machine.mjs";
import { TogglableFeature } from "../../context/DiagramFeatures.mjs";
import { AlignmentMode } from "./aligners.mjs";
import { OpenSourceParams, RelationshipBrowserScope } from "../../LikeC4Diagram.props.mjs";
import { Context, ElementViewDisplayVariant, Events } from "./machine.setup.mjs";
import { DiagramActorRef } from "./types.mjs";
import { RefObject } from "react";
import * as t from "@likec4/core/types";
import { DynamicViewDisplayVariant, NodeNotation, ViewChange } from "@likec4/core/types";
import { PartialDeep } from "type-fest";
//#region src/likec4diagram/state/diagram-api.d.ts
type Any$1 = t.aux.Any;
type Unknown = t.aux.UnknownLayouted;
type ViewId$1 = t.aux.ViewId;
type Fqn$1 = t.aux.Fqn;
type NodeId$1 = t.aux.NodeId;
type EdgeId$1 = t.aux.EdgeId;
export declare class DiagramApi {
private static cache;
static withActor(actorRef: RefObject): DiagramApi;
/**
* React ref to the diagram actor
*/
readonly ref: RefObject;
private constructor();
/**
* @warning Do not use in render phase
*/
get actor(): DiagramActorRef;
/**
* @warning Do not use in render phase
*/
get currentView(): t.DiagramView;
/**
* Editor actor reference
* @warning Do not use in render phase
*/
editorActor(): EditorActorRef;
/**
* Overlays actor reference
* @warning Do not use in render phase
*/
overlays(): OverlaysActorRef;
/**
* Search actor reference
* @warning Do not use in render phase
*/
searchActor(): SearchActorRef;
/**
* Send event to diagram actor
*/
send(event: Events): void;
/**
* Navigate to view
* @param viewId - Target view ID
* @param fromNode - Node from which navigation was triggered
* @param focusOnElement - Element FQN to focus after navigation (from search)
*/
navigateTo(viewId: ViewId$1, fromNode?: NodeId$1, focusOnElement?: Fqn$1): void;
/**
* Navigate back or forward in history
*/
navigate(direction: 'back' | 'forward'): void;
/**
* Fit diagram to view
*/
fitDiagram(duration?: number): void;
/**
* Open relationships browser
*/
openRelationshipsBrowser(fqn: Fqn$1, scope?: RelationshipBrowserScope): void;
/**
* If running in editor, trigger opening source file
*/
openSource(params: OpenSourceParams): void;
/**
* Open element details card
*/
openElementDetails(fqn: Fqn$1, fromNode?: NodeId$1): void;
openRelationshipDetails(...params: [edgeId: EdgeId$1] | [source: Fqn$1, target: Fqn$1]): void;
updateNodeData(nodeId: NodeId$1, data: PartialDeep): void;
updateEdgeData(edgeId: EdgeId$1, data: PartialDeep): void;
highlightNode(nodeId: NodeId$1): void;
highlightEdge(edgeId: EdgeId$1): void;
unhighlightAll(): void;
select(target?: {
nodes?: NodeId$1[];
edges?: (EdgeId$1 | t.StepPath)[];
}): void;
/**
* Center viewport on a given node
*/
centerViewportOnNode(target: NodeId$1): void;
/**
* Center viewport on a given edge (centering on edge means including both source and target nodes in view)
*/
centerViewportOnEdge(target: EdgeId$1): void;
/**
* Start editing, either node or edge
*/
startEditing(subject: 'node' | 'edge'): void;
/**
* Stop editing
* @param wasChanged - whether there were changes made during editing
* @default false
*/
stopEditing(wasChanged?: boolean): void;
/**
* Undo last editing operation
* @returns true if there was something to undo
*/
undoEditing(): boolean;
/**
* Align nodes
*/
align(mode: AlignmentMode): void;
/**
* Reset edge control points
*/
resetEdgeControlPoints(): void;
/**
* Focus node
*/
focusNode(nodeId: NodeId$1): void;
/**
* Focus on element by FQN (finds the node and focuses on it).
* Used by search to highlight an element on the current view.
*/
focusOnElement(elementFqn: Fqn$1): void;
/**
* @warning Do not use in render phase
*/
getContext(): Context;
/**
* @warning Do not use in render phase
*/
findDiagramNode(xynodeId: string): t.DiagramNode | null;
/**
* @warning Do not use in render phase
*/
findEdge(xyedgeId: string): Types.Edge | null;
/**
* @warning Do not use in render phase
*/
findDiagramEdge(xyedgeId: string): t.DiagramEdge | null;
startWalkthrough(stepId?: t.StepPath): void;
walkthroughStep(value?: 'next' | 'prev' | {
step: t.StepPath;
}): void;
stopWalkthrough(): void;
toggleFeature(feature: TogglableFeature, forceValue?: boolean): void;
highlightNotation(notation: NodeNotation, kind?: string): void;
unhighlightNotation(): void;
openSearch(searchValue?: string): void;
triggerChange(change: ViewChange): void;
/**
* Switch dynamic view display variant
*/
switchDynamicViewVariant(variant: DynamicViewDisplayVariant): void;
/**
* Switch element view display variant ('diagram' | 'graph')
*/
switchElementViewVariant(variant: ElementViewDisplayVariant): void;
/**
* Toggle sequence flow collapse/expand
*/
toggleSequenceFlow(flowId: t.StepPath): void;
}
//#endregion