export declare interface BrandingConfig { show?: boolean; text?: string; url?: string; } export declare function createViewer(options: ViewerOptions): Viewer; export declare type FileSource = string | File | Blob | ArrayBuffer; export declare type FileType = 'pdf' | 'docx' | 'excel' | 'csv' | 'pptx' | 'ofd' | 'image' | 'video' | 'audio' | 'text' | 'markdown'; declare class I18nManager { private locale; private messages; constructor(locale: LocaleKey, customMessages?: LocaleMessages); t(key: keyof LocaleMessages, params?: Record): string; getLocale(): LocaleKey; setLocale(locale: LocaleKey, customMessages?: LocaleMessages): void; } export declare interface LocaleConfig { messages: LocaleMessages; } export declare type LocaleKey = 'zh-CN' | 'en'; export declare interface LocaleMessages { zoomIn: string; zoomOut: string; rotateLeft: string; rotateRight: string; fullscreen: string; exitFullscreen: string; print: string; download: string; prevPage: string; nextPage: string; pageOf: string; loading: string; error: string; dragHint: string; unsupportedType: string; pptxSlide: string; ofdPage: string; watermark: string; errorTitle: string; errorUnknownType: string; errorUnsupportedType: string; errorLoadFailed: string; errorNetwork: string; errorRetry: string; } export declare function registerRenderer(type: FileType, factory: RendererFactory): void; export declare interface Renderer { readonly type: FileType; mount(container: HTMLElement): void; load(source: FileSource): Promise; destroy(): void; zoom?(scale: number): void; rotate?(degrees: number): void; getPageCount?(): number; gotoPage?(page: number): void; getCurrentPage?(): number; print?(): void; onPageChange?: (page: number) => void; } export declare type RendererFactory = () => Promise; export declare interface ThemeColors { bgPrimary: string; bgSecondary: string; textPrimary: string; textSecondary: string; border: string; accent: string; toolbarBg: string; toolbarText: string; } export declare interface ThemeConfig { mode: ThemeMode; colors?: Partial; } declare class ThemeManager { private mode; constructor(mode: ThemeMode); getMode(): ThemeMode; setMode(mode: ThemeMode): void; apply(el: HTMLElement): void; } export declare type ThemeMode = 'light' | 'dark'; export declare interface ToolbarConfig { zoom?: boolean; rotate?: boolean; pagination?: boolean; fullscreen?: boolean; print?: boolean; download?: boolean; } export declare class Viewer { private readonly bus; private readonly root; private readonly options; private container; private contentEl; private styleEl; private renderer; private toolbar; private readonly watermark; private mounted; readonly theme: ThemeManager; readonly i18n: I18nManager; private currentScale; private currentRotation; private currentPage; private totalPages; constructor(options: ViewerOptions); mount(): Promise; setFile(source: FileSource, type?: FileType): Promise; destroy(): void; zoom(scale: number): void; rotate(degrees: number): void; private applyFallbackTransform; gotoPage(page: number): void; prevPage(): void; nextPage(): void; fullscreen(enable: boolean): void; print(): void; download(): Promise; setTheme(mode: ThemeMode): void; setLocale(locale: LocaleKey): void; setWatermark(config: WatermarkConfig): void; removeWatermark(): void; on(event: K, handler: (payload: ViewerEvents[K]) => void): void; off(event: K, handler: (payload: ViewerEvents[K]) => void): void; getScale(): number; getRotation(): number; getPage(): number; getTotalPages(): number; isFullscreen(): boolean; private injectStyles; private buildDOM; private detectType; private showLoading; private showError; private describeLoadError; private guessFilename; /** * 解析品牌配置,合并默认值 * 作者: yangqijun 2026-04-14 */ private resolveBranding; } export declare type ViewerEventName = keyof ViewerEvents; export declare interface ViewerEvents { load: { type: FileType; }; error: { error: Error; }; 'page-change': { page: number; total: number; }; 'zoom-change': { scale: number; }; 'theme-change': { theme: ThemeMode; }; 'locale-change': { locale: LocaleKey | string; }; 'watermark-change': { config: WatermarkConfig | null; }; destroy: undefined; } export declare interface ViewerOptions { target: HTMLElement | string; file?: FileSource; type?: FileType; toolbar?: boolean | ToolbarConfig; theme?: ThemeMode | ThemeConfig; locale?: LocaleKey | LocaleConfig; watermark?: WatermarkConfig; branding?: boolean | BrandingConfig; width?: string | number; height?: string | number; onReady?: () => void; onError?: (error: Error) => void; } export declare interface WatermarkConfig { text?: string; image?: string; fontSize?: number; color?: string; rotate?: number; gap?: [number, number]; } export { }