import { type CanvasViewport, type Position, type ValidationResult, type Workflow, type WorkflowAction, type WorkflowEdge, type WorkflowNode, type WorkflowPolicies } from "../workflow/types";
export interface UseWorkflowOptions {
    initialNodes?: WorkflowNode[];
    initialEdges?: WorkflowEdge[];
    initialViewport?: Partial<CanvasViewport>;
    policies?: Partial<WorkflowPolicies>;
    metadata?: Partial<Workflow["metadata"]>;
}
export interface UseWorkflowReturn {
    workflow: Workflow;
    dispatch: React.Dispatch<WorkflowAction>;
    addNode: (node: WorkflowNode) => void;
    createNode: (partial: Partial<WorkflowNode> & {
        label: string;
        position: Position;
    }) => WorkflowNode;
    updateNode: (id: string, updates: Partial<WorkflowNode>) => void;
    deleteNode: (id: string) => void;
    deleteNodes: (ids: string[]) => void;
    replaceNodes: (nodes: WorkflowNode[]) => void;
    addEdge: (edge: WorkflowEdge) => void;
    createEdge: (source: string, sourcePort: string, target: string, targetPort: string) => WorkflowEdge;
    deleteEdge: (id: string) => void;
    replaceEdges: (edges: WorkflowEdge[]) => void;
    startConnecting: (nodeId: string, portId: string, portType: "input" | "output") => void;
    endConnecting: () => void;
    selectNode: (id: string, multi?: boolean) => void;
    selectNodes: (ids: string[]) => void;
    selectEdge: (id: string) => void;
    deselectAll: () => void;
    zoomIn: () => void;
    zoomOut: () => void;
    resetViewport: () => void;
    setViewport: (viewport: Partial<CanvasViewport>) => void;
    undo: () => void;
    redo: () => void;
    canUndo: boolean;
    canRedo: boolean;
    validate: () => ValidationResult;
}
export declare function useWorkflow(options?: UseWorkflowOptions): UseWorkflowReturn;
//# sourceMappingURL=useWorkflow.d.ts.map