import type { Connection, Edge, NodeChange } from '@xyflow/react';
import type { FeatureNodeData } from '../../common/feature-node/index.js';
import type { RepositoryNodeData } from '../../common/repository-node/index.js';
import type { CanvasNodeType } from '../../features/features-canvas/index.js';
import { type LayoutDirection } from '../../../lib/layout-with-dagre.js';
import type { ApplicationNodeData } from '../../common/application-node/application-node-config.js';
import { type GraphCallbacks } from '../../../hooks/use-graph-state.js';
export interface ControlCenterState {
    nodes: CanvasNodeType[];
    edges: Edge[];
    onNodesChange: (changes: NodeChange<CanvasNodeType>[]) => void;
    handleConnect: (connection: Connection) => void;
    handleAddRepository: (path: string) => {
        wasEmpty: boolean;
        repoPath: string;
        tempNodeId: string;
    };
    handleLayout: (direction: LayoutDirection) => void;
    handleArchiveFeature: (featureId: string) => void;
    handleDeleteFeature: (featureId: string, cleanup?: boolean, cascadeDelete?: boolean, closePr?: boolean) => void;
    handleRetryFeature: (featureId: string) => void;
    handleStartFeature: (featureId: string) => void;
    handleStopFeature: (featureId: string) => void;
    handleUnarchiveFeature: (featureId: string) => void;
    handleDeleteRepository: (repositoryId: string, options?: {
        deleteFromDisk?: boolean;
    }) => Promise<void>;
    handleDeleteApplication: (applicationId: string) => Promise<void>;
    createFeatureNode: (sourceNodeId: string | null, dataOverride?: Partial<FeatureNodeData>, edgeType?: string) => string;
    /** Add an application node to the canvas optimistically. */
    addApplication: (nodeId: string, data: ApplicationNodeData) => void;
    /** Whether archived features are shown on the canvas. */
    showArchived: boolean;
    /** Toggle archived feature visibility. */
    setShowArchived: (show: boolean) => void;
    /** Stable lookup: repositoryPath for a feature node. */
    getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;
    /** Stable lookup: repository data by nodeId. */
    getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;
    /** Sync callbacks into derived node data (does not trigger re-render). */
    setCallbacks: (callbacks: GraphCallbacks) => void;
}
export declare function useControlCenterState(initialNodes: CanvasNodeType[], initialEdges: Edge[]): ControlCenterState;
//# sourceMappingURL=use-control-center-state.d.ts.map