/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IconUrlBuilder, IconExternalType } from './icon-constants';
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
export interface IIconComponent extends IBaseComponent {
    name: string | undefined;
    src: string | undefined;
    lazy: boolean;
    external: boolean;
    externalType: IconExternalType;
    externalUrlBuilder: IconUrlBuilder;
    viewbox: string;
    layout(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-icon': IIconComponent;
    }
}
/**
 * The web component class behind the `<forge-icon>` custom element.
 *
 * @tag forge-icon
 */
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;
    /** Forces a reload of the icon. */
    layout(): void;
}
