import { TemplateResult } from 'lit';
import { IFileItem, IFileTransfer, IFileValidateDetail, IFilesChangedDetail, ITransferCancelledDetail, TFilesChangedReason, TFileUploadItemRenderer, TFileValidator, TFileUploadStrategy, TTransferProgress } from '../../shared-types';
export type TUploadStrategy = TFileUploadStrategy;
export type { TFileUploadItemRenderer, TFilesChangedReason, TFileValidator, TTransferProgress };
export type TFileValidateDetail = IFileValidateDetail;
export type TFileTransfer = IFileTransfer;
export type TTransferCancelledDetail = ITransferCancelledDetail;
export type TFilesChangedDetail = IFilesChangedDetail;
export type FileItem = IFileItem;
export type TFileComment = {
    text: string;
    timestamp: string;
};
export type TQueueOperationLabel = string | ((file: FileItem) => string);
export type TQueueOperationContext = {
    file: FileItem;
    inputName: string;
    disabled: boolean;
    isActive: boolean;
    activate: () => void;
    close: () => void;
    getAttribute: <T>(name: string) => T | undefined;
    setAttribute: (name: string, value: unknown) => void;
};
export type TQueueItemOperation = {
    id: string;
    title: TQueueOperationLabel;
    ariaLabel?: TQueueOperationLabel;
    onClick?: (context: TQueueOperationContext) => void;
    renderInlineUI?: (context: TQueueOperationContext) => TemplateResult | null;
    renderExtendedUI?: (context: TQueueOperationContext) => TemplateResult | null;
    renderContent?: (context: TQueueOperationContext) => TemplateResult | null;
    renderHidden?: (context: TQueueOperationContext) => TemplateResult | null;
};
export interface IPktFileUpload {
    id?: string;
    name?: string;
    label?: string;
    helptext?: string;
    required?: boolean;
    multiple?: boolean;
    disabled?: boolean;
    fullwidth?: boolean;
    uploadStrategy?: TUploadStrategy;
    itemRenderer?: TFileUploadItemRenderer;
    accept?: string;
    allowedFormats?: string[];
    formatErrorMessage?: string;
    maxFileSize?: string | number;
    sizeErrorMessage?: string;
    onFileValidation?: TFileValidator;
    /** External error state (combined with internal validation errors). */
    hasError?: boolean;
    /** External error message shown under the component. */
    errorMessage?: string;
    /** Show "Valgfritt" tag in input-wrapper. */
    optionalTag?: boolean;
    /** Show "Må fylles ut" tag in input-wrapper. */
    requiredTag?: boolean;
    /** Trailing characters to keep when truncating long filenames. */
    truncateTail?: number;
    /** Transfer states keyed by `fileId` (custom strategy progress/error/cancel rendering). */
    transfers?: TFileTransfer[];
    addCommentsEnabled?: boolean;
    renameFilesEnabled?: boolean;
    extraOperations?: TQueueItemOperation[];
    enableImagePreview?: boolean;
    value?: FileItem[];
    defaultValue?: FileItem[];
}
