/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IWithFormAssociation } from '../../core/mixins/form/with-form-associated';
import { IWithLabelAwareness } from '../../core/mixins/label/with-label-aware';
import { IWithElementInternals } from '../../core/mixins/internals/with-element-internals';
import { IWithFormValidity } from '../../core/mixins/form/with-form-validity';
import { BaseComponent } from '../../core/base/base-component';
import { ButtonToggleGroupTheme, IButtonToggleGroupChangeEventData } from './button-toggle-group-constants';
import { getFormState, getFormValue } from '../../constants';
import { FormValue, FormRestoreState, FormRestoreReason } from '../../core/utils/form-utils';
import { IWithDefaultAria } from '../../core/mixins/internals/with-default-aria';
export interface IButtonToggleGroupComponent extends IWithLabelAwareness, IWithFormAssociation, IWithFormValidity, IWithElementInternals, IWithDefaultAria {
    value: any;
    outlined: boolean;
    multiple: boolean;
    stretch: boolean;
    mandatory: boolean;
    vertical: boolean;
    disabled: boolean;
    readonly: boolean;
    dense: boolean;
    theme: ButtonToggleGroupTheme;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-button-toggle-group': IButtonToggleGroupComponent;
    }
    interface HTMLElementEventMap {
        'forge-button-toggle-group-change': CustomEvent<IButtonToggleGroupChangeEventData>;
    }
}
declare const ButtonToggleGroupComponent_base: import("../../constants").AbstractConstructor<import("../../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/form/with-form-associated").WithFormAssociationContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/form/with-form-validity").WithFormValidityContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-element-internals").WithElementInternalsContract> & typeof BaseComponent;
/**
 * @tag forge-button-toggle-group
 *
 * @description Button toggle groups allow users to select one or more options from a set of related options.
 *
 * @property {any} value - The value of the selected button toggle(s).
 * @property {boolean} outlined - Whether or not the group should be outlined.
 * @property {boolean} multiple - Whether or not the group should allow multiple selections.
 * @property {boolean} stretch - Whether or not the group should stretch to fill the available width.
 * @property {boolean} mandatory - Whether or not the group should require a selection once a button has been toggled on.
 * @property {boolean} vertical - Whether or not the group should be displayed vertically.
 * @property {boolean} disabled - Whether or not the group should be disabled.
 * @property {boolean} readonly - Whether or not the group should be readonly.
 * @property {boolean} dense - Whether or not the group should be dense.
 * @property {ButtonToggleGroupTheme} theme - The theme to use for the group.
 *
 * @attribute {any} value - The value of the selected button toggle(s).
 * @attribute {boolean} outlined - Whether or not the group should be outlined.
 * @attribute {boolean} multiple - Whether or not the group should allow multiple selections.
 * @attribute {boolean} stretch - Whether or not the group should stretch to fill the available width.
 * @attribute {boolean} mandatory - Whether or not the group should require a selection once a button has been toggled on.
 * @attribute {boolean} vertical - Whether or not the group should be displayed vertically.
 * @attribute {boolean} disabled - Whether or not the group should be disabled.
 * @attribute {boolean} readonly - Whether or not the group should be readonly.
 * @attribute {boolean} dense - Whether or not the group should be dense.
 * @attribute {ButtonToggleGroupTheme} theme - The theme to use for the group.
 *
 * @event {CustomEvent<IButtonToggleGroupChangeEventData>} forge-button-toggle-group-change - Dispatches when the value of the group changes.
 *
 * @cssproperty --forge-button-toggle-group-display - The `display` of the group container elements.
 * @cssproperty --forge-button-toggle-group-gap - The space between button toggle elements.
 * @cssproperty --forge-button-toggle-group-padding - The padding around the button toggle elements when outlined.
 * @cssproperty --forge-button-toggle-group-padding-block - The block padding around the button toggle elements when outlined.
 * @cssproperty --forge-button-toggle-group-padding-inline - The inline padding around the button toggle elements when outlined.
 * @cssproperty --forge-button-toggle-group-height - The height of the group element.
 * @cssproperty --forge-button-toggle-group-dense-height - The height of the group element when dense.
 * @cssproperty --forge-button-toggle-group-outline-width - The width of the outline around the group element.
 * @cssproperty --forge-button-toggle-group-outline-style - The style of the outline around the group element.
 * @cssproperty --forge-button-toggle-group-outline-color - The color of the outline around the group element.
 * @cssproperty --forge-button-toggle-group-outline-color-active - The color of the outline around the group element when hovered or focused.
 * @cssproperty --forge-button-toggle-group-shape - The shape radius of the group container element.
 * @cssproperty --forge-button-toggle-group-shape-start-start - The start-start shape radius.
 * @cssproperty --forge-button-toggle-group-shape-start-end - The start-end shape radius.
 * @cssproperty --forge-button-toggle-group-shape-end-start - The end-start shape radius.
 * @cssproperty --forge-button-toggle-group-shape-end-end - The end-end shape radius.
 * @cssproperty --forge-button-toggle-group-transition-duration - The transition duration for all animations on the group.
 * @cssproperty --forge-button-toggle-group-transition-timing - The transition timing for all animations on the group.
 *
 * @csspart root - The root container element for the group.
 *
 * @slot - The is a default/unnamed slot for child button toggle elements.
 */
export declare class ButtonToggleGroupComponent extends ButtonToggleGroupComponent_base implements IButtonToggleGroupComponent {
    static get observedAttributes(): string[];
    private _foundation;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    [getFormValue](): FormValue | null;
    [getFormState](): FormValue | null;
    formStateRestoreCallback(state: FormRestoreState, reason: FormRestoreReason): void;
    formResetCallback(): void;
    labelChangedCallback(value: string | null): void;
    value: any;
    outlined: boolean;
    multiple: boolean;
    mandatory: boolean;
    vertical: boolean;
    stretch: boolean;
    dense: boolean;
    disabled: boolean;
    required: boolean;
    readonly: boolean;
    theme: ButtonToggleGroupTheme;
}
export {};
