import { Pose, Struct } from '@viamrobotics/sdk';
import { type Frame } from '../frame';
export interface PartConfig {
    components: {
        name: string;
        api?: string;
        frame?: Frame;
    }[];
    fragment_mods?: {
        fragment_id: string;
        mods: any[];
    }[];
}
export type FragmentInfo = {
    id: string;
    variables: Record<string, string>;
};
interface PartConfigContext {
    current: PartConfig;
    isDirty: boolean;
    hasPendingSave: boolean;
    hasEditPermissions: boolean;
    componentNameToFragmentInfo: Record<string, FragmentInfo>;
    updateFrame: (componentName: string, referenceFrame: string, pose: Pose, geometry?: Frame['geometry']) => void;
    deleteFrame: (componentName: string) => void;
    createFrame: (componentName: string) => void;
    save: () => void;
    discardChanges: () => void;
    clearPendingSave: () => void;
    setPendingSave: () => void;
}
export declare const providePartConfig: (partID: () => string, params: () => AppEmbeddedPartConfigProps | undefined) => void;
export declare const usePartConfig: () => PartConfigContext;
interface AppEmbeddedPartConfigProps {
    current: Struct;
    isDirty: boolean;
    componentNameToFragmentInfo: Record<string, FragmentInfo>;
    setLocalPartConfig: (config: Struct) => void;
}
export {};
