import type { ComponentType, ForwardRefExoticComponent } from 'react';
import type { NoChildrenProp, WithAttributes } from '../../types';
type BaseIconProps = NoChildrenProp & {
    /**
     * The name of the icon set.
     * @default theme.base['icon-set']
     */
    set?: string;
    /** The name indicating the Cosmos Icon. Reference the catalog above for the available names. */
    name: string;
    /**
     * Background & svg size.
     * @default "s" without background, "m" with background.
     */
    size?: 's' | 'm' | 'l' | 'font-size';
};
export type IconProps = WithAttributes<'div', BaseIconProps & {
    /** Background color. */
    background: string;
    /**
     * Foreground color (svg fill).
     * Applies readable color off background if undefined.
     */
    foreground?: string;
    /**
     * Shape of the background.
     * @default 'square'
     */
    shape?: 'square' | 'circle';
}> | WithAttributes<'svg', BaseIconProps & {
    background?: never;
    foreground?: never;
    shape?: never;
}>;
export interface IconDefinition {
    Component: ComponentType;
    viewBox?: string;
}
export interface IconModule extends IconDefinition {
    set?: IconProps['set'];
    name: IconProps['name'];
}
export declare const registerIcon: (...icons: IconModule[]) => void;
export declare const forceRegisterIcon: (...icons: IconModule[]) => void;
export declare const StyledIcon: import("styled-components").StyledComponent<"svg", import("styled-components").DefaultTheme, {
    size?: IconProps["size"];
}, never>;
export declare const StyledIconShape: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
    background: NonNullable<IconProps["background"]>;
    foreground?: IconProps["foreground"];
    size?: IconProps["size"];
    shape?: IconProps["shape"];
}, never>;
declare const Icon: ForwardRefExoticComponent<IconProps>;
export default Icon;
//# sourceMappingURL=Icon.d.ts.map