import { type Edge, type Node, Position, type ReactFlowInstance } from '../../xyflow/react.ts';
import type { NodeManifest } from '../../schema/node-definition';
import type { PreviewEndpoint, PreviewGraphOverrides } from '../../utils/createPreviewGraph';
import type { ResolutionContext, ResolvedHandleGroup } from '../../utils/manifest-resolver';
export type ContainerHandleBoundary = 'outer' | 'inner';
export type ContainerHandleGroup = ResolvedHandleGroup & {
    boundary: ContainerHandleBoundary;
    connectionPosition: Position;
};
export interface ContainerPreviewConnectionHandles {
    sourceHandleId: string;
    sourceHandlePosition: Position;
    targetHandleId: string;
}
export type ContainerPreviewManifestResolver = (node: Node) => Pick<NodeManifest, 'display' | 'handleConfiguration'> | undefined;
export declare function resolveContainerHandleGroups(groups: ResolvedHandleGroup[]): ContainerHandleGroup[];
export declare function getContainerRelativeBodyCenter(containerNode: Pick<Node, 'width' | 'height' | 'measured' | 'style'>): {
    x: number;
    y: number;
};
export declare function resolveContainerPreviewConnectionHandles(manifest: Pick<NodeManifest, 'handleConfiguration'> | undefined, context: ResolutionContext): ContainerPreviewConnectionHandles | null;
export declare function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode, replacedEdge, }: {
    source: PreviewEndpoint;
    sourceHandleType: 'source' | 'target';
    reactFlowInstance: ReactFlowInstance;
    getManifestForNode: ContainerPreviewManifestResolver;
    replacedEdge?: Edge;
}): PreviewGraphOverrides | null;
export declare function getInnerHandleContainerId({ source, reactFlowInstance, getManifestForNode, }: {
    source: PreviewEndpoint;
    reactFlowInstance: ReactFlowInstance;
    getManifestForNode: ContainerPreviewManifestResolver;
}): string | undefined;
//# sourceMappingURL=LoopNode.helpers.d.ts.map