import { Ref, ButtonHTMLAttributes, CSSProperties, ReactElement, ChangeEvent, MouseEvent, PureComponent } from 'react';
import PropTypes from 'prop-types';
import { CombinePropsAndAttributes } from '../../helpers';
export declare enum DisplayVariant {
    Img = "img",
    Block = "block"
}
export declare type Display = 'img' | 'block';
interface ISelfProps {
    elementRef?: Ref<HTMLInputElement>;
    previewStyle?: CSSProperties;
    display?: Display;
    name?: string;
    placeholder?: ReactElement<any>;
    defaultValue?: string;
    value?: string;
    disabled?: boolean;
    readOnly?: boolean;
    resetButton?: ReactElement<any>;
    onChange?(image: File, event: ChangeEvent | MouseEvent): any;
}
export declare type IProps = CombinePropsAndAttributes<ISelfProps, ButtonHTMLAttributes<HTMLButtonElement>>;
interface IState {
    value: string;
    filename: string;
}
export declare const DisplayValues: Display[];
export default class ImageSelect extends PureComponent<IProps, IState> {
    static propTypes: {
        elementRef: PropTypes.Requireable<(...args: any[]) => any>;
        previewStyle: PropTypes.Requireable<object>;
        display: PropTypes.Requireable<Display>;
        name: PropTypes.Requireable<string>;
        placeholder: PropTypes.Requireable<PropTypes.ReactElementLike>;
        defaultValue: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        readOnly: PropTypes.Requireable<boolean>;
        resetButton: PropTypes.Requireable<PropTypes.ReactElementLike>;
        style: PropTypes.Requireable<object>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    };
    static defaultProps: {
        display: DisplayVariant;
        disabled: boolean;
        readOnly: boolean;
        resetButton: JSX.Element;
    };
    static getDerivedStateFromProps({ value }: IProps, { value: prevValue }: IState): Partial<IState>;
    constructor(props: any);
    render(): JSX.Element;
    private onChange;
    private onReset;
}
export {};
//# sourceMappingURL=ImageSelect.d.ts.map