/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
export interface IIconButtonComponent extends IBaseComponent {
    toggle: boolean;
    isOn: boolean;
    dense: boolean;
    densityLevel: number;
    layout(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-icon-button': IIconButtonComponent;
    }
    interface HTMLElementEventMap {
        'forge-icon-button-change': CustomEvent<boolean>;
    }
}
/**
 * The custom element class behind the `<forge-icon-button>` element.
 *
 * @tag forge-icon-button
 */
export declare class IconButtonComponent extends BaseComponent implements IIconButtonComponent {
    static get observedAttributes(): string[];
    private _rippleInstance;
    private _buttonElement;
    private _toggle;
    private _isOn;
    private _dense;
    private _densityLevel;
    private _toggleHandler;
    private _buttonAttrMutationObserver;
    private _destroyUserInteractionListener;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /** Gets/sets whether the button is togglable. */
    get toggle(): boolean;
    set toggle(value: boolean);
    /** Gets/sets the toggled state of the icon button. Only applies when `toggle = true`. */
    get isOn(): boolean;
    set isOn(value: boolean);
    /** Gets/sets whether the icon button is dense. */
    get dense(): boolean;
    set dense(value: boolean);
    /** Controls the density level. 1 (least dense) to 6 (most dense). */
    get densityLevel(): number;
    set densityLevel(value: number);
    private _initialize;
    private _deferRippleInitialization;
    private _createRipple;
    private _toggleValue;
    private _applyToggle;
    private _applyDensity;
    private _initializeToggle;
    private _destroyToggle;
    layout(): void;
}
