import { ImageProps } from '../image/index';
export interface TdUploadProps {
    addContent?: {
        type: StringConstructor;
        value?: string;
    };
    allowUploadDuplicateFile?: {
        type: BooleanConstructor;
        value?: boolean;
    };
    config?: {
        type: ObjectConstructor;
        value?: UploadMpConfig;
    };
    disabled?: {
        type: BooleanConstructor;
        value?: boolean;
    };
    style?: {
        type: StringConstructor;
        value?: string;
    };
    files?: {
        type: ArrayConstructor;
        value?: Array<UploadFile>;
    };
    defaultFiles?: {
        type: ArrayConstructor;
        value?: Array<UploadFile>;
    };
    gridConfig?: {
        type: ObjectConstructor;
        value?: {
            column?: number;
            width?: number;
            height?: number;
        };
    };
    gutter?: {
        type: NumberConstructor;
        value?: number;
    };
    imageProps?: {
        type: ObjectConstructor;
        value?: ImageProps;
    };
    max?: {
        type: NumberConstructor;
        value?: number;
    };
    mediaType?: {
        type: ArrayConstructor;
        value?: Array<MediaType>;
    };
    requestMethod?: {
        type: null;
        value?: null;
    };
    sizeLimit?: {
        type: null;
        value?: number | SizeLimitObj;
    };
    source?: {
        type: StringConstructor;
        value?: 'media' | 'messageFile';
    };
    draggable?: {
        type: null;
        value?: boolean | Draggable;
    };
    transition?: {
        type: ObjectConstructor;
        value: Transition;
    };
}
export declare type UploadMpConfig = ImageConfig | VideoConfig;
export interface ImageConfig {
    count?: number;
    sizeType?: Array<SizeTypeValues>;
    sourceType?: Array<SourceTypeValues>;
}
export declare type SizeTypeValues = 'original' | 'compressed';
export declare type SourceTypeValues = 'album' | 'camera';
export interface VideoConfig {
    sourceType?: Array<SourceTypeValues>;
    compressed?: boolean;
    maxDuration?: number;
    camera?: 'back' | 'front';
}
export interface UploadDisplayDragEvents {
    onDrop?: (event: DragEvent) => void;
    onDragenter?: (event: DragEvent) => void;
    onDragover?: (event: DragEvent) => void;
    onDragleave?: (event: DragEvent) => void;
}
export interface UploadFile {
    url: string;
    name?: string;
    size?: number;
    type?: 'image' | 'video';
    percent?: number;
    status: 'loading' | 'reload' | 'failed' | 'done';
    thumb?: string;
}
export declare type MediaType = 'image' | 'video';
export interface SizeLimitObj {
    size: number;
    unit: SizeUnit;
    message?: string;
}
export declare type SizeUnitArray = ['B', 'KB', 'MB', 'GB'];
export declare type SizeUnit = SizeUnitArray[number];
export interface Draggable {
    vibrate?: boolean;
    collisionVibrate?: boolean;
}
export interface Transition {
    backTransition?: boolean;
    duration?: number;
    timingFunction?: string;
}
