import { type Connection, type EdgeChange, type NodeChange } from '../../../xyflow/react.ts';
import React from 'react';
import { type AgentFlowCustomEdge, type AgentFlowCustomNode, type AgentFlowModel, type AgentFlowNodeDataUpdate, type AgentFlowProps, type AgentFlowResource, type AgentFlowResourceType, type AgentFlowStickyNote } from '../../../types';
interface AgentFlowStore {
    props: AgentFlowProps;
    handlePropsUpdate: (newProps: AgentFlowProps) => void;
    nodes: AgentFlowCustomNode[];
    edges: AgentFlowCustomEdge[];
    selectedNodeId: string | null;
    setSelectedNodeId: (nodeId: string | null, options?: {
        skipPlaceholderClickHandler?: boolean;
    }) => void;
    openMenuNodeId: string | null;
    setOpenMenuNodeId: (nodeId: string | null) => void;
    paneContextMenu: {
        position: {
            x: number;
            y: number;
        };
        flowPosition: {
            x: number;
            y: number;
        };
    } | null;
    openPaneContextMenu: (position: {
        x: number;
        y: number;
    }, flowPosition: {
        x: number;
        y: number;
    }) => void;
    closePaneContextMenu: () => void;
    updateNode: <T extends AgentFlowCustomNode>(nodeId: string, updates: AgentFlowNodeDataUpdate<T>) => void;
    deleteNode: (nodeId: string) => void;
    reorderNodes: (draggedNodeId: string, targetNodeId: string) => void;
    insertNodeAfter: (draggedNodeId: string, targetNodeId: string) => void;
    onNodesChange: (changes: NodeChange[]) => void;
    onEdgesChange: (changes: EdgeChange[]) => void;
    onConnect: (connection: Connection) => void;
    recalculateEdges: () => void;
    isDragging: boolean;
    draggedNodeId: string | null;
    dragPreview: {
        draggedNodeId: string | null;
        insertAfterNodeId: string | null;
        previewPositions: Record<string, {
            x: number;
            y: number;
        }>;
    };
    setDragging: (isDragging: boolean, draggedNodeId: string | null) => void;
    autoArrange: () => void;
    clearDragAndAutoArrange: () => void;
    setDragPreview: (draggedNodeId: string | null, insertAfterNodeId: string | null) => void;
    organizeAnimationFrameId: number | null;
    fitView: () => void;
    autoArrangeAndFitView: () => void;
    expandAgent: (resourceId: string, agentDefinition: {
        rawAgentDefinition: Record<string, unknown> | null;
        agentName: string;
        agentDescription: string;
        agentResources: AgentFlowResource[];
        model: AgentFlowModel | null;
        error: string | null;
    }) => void;
    collapseAgent: (resourceId: string) => void;
    actOnSuggestion: (suggestionId: string, action: 'accept' | 'reject') => void;
    actOnSuggestionGroup: (suggestionGroupId: string, action: 'accept' | 'reject') => void;
    currentSuggestionIndex: number;
    setCurrentSuggestionIndex: (index: number) => void;
    navigateToNextSuggestion: () => void;
    navigateToPreviousSuggestion: () => void;
    createResourcePlaceholder: (type: AgentFlowResourceType) => void;
    addStickyNote: (data?: Partial<Omit<AgentFlowStickyNote, 'id'>>) => void;
}
export declare const hasResourceNode: (node: AgentFlowCustomNode, resource: AgentFlowResource) => boolean;
export declare const createAgentFlowStore: (initialProps: AgentFlowProps) => import("zustand").StoreApi<AgentFlowStore>;
export declare const AgentFlowProvider: ({ children, ...props }: AgentFlowProps & {
    children: React.ReactNode;
}) => React.FunctionComponentElement<React.ProviderProps<import("zustand").StoreApi<AgentFlowStore> | null>>;
export declare function useAgentFlowStore(): AgentFlowStore;
export declare function useAgentFlowStore<T>(selector: (state: AgentFlowStore) => T): T;
export declare const useNodes: () => AgentFlowCustomNode[];
export declare const useEdges: () => import("../../..").AgentFlowDefaultEdge[];
export declare const useSelectedNodeId: () => string | null;
export declare const useSelectedNode: () => AgentFlowCustomNode | null;
export {};
//# sourceMappingURL=agent-flow-store.d.ts.map