import React from 'react';
import { defaultIconfont } from './iconfont/iconManager';
import { IIconShapeOptions } from './util';
import './styles.less';
export type DefaultIconKeys = keyof typeof defaultIconfont;
export interface IIconResourceOptions {
    isDirectory?: boolean;
    isOpenedDirectory?: boolean;
    isSymbolicLink?: boolean;
}
export interface IiconContext<T extends string> {
    getIcon: (iconKey: DefaultIconKeys | T, options?: IIconShapeOptions) => string;
    getResourceIcon?: (url: string, options?: IIconResourceOptions) => string;
}
export declare const IconContext: React.Context<IiconContext<any>>;
export declare function IconContextProvider(props: React.PropsWithChildren<{
    value: IiconContext<any>;
}>): React.JSX.Element;
export interface IconBaseProps<T> extends IIconShapeOptions {
    title?: string;
    icon?: DefaultIconKeys | T;
    iconClass?: string;
    tooltip?: string;
    size?: 'small' | 'large';
    loading?: boolean;
    disabled?: boolean;
    onClick?: React.MouseEventHandler<HTMLSpanElement>;
    resourceOptions?: IIconResourceOptions;
    animate?: string;
}
export type IconProps<T = any> = IconBaseProps<T> & React.HTMLAttributes<HTMLSpanElement>;
export declare const _InternalIcon: React.MemoExoticComponent<React.ForwardRefExoticComponent<IconBaseProps<any> & React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>>;
export declare const Icon: <T = any>(props: IconProps<T>, ref: React.Ref<HTMLSpanElement>) => React.ReactElement;
//# sourceMappingURL=icon.d.ts.map