import * as React from 'react'; import { EventManager } from '../../utils/eventManager'; export declare type UploadFileState = 'new' | 'active' | 'canceled' | 'complete'; export interface UploadFileStatus { /** * The id of the file for identification. */ id: string; /** * The name of the file. */ name: string; /** * The content-type of the file. */ type: string; /** * The current progress of the file. */ progress: number; /** * The current state of the file. */ state: UploadFileState; /** * Arbitrary data associated with the file, which is set by the upload host. */ data: any; } export interface FileUploaderChangeEvent { /** * The files that changed. */ files: Array; /** * The total number of selected files. */ total: number; /** * Status if the selected files are all uploaded and verified. */ ready: boolean; } export interface FileUploaderProps { /** * Allow selecting multiple files. */ multiple?: boolean; /** * Event emitted when file upload changes. */ onChange?(e: FileUploaderChangeEvent): void; /** * Optionally uses an explicit upload data connector. */ data?: UploadData; /** * Message for dragging files to show on drop area. * @default "Drop files here to upload" */ message?: string; /** * Show the file list under the drop zone */ showFileList?: boolean; } export interface UploadFile { id: string; name: string; type: string; progress: number; data: any; added: Date; status: UploadFileState; } export declare type UploadDataEventType = 'change' | 'ready'; export interface UploadDataEventListener { (): void; } export declare class UploadData { readonly id: string; readonly events: EventManager; readonly files: Array; private readonly notifications; constructor(events?: EventManager); get completedFiles(): UploadFile[]; get ready(): boolean; get total(): number; commit(cb: (completedFiles: Array) => void): void; once(type: UploadDataEventType, cb: UploadDataEventListener): void; on(type: UploadDataEventType, cb: UploadDataEventListener): void; off(type: UploadDataEventType, cb: UploadDataEventListener): void; private connect; private disconnect; private emit; private filesChanged; push(files: Array): void; } /** * The file uploader component that passes selected files to global uploader. Should be used with `FileUploaderDetails` component. */ export declare class FileUploader extends React.Component { private readonly data; constructor(props: FileUploaderProps); componentDidMount(): void; componentWillUnmount(): void; private emitChange; private filesAdded; private fileSelect; render(): JSX.Element; static inner: { readonly Dropzone: React.SFC; }; }