/**
 * Visual type of file uploader control.
 */
export type VegaFileUploaderType = 'uploadArea' | 'uploadButton';

/**
 * Status states for a file during upload.
 */
export type VegaFileUploaderFileStatus = 'done' | 'uploading' | 'error';

/**
 * File metadata tracked by the file uploader component.
 */
export type VegaFileUploaderFile = {
	/**
	 * The unique id of the uploaded file.
	 */
	key: string;
	/**
	 * The name of the uploaded file.
	 */
	name: string;
	/**
	 * The url of the uploaded file.
	 */
	url: string | File;
	/**
	 * Specifies whether the uploaded file is previewed.
	 */
	previewable?: boolean;
	/**
	 * The loading status of the uploaded file.
	 */
	status?: VegaFileUploaderFileStatus;
	/**
	 * The error message of the uploaded file.
	 */
	errorMessage?: string;
	/**
	 * The uploading percent of the uploaded file.
	 */
	uploadingPercent?: number;
};

/**
 * Array of file objects used by the uploader.
 */
export type VegaFileUploaderFiles = VegaFileUploaderFile[];
