/**
 * fileupload.ts
 *
 * Type definitions for the fileupload component.
 * Used by both Elements and React implementations.
 */
export type TUploadStrategy = 'form' | 'custom';
export type TFileUploadItemRenderer = 'filename' | 'thumbnail';
export type TFilesChangedReason = 'add' | 'remove' | 'update';
export type TFileValidator = (file: File) => string | null;
export type TTransferProgress = number | 'done' | 'error' | 'canceled' | 'queued';
/** A selected file plus metadata used by the FileUpload UI. */
export interface IFileItem {
    fileId: string;
    file?: File;
    attributes: {
        targetFilename: string;
    } & Record<string, unknown>;
}
/** Transfer status for a file when using `uploadStrategy="custom"`. */
export interface IFileTransfer {
    fileId: string;
    progress: TTransferProgress;
    errorMessage?: string;
    showProgress?: boolean;
    lastProgress?: number;
}
/** Detail payload for the `file-validate` event (Lit) / callback equivalent (React). */
export interface IFileValidateDetail {
    file: File;
    errorMessage: string | null;
}
/** Detail payload for `transfer-cancelled` event / `onTransferCancelled` callback. */
export interface ITransferCancelledDetail {
    fileId: string;
    file?: File;
    attributes: {
        targetFilename: string;
    } & Record<string, unknown>;
}
/** Detail payload for the `files-changed` event. */
export interface IFilesChangedDetail {
    files: IFileItem[];
    reason: TFilesChangedReason;
    changedFileIds?: string[];
}
/** Default Norwegian Bokmål strings used by both implementations. */
export interface IFileUploadStrings {
    dropZoneDragMultiple: string;
    dropZoneDragSingle: string;
    dropZoneDragMultipleThumbnail: string;
    dropZoneDragSingleThumbnail: string;
    dropZoneDragActiveMultiple: string;
    dropZoneDragActiveSingle: string;
    dropZoneDragActiveMultipleThumbnail: string;
    dropZoneDragActiveSingleThumbnail: string;
    dropZoneOpenFileDialogMultiple: string;
    dropZoneOpenFileDialogSingle: string;
    dropZoneOpenFileDialogMultipleThumbnail: string;
    dropZoneOpenFileDialogSingleThumbnail: string;
    supportedFormatsPrefix: string;
    invalidFormatDefault: (formats: string) => string;
    sizeTooLargeDefault: (maxSize: string) => string;
    requiredMissing: string;
    genericValidationRejection: string;
    unknownFilename: string;
    fileLabel: (count: number) => string;
    srFileAdded: (filename: string) => string;
    srFilesAdded: (count: number) => string;
    srFilesUploadedOfTotal: (uploaded: number, total: number, label: string) => string;
    srFilesFailedOfTotal: (failed: number, total: number, label: string) => string;
}
export declare const defaultFileUploadStrings: IFileUploadStrings;
