import * as React from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
import type { FileInfo, FileRenderer } from './file-viewer-types';
export declare function registerFileRenderer(renderer: FileRenderer): void;
/**
 * i18n-able labels for FileViewer chrome / controls.
 * All keys are optional — defaults are CJK (see `DEFAULT_LABELS`).
 * Consumer typically spreads partial override:
 *   `<FileViewer labels={{ close: 'Close', download: 'Download' }} />`
 */
export interface FileViewerLabels {
    /** Zoom input ARIA label */
    zoomInput?: string;
    /** Zoom menu trigger ARIA label */
    zoomMenu?: string;
    /** Info panel toggle button — shown when panel is OPEN */
    infoToggleCollapse?: string;
    /** Info panel toggle button — shown when panel is CLOSED */
    infoToggleExpand?: string;
    /** Download button ARIA label */
    download?: string;
    /** Close viewer button ARIA label */
    close?: string;
    /** InfoPanel outer aside ARIA label */
    detailPanel?: string;
    /** InfoPanel heading text */
    detailsHeading?: string;
    /** InfoPanel close button ARIA label */
    detailPanelClose?: string;
    /** Description textarea placeholder (readOnly) */
    descriptionPlaceholderReadOnly?: string;
    /** Description textarea placeholder (editable) */
    descriptionPlaceholderEdit?: string;
    /** Detail section — file info section heading */
    fileInfoHeading?: string;
    /** Filmstrip group ARIA label（role="group" + thumb button + aria-current,非 tablist）*/
    filmstripLabel?: string;
    /** Previous-file nav button ARIA label */
    previousFile?: string;
    /** Next-file nav button ARIA label */
    nextFile?: string;
}
export interface FileViewerProps extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, 'onOpenChange'> {
    files: FileInfo[];
    initialIndex?: number;
    /** Controlled open state。與 `defaultOpen` 二擇一。 */
    open?: boolean;
    /** Uncontrolled open 預設(2026-04-25 加,對齊 Dialog/Sheet/Popover dual-mode canonical)。 */
    defaultOpen?: boolean;
    onOpenChange?: (open: boolean) => void;
    /** 當前索引(controlled);consumer 想自己控制 active file 時傳。不傳則 shell 管理。 */
    index?: number;
    onIndexChange?: (index: number) => void;
    /** 當前檔案 description 變化。consumer 負責持久化。readOnly 為 true 時不觸發。 */
    onDescriptionChange?: (fileId: string, description: string) => void;
    /** true → InfoPanel 的 description textarea 為 readOnly。預設 false。 */
    readOnly?: boolean;
    /** 顯示底部 filmstrip。預設 false;files.length < 2 時自動隱藏。 */
    showFilmstrip?: boolean;
    /** 是否提供 download 按鈕。預設 true。 */
    allowDownload?: boolean;
    /** 自訂 download 行為;未傳則用 anchor download attribute。 */
    onDownload?: (file: FileInfo) => void;
    /** i18n labels override. Partial — merged with DS defaults. */
    labels?: FileViewerLabels;
}
declare const FileViewer: React.ForwardRefExoticComponent<FileViewerProps & React.RefAttributes<HTMLDivElement>>;
export declare const fileViewerMeta: {
    readonly component: "FileViewer";
    readonly family: null;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-muted", "bg-surface", "bg-surface-raised"];
        readonly fg: readonly ["text-fg-muted", "text-foreground"];
        readonly ring: readonly ["ring-primary", "ring-ring"];
    };
};
export { FileViewer };
export type { FileInfo, FileRenderer, FileRendererCapabilities, FileRendererProps } from './file-viewer-types';
//# sourceMappingURL=file-viewer.d.ts.map