import * as polytype from 'polytype';
import { MXInteractiveComponent, MXColorLookComponent, AXClickEvent, AXSelectionMode, MXColorComponent, AXStyleColorType } from '@acorex/cdk/common';
import * as i0 from '@angular/core';
import { EventEmitter } from '@angular/core';

declare const AXButtonGroupComponent_base: polytype.Polytype.ClusteredConstructor<[typeof MXInteractiveComponent, typeof MXColorLookComponent]>;
/**
 * A component that groups multiple buttons together, allowing for consistent styling and behavior.
 *
 * @category Components
 */
declare class AXButtonGroupComponent extends AXButtonGroupComponent_base {
    #private;
    readonly fitParent: i0.InputSignal<boolean>;
    /**
     * Fires when any button in the group is clicked.
     *
     * @event
     */
    onClick: EventEmitter<AXClickEvent>;
    /**
     *  @ignore
     */
    private _contentButtons;
    /**
     * Emitted when the selection mode changes.
     *
     * @event
     */
    selectionChange: EventEmitter<AXSelectionMode>;
    /**
     * Emits the button item component instance when the selected button changes.
     *
     * @event
     */
    selectedButtonChange: i0.OutputEmitterRef<AXButtonGroupItemComponent>;
    /**
     *  @ignore
     */
    private _selection;
    /**
     * Defines the selection mode for the component.
     */
    get selection(): AXSelectionMode;
    /**
     * Sets the selection mode for the component.
     *
     * @param value - The selection mode to be set. Possible values include 'single', 'multiple', or 'none'.
     */
    set selection(value: AXSelectionMode);
    /**
     *  @ignore
     */
    private _bindEvents;
    /**
     *  @ignore
     */
    private _bindProps;
    /**
     *  @ignore
     * Updates component properties based on internal option changes.
     */
    protected internalOptionChanged(): void;
    /**
     *  @ignore
     */
    private _handleClickEvent;
    /**
     *  @ignore
     */
    private clearSelection;
    /**
     *  @ignore
     */
    private get __hostClass();
    /**
     *  @ignore
     */
    get role(): string;
    /**
     *  @ignore
     */
    private __hostClick;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXButtonGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXButtonGroupComponent, "ax-button-group", never, { "disabled": { "alias": "disabled"; "required": false; }; "color": { "alias": "color"; "required": false; }; "look": { "alias": "look"; "required": false; }; "fitParent": { "alias": "fitParent"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; }; }, { "onBlur": "onBlur"; "onFocus": "onFocus"; "lookChange": "lookChange"; "colorChange": "colorChange"; "disabledChange": "disabledChange"; "onClick": "onClick"; "selectionChange": "selectionChange"; "selectedButtonChange": "selectedButtonChange"; }, ["_contentButtons"], ["ax-button-group-item"], true, never>;
}

interface AXButtonItemListItem {
    name: string;
    text: string;
    icon: string;
    divided?: boolean;
    disabled?: boolean;
    color?: AXStyleColorType;
}
declare const AXButtonGroupItemComponent_base: polytype.Polytype.ClusteredConstructor<[typeof MXInteractiveComponent, typeof MXColorComponent]>;
/**
 * Represents a button item with optional content like icons, text, and dropdowns.
 *
 * @category Components
 */
declare class AXButtonGroupItemComponent extends AXButtonGroupItemComponent_base {
    btnGroup: AXButtonGroupComponent;
    /**
     * Text displayed on the button item.
     */
    text: string;
    /**
     *  @ignore
     */
    private _selected;
    /**
     * Indicates whether the button item is selected.
     *
     * @param v - A boolean indicating the selected state.
     * Updates the view when the value changes.
     */
    get selected(): boolean;
    set selected(v: boolean);
    /**
     * Whether the item is visually separated from other items.
     *  @defaultValue false
     */
    divided: boolean;
    /**
     * Data associated with the button item.
     */
    data: unknown;
    /**
     * The name of the button item.
     */
    name: string;
    /**
     * Emitted when the button item is clicked.
     * @event
     * The emitted value is an `AXClickEvent` object containing event details.
     */
    onClick: EventEmitter<AXClickEvent>;
    /**
     *  @ignore
     */
    private __hostClick;
    /**
     *  @ignore
     */
    private __hostFocus;
    /**
     *  @ignore
     */
    private __hostBlur;
    /**
     *  @ignore
     */
    private get __hostClass();
    /**
     *  @ignore
     */
    tabindex: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXButtonGroupItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXButtonGroupItemComponent, "ax-button-group-item", never, { "color": { "alias": "color"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "text": { "alias": "text"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "divided": { "alias": "divided"; "required": false; }; "data": { "alias": "data"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "onClick": "onClick"; "onFocus": "onFocus"; "onBlur": "onBlur"; "disabledChange": "disabledChange"; }, never, ["*"], true, never>;
}

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

export { AXButtonGroupComponent, AXButtonGroupItemComponent, AXButtonGroupModule };
export type { AXButtonItemListItem };
