import type { ConnectStartParams, FlowStoreSnapshot, Viewport, WorkflowEdge, WorkflowNode } from "../editor";
/**
 * Generic selector hook. Use for one-off reads in tests or rare cases.
 * Public hooks below cover the common paths.
 *
 * NB: `selector` must be stable (referentially equal across renders) or
 * memoised — otherwise it re-subscribes every render. We do NOT do this
 * automatically because it would mask the bug.
 */
export declare function useFlowSelector<T>(selector: (snapshot: FlowStoreSnapshot) => T, isEqual?: (a: T, b: T) => boolean): T;
export declare function useNodes(): WorkflowNode[];
export declare function useEdges(): WorkflowEdge[];
export declare function useViewport(): Viewport;
export declare function useNodeById(id: string): WorkflowNode | undefined;
/**
 * Subscribe to the `data` slice of a single node by id. Re-renders only
 * when this specific node's `data` reference changes — no cross-node
 * leakage. Pair with `FlowStateBag.updateNodeData(id, patch)` to write.
 *
 * Returns undefined when the node is not present; consumers should
 * branch on that. Typed via the generic so callers get their `TData`
 * shape back without casting.
 */
export declare function useNodeData<TData = unknown>(id: string): TData | undefined;
export declare function useEdgeById(id: string): WorkflowEdge | undefined;
export declare function useIsNodeSelected(id: string): boolean;
export declare function useIsEdgeSelected(id: string): boolean;
export declare function useConnection(): ConnectStartParams | null;
export declare function useSelection(): {
    nodes: WorkflowNode[];
    edges: WorkflowEdge[];
};
//# sourceMappingURL=selectors.d.ts.map