import { AdsIcon, adsIcon } from '@ascentgl/ads-icons/icons';
import * as i0 from '@angular/core';
import { OnInit, OnChanges, ElementRef, Renderer2, SimpleChanges } from '@angular/core';

declare class AdsIconRegistry {
    private registry;
    register(icons: AdsIcon | AdsIcon[]): void;
    get(iconName: string): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<AdsIconRegistry, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AdsIconRegistry>;
}

type Sizes = {
    xxl: string;
    xl: string;
    lg: string;
    md: string;
    sm: string;
    xs: string;
    xxs: string;
    xxs_16: string;
    xxxs: string;
    xxxxs: string;
    auto: string;
};
type IconThemes = {
    iconPrimary: string;
    primary: string;
    secondary: string;
    secondaryHover: string;
    success: string;
    warn: string;
    white: string;
    'dark-50': string;
    dark: string;
    link: string;
    'medium-50': string;
    light: string;
};
declare class AdsIconComponent implements OnInit, OnChanges {
    private element;
    private registry;
    private renderer;
    /**
     * The size of the icon
     */
    size: keyof Sizes;
    /**
     * The icon name
     */
    name: adsIcon;
    /**
     * The color of the icon
     */
    color?: string;
    /**
     * The icon theme
     */
    theme?: keyof IconThemes;
    /**
     * The icon stroke
     */
    stroke?: keyof IconThemes;
    /** @ignore */
    private sizes;
    /** @ignore */
    private themes;
    /** @ignore */
    private static instanceCounter;
    private instanceId;
    /** @ignore */
    constructor(element: ElementRef, registry: AdsIconRegistry, renderer: Renderer2);
    /** @ignore */
    ngOnInit(): void;
    /** @ignore */
    ngOnChanges(changes: SimpleChanges): void;
    /** @ignore */
    private renderIcon;
    /** @ignore */
    private makeIdsUnique;
    /** @ignore */
    private updateSize;
    /** @ignore */
    private updateColor;
    /** @ignore */
    private updateTheme;
    /** @ignore */
    private updateStroke;
    /** @ignore */
    private getSvgElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<AdsIconComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AdsIconComponent, "ads-icon", never, { "size": { "alias": "size"; "required": false; }; "name": { "alias": "name"; "required": false; }; "color": { "alias": "color"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "stroke": { "alias": "stroke"; "required": false; }; }, {}, never, never, false, never>;
}

declare class AdsIconModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AdsIconModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AdsIconModule, [typeof AdsIconComponent], never, [typeof AdsIconComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AdsIconModule>;
}

export { AdsIconComponent, AdsIconModule, AdsIconRegistry };
export type { IconThemes };
