import { IconWrapperComponent, IconWrapperComponentSize16, IconWrapperComponentSize24, IconWrapperComponentSize32 } from '@hh.ru/magritte-ui-icon/types';
type IconGlyphComponent = React.ForwardRefExoticComponent<React.SVGProps<SVGSVGElement> & React.RefAttributes<SVGSVGElement>>;
type SizedIconWrapperComponent<T extends string> = T extends `${string}Size16` ? IconWrapperComponentSize16 : T extends `${string}Size24` ? IconWrapperComponentSize24 : T extends `${string}Size32` ? IconWrapperComponentSize32 : IconWrapperComponent;
type SizedSkeleton<T extends string> = T extends `${string}Size16` ? IconWrapperComponentSize16<{
    loading?: boolean;
}> : T extends `${string}Size24` ? IconWrapperComponentSize24<{
    loading?: boolean;
}> : T extends `${string}Size32` ? IconWrapperComponentSize32<{
    loading?: boolean;
}> : IconWrapperComponent<{
    loading?: boolean;
}>;
type IconWithSkeleton<T extends string> = SizedIconWrapperComponent<T> & {
    Skeleton: SizedSkeleton<T>;
};
declare const hoc: <T extends string>(IconGlyph: IconGlyphComponent, componentName: string) => IconWithSkeleton<T>;
export default hoc;
