/** State passed to {@link SkillDiffDialog} to control its visibility. */
export interface SkillDiffDialogState {
    /** Artifact storage key for the "before" version. */
    readonly fromArtifactKey: string;
    /** Artifact storage key for the "after" version. */
    readonly toArtifactKey: string;
    /** Truncated hash label for the "before" version (display only). */
    readonly fromLabel: string;
    /** Truncated hash label for the "after" version (display only). */
    readonly toLabel: string;
}
/** Props for {@link SkillDiffDialog}. */
export interface SkillDiffDialogProps {
    /**
     * Dialog state. When non-null, the dialog opens and fetches the diff.
     * When `null`, the dialog is closed.
     */
    readonly state: SkillDiffDialogState | null;
    /** Called when the dialog is dismissed (Escape, backdrop click, close button). */
    readonly onClose: () => void;
}
/**
 * Dialog that renders a multi-file diff between two skill versions.
 *
 * Uses native `<dialog>` with `showModal()` for built-in focus trapping,
 * Escape handling, and backdrop — consistent with `ConfirmDialog`.
 *
 * Internally composes `useSkillDiff` (data fetching) and
 * `MultiFileDiffView` (rendering). Handles loading, error, and
 * empty states.
 *
 * Zero Console dependencies — safe for platform builder embedding.
 *
 * @example
 * ```tsx
 * const [diffState, setDiffState] = useState<SkillDiffDialogState | null>(null);
 *
 * <SkillDiffDialog state={diffState} onClose={() => setDiffState(null)} />
 * ```
 */
export declare function SkillDiffDialog({ state, onClose }: SkillDiffDialogProps): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=SkillDiffDialog.d.ts.map