/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IconUrlBuilder, IconExternalType, IconTheme } from './icon-constants';
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
export interface IIconProperties {
    name: string | undefined;
    src: string | undefined;
    lazy: boolean;
    external: boolean;
    externalType: IconExternalType;
    externalUrlBuilder: IconUrlBuilder;
    theme: IconTheme;
    viewbox: string;
}
export interface IIconComponent extends IIconProperties, IBaseComponent {
    layout(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-icon': IIconComponent;
    }
}
/**
 * @tag forge-icon
 *
 * @summary Icons are used to represent information visually
 *
 * @property {string} name - The name of the icon to render.
 * @property {string} src - Provides the ability to set the SVG string content directly.
 * @property {boolean} lazy - Controls whether the icon will be loaded dynamically when it comes into view. False by default.
 * @property {boolean} external - Controls whether external network requests are allowed for this icon. Only pertains for icons that aren't already defined in the registry.
 * @property {IconExternalType} externalType - The type of icon to load externally. Possible values: "standard" (default), "extended", "custom".
 * @property {IconUrlBuilder} externalUrlBuilder - A callback that can be provided to generate a URL that will be used to fetch an SVG icon.
 * @property {string} viewbox - A custom value to apply to the `viewBox` attribute on the internal `<svg>` element.
 * @property {IconTheme} theme - The theme to apply to the icon.
 *
 * @attribute {string} name - The name of the icon to render.
 * @attribute {string} src - Provides the ability to set the SVG string content directly.
 * @attribute {boolean} lazy - Controls whether the icon will be loaded dynamically when it comes into view. False by default.
 * @attribute {boolean} external - Controls whether external network requests are allowed for this icon. Only pertains for icons that aren't already defined in the registry.
 * @attribute {IconExternalType} externalType - The type of icon to load externally. Possible values: "standard" (default), "extended", "custom".
 * @attribute {string} viewbox - A custom value to apply to the `viewBox` attribute on the internal `<svg>` element.
 * @attribute {IconTheme} theme - The theme to apply to the icon.
 *
 * @method layout - Forces a reload of the icon content.
 *
 * @cssproperty --forge-icon-color - The color of the icon.
 * @cssproperty --forge-icon-size - The size of the icon. Defaults to the font-size of the context it is placed in.
 * @cssproperty --forge-icon-width - The width of the icon.
 * @cssproperty --forge-icon-height - The height of the icon.
 * @cssproperty --forge-icon-font-size - The font size of the icon.
 *
 * @csspart svg - The internal SVG element.
 */
export declare class IconComponent extends BaseComponent implements IIconComponent {
    static get observedAttributes(): string[];
    private _foundation;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /** The name of the icon within the icon registry to be used. */
    name: string | undefined;
    /** Provides the ability to set the SVG string content directly. */
    src: string | undefined;
    /** Controls whether the icon will be loaded dynamically when it comes into view. False by default. */
    lazy: boolean;
    /** Controls whether external network requests are allowed for this icon. Only pertains for icons that aren't defined in the registry. */
    external: boolean;
    /** The type of icon to load externally. Possible values: "standard", "extended", "custom". */
    externalType: IconExternalType;
    /** A callback that can be provided to generate a URL that will be used to fetch an SVG icon. */
    externalUrlBuilder: IconUrlBuilder;
    /** A custom value to apply to the `viewBox` attribute on the internal `<svg>` element. */
    viewbox: string;
    theme: IconTheme;
    /** Forces a reload of the icon. */
    layout(): void;
}
