import { DefineComponent, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
/** 与 @vue-office/excel 的 options 一致 */
export interface FilePreviewExcelOptions_Intf {
    /** 最小列长度 */
    minColLength?: number;
    /** 最小行长度 */
    minRowLength?: number;
    /** 是否显示上下文菜单 */
    showContextmenu?: boolean;
}
export type FilePreviewSrc_Type = string | ArrayBuffer | Blob | null | undefined;
export type FilePreviewKind_Type = 'docx' | 'excel' | 'pdf' | 'pptx' | 'image' | 'unknown';
/** 多文件列表单项：与单文件模式的 src / fileName 含义一致 */
export interface FilePreviewListItem_Intf {
    /** 预览地址 */
    src: Exclude<FilePreviewSrc_Type, null | undefined>;
    /** 文件名 */
    fileName?: string;
    /** 下载名称 */
    downloadName?: string;
    /** 下载地址 */
    downloadUrl?: string;
}
type __VLS_Props = {
    /** 弹窗显示（v-model:visible） */
    visible?: boolean;
    /** 预览地址 */
    src?: FilePreviewSrc_Type;
    /** 文件名 */
    fileName?: string;
    /** 文件列表 */
    fileList?: FilePreviewListItem_Intf[];
    /** 文件索引 */
    fileIndex?: number;
    /** 容器高度 */
    height?: string;
    /** excel 选项 */
    excelOptions?: FilePreviewExcelOptions_Intf;
    /** pdf 静态文件地址 */
    pdfStaticFileUrl?: string;
    /** 弹窗宽度 */
    modalWidth?: string | number;
    /** 标题前缀，完整标题为「前缀 — 文件名」或带序号 */
    modalTitlePrefix?: string;
    /** 非空时覆盖自动生成的标题 */
    modalTitleOverride?: string;
    /** 是否展示 footer 中的下载按钮 */
    showDownload?: boolean;
    /** 多文件时是否展示上一个/下一个 */
    showNav?: boolean;
    /** 是否居中 */
    centered?: boolean;
    /** 是否销毁 on close */
    destroyOnClose?: boolean;
    /** 是否可关闭 */
    maskClosable?: boolean;
    /** 是否可键盘关闭 */
    keyboard?: boolean;
    /** 是否使用安全模式 */
    needSafe?: boolean;
    /** 自定义下载 */
    customDownload?: (ctx: {
        item: FilePreviewListItem_Intf | null;
        index: number;
        src: FilePreviewSrc_Type;
        fileName?: string;
        downloadName: string;
    }) => void | Promise<void>;
};
/** 关闭弹窗 */
declare function closeModal(): void;
/** 上一个 */
declare function goPrev(): void;
/** 下一个 */
declare function goNext(): void;
/** 处理下载 */
declare function handleDownload(): Promise<void>;
declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: {
        empty?(_: {}): any;
        empty?(_: {}): any;
        unsupported?(_: {}): any;
        unsupported?(_: {}): any;
        'footer-extra'?(_: {}): any;
    };
    refs: {};
    rootEl: any;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: DefineComponent<__VLS_Props, {
    /** 预览类型 */
    previewKind: ComputedRef<FilePreviewKind_Type>;
    /** 安全索引 */
    safeIndex: ComputedRef<number>;
    /** 当前列表项 */
    currentListItem: ComputedRef<FilePreviewListItem_Intf | null>;
    /** 有效 src */
    effectiveSrc: ComputedRef<FilePreviewSrc_Type>;
    /** 有效文件名 */
    effectiveFileName: ComputedRef<string>;
    /** 上一个 */
    goPrev: typeof goPrev;
    /** 下一个 */
    goNext: typeof goNext;
    /** 下载 */
    download: typeof handleDownload;
    /** 关闭 */
    closeModal: typeof closeModal;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    error: (err: unknown) => any;
    cancel: () => any;
    "update:visible": (open: boolean) => any;
    rendered: () => any;
    "update:fileIndex": (index: number) => any;
    fileChange: (payload: {
        index: number;
        item: FilePreviewListItem_Intf | null;
    }) => any;
    beforeDownload: (payload: {
        item: FilePreviewListItem_Intf | null;
        index: number;
    }) => any;
    downloaded: (payload: {
        item: FilePreviewListItem_Intf | null;
        index: number;
    }) => any;
}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
    onError?: ((err: unknown) => any) | undefined;
    onCancel?: (() => any) | undefined;
    "onUpdate:visible"?: ((open: boolean) => any) | undefined;
    onRendered?: (() => any) | undefined;
    "onUpdate:fileIndex"?: ((index: number) => any) | undefined;
    onFileChange?: ((payload: {
        index: number;
        item: FilePreviewListItem_Intf | null;
    }) => any) | undefined;
    onBeforeDownload?: ((payload: {
        item: FilePreviewListItem_Intf | null;
        index: number;
    }) => any) | undefined;
    onDownloaded?: ((payload: {
        item: FilePreviewListItem_Intf | null;
        index: number;
    }) => any) | undefined;
}>, {
    modalWidth: string | number;
    visible: boolean;
    centered: boolean;
    maskClosable: boolean;
    destroyOnClose: boolean;
    keyboard: boolean;
    height: string;
    fileList: FilePreviewListItem_Intf[];
    fileName: string;
    src: string | Blob | ArrayBuffer | null;
    fileIndex: number;
    excelOptions: FilePreviewExcelOptions_Intf;
    pdfStaticFileUrl: string;
    modalTitlePrefix: string;
    modalTitleOverride: string;
    showDownload: boolean;
    showNav: boolean;
    needSafe: boolean;
    customDownload: (ctx: {
        item: FilePreviewListItem_Intf | null;
        index: number;
        src: FilePreviewSrc_Type;
        fileName?: string;
        downloadName: string;
    }) => void | Promise<void>;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
//# sourceMappingURL=file_preview.vue.d.ts.map