import { UploadRequest } from '../../types/generic';
import { CellBindEventArgs } from '../cell/cell-types';
export type FileItem = {
    fileInstance: File;
    uploadFolder: string;
};
export type UploadFileStatus = {
    success: boolean;
    uploadFolder: string;
};
export type UploadStatus = {
    files: UploadFileStatus[];
};
export type FileItemInternal = {
    id: string;
    file: File;
    filePath?: string;
    preview?: string;
    uploadFolder?: string;
    uploadMessage?: string;
    status?: "idle" | "uploading" | "done" | "error";
    error?: string | null;
};
export interface FileUploadProps {
    /** Initial files to show in the list (file path identifiers) */
    initialFiles?: string[];
    /** FupAty - Allowed extensions / accept string for input (e.g. 'image/*' or 'jpg|png') */
    FupAty?: string;
    /** FupMul - Allow multiple selection (AS400 sends strings; component will coerce) */
    FupMul?: "1" | "true" | "True" | boolean;
    /** Maximum number of files allowed */
    maxFiles?: number;
    /** FupSzl - Maximum size (in bytes) for each file */
    FupSzl?: string;
    /** Disabled state */
    disabled?: boolean;
    /** Error */
    error?: string;
    /**
     * Callback when the set of files changes - called after successful uploads
     * Emits CellBindEventArgs for single file or CellBindEventArgs[] for multiple files
     */
    onChange?: (args: CellBindEventArgs | CellBindEventArgs[]) => void;
    /**
     * Called when the "Upload" button is clicked.
     * Should handle the actual upload process and return status for each file.
     */
    onUploadRequest?: UploadRequest;
    /** FupAut - If true, start uploading automatically after files are added (AS400 may send strings).*/
    FupAut?: "1" | "true" | "True" | boolean;
    /** Optional className for wrapper */
    className?: string;
    /** FupCho - Custom label text for the upload/select button */
    FupCho?: string;
    /** FupMsg - Custom message to display after upload */
    FupMsg?: string;
    /** FupShp - If true, include uploaded file path in the result display (if available).*/
    FupShp?: string;
    /** FupDir - Preferred upload directory on the server (informational) */
    FupDir?: string;
    /** FupDrg - Size of the drop area */
    FupDrg?: "Big" | "Small";
    /** Label for the file upload component */
    label?: string;
    /** If true, the component is in visual-only mode (no uploads allowed) */
    isVisualOnly?: boolean;
}
//# sourceMappingURL=file-upload-types.d.ts.map