/**
 * 裁剪头像上传
 */
import React, { Component } from 'react';
import { AxiosRequestConfig } from 'axios';
import PropTypes from 'prop-types';
import { ModalProps } from '../modal';
import { UploadProps } from '../upload';
export interface Limit {
    size: number;
    type: string;
}
export interface AvatarArea {
    rotate: number;
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    file?: File;
}
export interface AvatarUploadProps {
    visible: boolean;
    onClose?: (visible: boolean) => void;
    onUploadOk?: (res: any) => void;
    uploadUrl?: string;
    uploadFaild?: () => void;
    uploadError?: (error: any) => void;
    handleUpload?: (area: AvatarArea) => void;
    cropComplete?: (imageState: any) => void;
    title?: string | React.ReactElement;
    subTitle?: string | React.ReactElement;
    previewTitle?: string | React.ReactElement;
    reloadTitle?: string | React.ReactElement;
    uploadProps?: UploadProps;
    modalProps?: ModalProps;
    limit: Limit;
    previewList: number[];
    editorWidth: number;
    editorHeight: number;
    minRectSize: number;
    defaultRectSize: number;
    axiosConfig?: AxiosRequestConfig;
    prefixCls?: string;
}
export default class AvatarUploader extends Component<AvatarUploadProps, any> {
    static propTypes: {
        visible: PropTypes.Validator<boolean>;
        onClose: PropTypes.Requireable<(...args: any[]) => any>;
        onUploadOk: PropTypes.Requireable<(...args: any[]) => any>;
        limit: PropTypes.Requireable<object>;
        uploadUrl: PropTypes.Requireable<string>;
        previewList: PropTypes.Requireable<any[]>;
        editorWidth: PropTypes.Requireable<number>;
        editorHeight: PropTypes.Requireable<number>;
        minRectSize: PropTypes.Requireable<number>;
        defaultRectSize: PropTypes.Requireable<number>;
        prefixCls: PropTypes.Requireable<string>;
        handleUpload: PropTypes.Requireable<(...args: any[]) => any>;
        axiosConfig: PropTypes.Requireable<object>;
        cropComplete: PropTypes.Requireable<(...args: any[]) => any>;
        title: PropTypes.Requireable<string | object>;
        subTitle: PropTypes.Requireable<string | object>;
        previewTitle: PropTypes.Requireable<string | object>;
        reloadTitle: PropTypes.Requireable<string | object>;
        uploadProps: PropTypes.Requireable<object>;
        modalProps: PropTypes.Requireable<object>;
        reloadText: PropTypes.Requireable<(...args: any[]) => any>;
        uploadFaild: PropTypes.Requireable<(...args: any[]) => any>;
        uploadError: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        limit: {
            type: string;
            size: number;
        };
        previewList: number[];
        editorWidth: number;
        editorHeight: number;
        minRectSize: number;
        defaultRectSize: number;
    };
    constructor(props: any);
    handleOk: () => void;
    close(): void;
    uploadOk(res: any): void;
    handleCancel: () => void;
    initImageSize(img: any, rotate?: number): void;
    onComplete(imageState: any): void;
    loadImage(src: any): void;
    getPreviewProps(previewSize: any): {
        style: {
            width: any;
            height: any;
            backgroundImage: string;
            backgroundSize: string;
            backgroundPosition: string;
            transform: string;
        };
    };
    renderPreviewItem(previewSizeList: any): any;
    renderEditor(props: any): JSX.Element;
    getUploadProps(): {
        beforeUpload: (file: any) => boolean;
        onChange: ({ file }: {
            file: any;
        }) => void;
        multiple: boolean;
        name: string;
        accept: string;
        headers: {
            Authorization: string;
        };
        showUploadList: boolean;
    } | {
        beforeUpload: (file: any) => boolean;
        onChange: ({ file }: {
            file: any;
        }) => void;
        type?: "select" | "drag" | undefined;
        name: string;
        defaultFileList?: import("../upload/interface").UploadFile[] | undefined;
        fileList?: import("../upload/interface").UploadFile[] | undefined;
        action?: string | undefined;
        data?: Object | ((file: import("../upload/interface").UploadFile) => any) | undefined;
        headers: import("../upload/interface").HttpRequestHeader | {
            Authorization: string;
        };
        showUploadList: boolean | import("../upload/interface").ShowUploadListInterface;
        multiple: boolean;
        dragUploadList?: boolean | undefined;
        accept: string;
        listType?: "picture" | "text" | "picture-card" | undefined;
        className?: string | undefined;
        onStart?: ((file: import("../upload/interface").UploadFile) => void) | undefined;
        onPreview?: ((file: import("../upload/interface").UploadFile) => void) | undefined;
        onDragEnd?: ((files: import("../upload/interface").UploadFile[]) => boolean | void) | undefined;
        onRemove?: ((file: import("../upload/interface").UploadFile) => boolean | void) | undefined;
        onSuccess?: ((response: any, file: import("../upload/interface").UploadFile) => void) | undefined;
        onProgress?: ((e: {
            percent: number;
        }, file: import("../upload/interface").UploadFile) => void) | undefined;
        onError?: ((error: Error, response: any, file: import("../upload/interface").UploadFile) => void) | undefined;
        supportServerRender?: boolean | undefined;
        style?: React.CSSProperties | undefined;
        disabled?: boolean | undefined;
        prefixCls?: string | undefined;
        customRequest?: ((option: any) => void) | undefined;
        previewFile?: ((file: Blob | File) => PromiseLike<string>) | undefined;
        withCredentials?: boolean | undefined;
        locale?: import("../upload/interface").UploadLocale | undefined;
        requestFileKeys?: string | string[] | undefined;
    };
    renderContainer(): JSX.Element;
    render(): JSX.Element;
}
