import type { Pose, Transform } from '@viamrobotics/sdk';
import type { Frame } from '../../frame';
import type { FragmentInfo } from '../../hooks/useFragmentInfo.svelte';
import type { PartConfig } from '../../hooks/usePartConfig.svelte';
/**
 * Resolves current frames for fragment-defined components from live framesystem
 * data and any config $set overrides. Returns a FragmentInfo map suitable for
 * validateProposedFrameDeltas and LLM inference.
 */
export declare function resolveFragmentCurrentFrames(fragmentNames: string[], fragmentInfo: Record<string, FragmentInfo>, liveFrames: Transform[], configFrames: Record<string, Transform>): Record<string, FragmentInfo>;
export interface FrameDelta {
    componentName: string;
    translation?: {
        x?: number;
        y?: number;
        z?: number;
    };
    orientation?: {
        roll?: number;
        pitch?: number;
        yaw?: number;
    };
    parent?: string;
    explanation?: string;
}
export interface PreparedUpdate {
    componentName: string;
    parent: string;
    previousParent: string;
    pose: Pose;
    previousPose: Pose;
    geometry?: Frame['geometry'];
    explanation?: string;
}
export interface UpdateError {
    componentName: string;
    reason: string;
}
/**
 * Validates LLM-proposed frame deltas and computes the resulting changes without
 * applying them. Each PreparedUpdate carries old and new values so the caller
 * can render a diff and confirm via useSceneBuilder's confirm().
 */
export declare function validateProposedFrameDeltas(deltas: FrameDelta[], config: PartConfig, fragmentFrames?: Record<string, FragmentInfo>): {
    errors: UpdateError[];
    prepared: PreparedUpdate[];
};
