/// <reference types="react" />

import * as React from 'react';

export interface ConfigProviderProps {
    /**
     * 样式类名的品牌前缀
     */
    prefix?: string;

    /**
     * 指定icon加载的js资源，仅用在局域网（专有云）下，非全量引入，使用包含Icon的组件，如Tag、Select等中的图标。
     */
    scriptUrl?: string;

    /**
     * 国际化文案对象，属性为组件的 displayName
     */
    locale?: {};

    /**
     * 是否开启错误捕捉 errorBoundary
     * 如需自定义参数，请传入对象 对象接受参数列表如下：
     *
     * fallbackUI `Function(error?: {}, errorInfo?: {}) => Element` 捕获错误后的展示
     * afterCatch `Function(error?: {}, errorInfo?: {})` 捕获错误后的行为, 比如埋点上传
     */
    errorBoundary?: boolean | {};

    /**
     * 是否开启 Pure Render 模式，会提高性能，但是也会带来副作用
     */
    pure?: boolean;

    /**
     * 是否在开发模式下显示组件属性被废弃的 warning 提示
     */
    warning?: boolean;

    /**
     * 是否开启 rtl 模式
     */
    rtl?: boolean;

    /**
     * 组件树
     */
    children?: React.ReactElement<any>;
}

export default class ConfigProvider extends React.Component<
    ConfigProviderProps,
    any
> {
    static config(Component: React.ComponentType<any>, options: {}): any;
    static getContextProps(props: {}, displayName: string): {};
    static setScriptUrl(url: string): void;
}
