import { EventEmitter } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { SelectButtonItem } from './models/select-button-item';
import * as i0 from "@angular/core";
/**
 * @description Componente de seleção por botões agrupados, onde cada opção é representada
 * visualmente como um botão clicável. Suporta seleção simples e múltipla. Implementa
 * {@link ControlValueAccessor} para integração com formulários Angular.
 *
 * @example
 * ```html
 * <s-select-button
 *   formControlName="visualizacao"
 *   [items]="opcoesVisualizacao"
 *   [multiple]="false"
 *   (itemSelected)="onVisualizacaoChange($event)" />
 * ```
 *
 * @category Inputs
 */
export declare class SelectButtonComponent implements ControlValueAccessor {
    /**
     * @description Lista de itens exibidos como botões de seleção.
     * Cada item pode possuir `label`, `value` e `disabled`. Campo obrigatório.
     */
    items: SelectButtonItem[];
    /**
     * @description Habilita a seleção de múltiplos itens ao mesmo tempo.
     * Quando `false`, apenas um item pode estar ativo por vez.
     *
     * @default false
     */
    multiple: boolean;
    /**
     * @description Emitido após a seleção de um item, com a lista completa dos itens
     * atualmente selecionados (array de {@link SelectButtonItem}).
     */
    itemSelected: EventEmitter<SelectButtonItem[]>;
    /**
     * @description Emitido no momento do clique em um item, antes da atualização
     * do estado de seleção. Útil para side-effects imediatos ao clique.
     */
    itemClicked: EventEmitter<SelectButtonItem>;
    disabled: boolean;
    activeItems: Set<SelectButtonItem>;
    onChange?: (value: SelectButtonItem[]) => void;
    onTouched?: (value: SelectButtonItem[]) => void;
    writeValue(value?: SelectButtonItem | SelectButtonItem[]): void;
    registerOnChange(onChange: (value: SelectButtonItem[]) => void): void;
    registerOnTouched(onTouched: (value: SelectButtonItem[]) => void): void;
    setDisabledState(disabled: boolean): void;
    onItemSelect(item: SelectButtonItem): void;
    private _compareItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<SelectButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SelectButtonComponent, "s-select-button", never, { "items": { "alias": "items"; "required": true; }; "multiple": { "alias": "multiple"; "required": false; }; }, { "itemSelected": "itemSelected"; "itemClicked": "itemClicked"; }, never, never, true, never>;
}
