import { type FileViewerRendererAssetDefinition, type FileViewerRendererAssetManifest } from '@file-viewer/core/assets';
export interface CopyViewerAssetsOptions {
    /**
     * Target static directory. Defaults to the host project's `public/file-viewer`.
     */
    targetDir?: string;
    /**
     * Override the bundled viewer source directory, mainly for tests and release tooling.
     */
    sourceDir?: string;
    /**
     * Whether to clear the target directory before copying. Defaults to true.
     */
    clean?: boolean;
}
export interface ValidateViewerAssetsOptions {
    /**
     * Viewer static directory. Defaults to this package's bundled `viewer/`.
     */
    sourceDir?: string;
}
export interface ViewerAssetValidationItem {
    id: string;
    rendererId: string;
    kind: FileViewerRendererAssetDefinition['kind'];
    target: FileViewerRendererAssetDefinition['target'];
    required: boolean;
    relativePath: string;
    absolutePath: string;
    exists: boolean;
    description: string;
}
export interface ViewerAssetValidationResult {
    sourceDir: string;
    valid: boolean;
    checkedAt: string;
    assets: ViewerAssetValidationItem[];
    missingRequired: ViewerAssetValidationItem[];
    missingOptional: ViewerAssetValidationItem[];
}
export type ViewerAssetManifestValidationItem = Omit<ViewerAssetValidationItem, 'absolutePath'>;
export interface ViewerAssetManifestValidationResult {
    valid: boolean;
    checkedAt: string;
    assets: ViewerAssetManifestValidationItem[];
    missingRequired: ViewerAssetManifestValidationItem[];
    missingOptional: ViewerAssetManifestValidationItem[];
}
export interface ViewerAssetManifestFile {
    schemaVersion: 1;
    generatedAt: string;
    rendererAssetManifests: FileViewerRendererAssetManifest[];
    validation: ViewerAssetManifestValidationResult;
}
export interface CopyViewerAssetsResult {
    sourceDir: string;
    targetDir: string;
    assetBaseUrl: string;
    assetManifestPath: string;
    validation: ViewerAssetValidationResult;
}
export declare const DEFAULT_VIEWER_PUBLIC_DIR = "public/file-viewer";
export declare const DEFAULT_VIEWER_ASSET_BASE_URL = "/file-viewer/";
export declare const VIEWER_ASSET_MANIFEST_FILENAME = "flyfish-viewer-assets.json";
export declare const getViewerAssetDir: () => string;
export declare const getDefaultViewerTargetDir: () => string;
export declare const validateViewerAssets: (options?: ValidateViewerAssetsOptions) => Promise<ViewerAssetValidationResult>;
export declare const toViewerAssetManifestValidation: (validation: ViewerAssetValidationResult) => ViewerAssetManifestValidationResult;
export declare const buildViewerAssetManifest: (validation: ViewerAssetValidationResult) => ViewerAssetManifestFile;
export declare const writeViewerAssetManifest: (targetDir: string, manifest: ViewerAssetManifestFile) => Promise<string>;
export declare const copyViewerAssets: (options?: CopyViewerAssetsOptions) => Promise<CopyViewerAssetsResult>;
