import { Action } from 'redux';
export interface UploadFormFields {
    AWSAccessKeyId: string;
    key: string;
    policy: string;
    signature: string;
}
export interface UploadForm {
    url: string;
    fields: UploadFormFields;
}
export interface UploadData {
    id: string;
    created: string;
    modified: string;
    complete_url: string;
    file: string;
    file_key: string;
    file_path: string;
    filename: string;
    upload_form: UploadForm;
}
export interface UploadFormFieldsAndFile extends UploadFormFields {
    file: File;
}
export interface ActionSet {
    readonly BEGIN: symbol;
    readonly REQUEST: symbol;
    readonly SUCCESS: symbol;
    readonly FAILURE: symbol;
}
export interface FileUploadOptions {
    shouldRethrow?: (error: unknown) => boolean;
}
export interface UploadState {
    loading: boolean;
    fileCount: number;
    inFlightCount: number;
    completeCount: number;
    successCount: number;
    failureCount: number;
    data: undefined | ReadonlyArray<UploadData>;
    error: undefined | ReadonlyArray<unknown>;
}
export interface FileAndACL {
    file: File;
    acl: 'private' | 'public-read' | 'public-read-write' | 'authenticated-read';
}
export interface BeginAction extends Action {
    payload: number;
}
export interface SuccessAction extends Action {
    payload: UploadData;
}
export interface FailureAction extends Action {
    payload: unknown;
}
