import { type EventEmitter } from '../../stencil-public-runtime';
import { type FormValidationState } from '../../shared/utils/form';
import { type FormValidationChangeDetail } from '../../shared/utils/validator';
import type { CheckboxValidator } from './checkbox.types';
/**
* O `br-checkbox` marca ou desmarca uma opção independente. Funciona em formulários como um ``: é enviado com `name` e `value` quando está marcado.
*
* ```html
*
* ```
*
* Use `indeterminate` para indicar seleção parcial, por exemplo em um "selecionar todos" quando só parte dos itens está marcada.
*
* ### Quando usar
*
* - Opções em que escolher uma não impede escolher outra.
* - Confirmar uma condição, como aceitar termos.
*
* ### Quando evitar
*
* - Só uma opção pode ser escolhida: use `br-radio-group`.
* - A mudança vale na hora, sem enviar formulário: use `br-switch`.
* - Muitas opções em pouco espaço: use `br-select` com `multiple`.
*
* Para várias opções da mesma pergunta, agrupe-as em um `br-checkbox-group`.
*
* Consulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/checkbox?tab=designer).
*
* @category Formulários, Seleção
* @status stable
* @see br-checkbox-group
* @slot default - Slot para o rótulo do checkbox, como alternativa à propriedade label.
* @slot feedback - Mensagem de validação, normalmente um `br-message`.
*
* @part container - Contêiner visual do checkbox.
* @part input - Elemento input nativo do checkbox.
* @part label - Rótulo do checkbox.
* @part feedback - Contêiner da mensagem de validação.
*/
export declare class Checkbox {
elementInternals: ElementInternals;
formDisabledCallback(disabled: boolean): void;
formResetCallback(): void;
formStateRestoreCallback(state: string | File | FormData | null): void;
/**
* Referência ao elemento host do componente.
* Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.
*/
el: HTMLBrCheckboxElement;
/**
* Controla o estado de disabled herdado do form/fieldset pai.
*/
formDisabled: boolean;
/** Estado `disabled` herdado de um `br-checkbox-group`. */
groupDisabled: boolean;
/**
* Define o número de checkboxes filhos em um grupo de checkboxes.
*/
numberOfChildren: number;
/**
* Indica se o slot default possui conteúdo.
*/
slotDefault: boolean;
/** Indica se o slot de feedback possui conteúdo fornecido pelo consumidor. */
hasFeedbackSlot: boolean;
/** Mensagem definida pela Constraint Validation API. */
manualValidationMessage: string;
validatorMessage: string | null;
isValidating: boolean;
/**
* Define o estado intermediário do checkbox.
* Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.
* Útil para representar grupos onde alguns itens estão selecionados, mas não todos.
* Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.
*/
indeterminate: boolean;
/**
* Define o estado de seleção do checkbox.
* Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.
*/
checked: boolean;
/**
* Identificador único.
* Caso não seja fornecido, um ID gerado automaticamente será usado.
*/
readonly customId: string;
/**
* Desativa o checkbox, tornando-o não interativo.
*/
readonly disabled: boolean;
/**
* Se verdadeiro, o checkbox é obrigatório e deve ser marcado antes que o formulário possa ser enviado.
*/
readonly required: boolean;
/**
* Regra síncrona ou assíncrona aplicada ao estado booleano do checkbox.
* Retorne uma mensagem para invalidar ou `null` para aceitar o valor.
*
* @example
* ```js
* const checkbox = document.querySelector('br-checkbox');
* checkbox.validator = (checked) => checked ? null : 'Confirme para continuar';
* ```
*/
readonly validator?: CheckboxValidator;
/**
* Define se o label associado ao checkbox deve ser oculto.
* Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.
* @deprecated Use `labelHidden`.
*/
readonly hasHiddenLabel: boolean;
/** Oculta visualmente o rótulo. Quando informada, tem precedência sobre `hasHiddenLabel`. */
readonly labelHidden?: boolean;
/**
* Texto descritivo exibido à direita do checkbox.
* Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.
*/
label: string;
/**
* Define o nome do checkbox, que é utilizado para agrupar checkboxes em formulários e identificar o campo.
* O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.
*/
readonly name: string;
/**
* Indica a validade do checkbox.
* Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.
*/
readonly state: 'valid' | 'invalid';
/** Estado de feedback. Quando informado, tem precedência sobre `state`. */
readonly feedbackState?: 'valid' | 'invalid';
/**
* Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`