import { DependencyList } from 'react'; import { DiagramApi } from '../likec4diagram/state/diagram-api'; import { DiagramActorSnapshot, DiagramContext, DiagramEmittedEvents } from '../likec4diagram/state/types'; import { useDiagram, useDiagramActorRef } from './safeContext'; export { useDiagram, useDiagramActorRef }; export type { DiagramApi, DiagramContext }; /** * Helper to create a selector for diagram actor snapshot */ export declare function selectDiagramActor(selector: (state: DiagramActorSnapshot) => T): (state: DiagramActorSnapshot) => T; export declare function useDiagramSnapshot(selector: (state: DiagramActorSnapshot) => T, compare?: (a: NoInfer, b: NoInfer) => boolean): T; /** * Helper to create a selector for diagram actor snapshot */ export declare function selectDiagramActorContext(selector: (state: DiagramContext) => T): (state: DiagramActorSnapshot) => T; /** * Read diagram context */ export declare function useDiagramContext(selector: (context: DiagramContext) => T, compare?: (a: NoInfer, b: NoInfer) => boolean, deps?: DependencyList): T; type PickEmittedEvent = T extends DiagramEmittedEvents['type'] ? DiagramEmittedEvents & { type: T; } : unknown; /** * Subscribe to diagram emitted events * @example * ```tsx * useOnDiagramEvent('navigateTo', ({viewId}) => { * console.log('Navigating to view', viewId) * }) * ``` */ export declare function useOnDiagramEvent(event: T, callback: (event: PickEmittedEvent) => void, options?: { once?: boolean; }): void;