import { type EventEmitter } from '../../stencil-public-runtime';
import { type FormValidationState } from '../../shared/utils/form';
import { type FormValidationChangeDetail } from '../../shared/utils/validator';
import type { RadioGroupOrientation, RadioGroupValidator } from './radio-group.types';
/**
* O `br-radio-group` agrupa opções de múltipla escolha onde apenas uma pode ser selecionada.
*
* Adicione os elementos `br-radio` no slot padrão. Defina o rótulo do grupo em `label` e o valor selecionado em `value`.
*
* ```html
*
*
*
*
*
* ```
*
* Em formulários HTML, o grupo integra-se via `ElementInternals`, controlando validação nativa com `required`.
*
* ### Quando usar
*
* - Entre 2 e 5 opções mutuamente exclusivas que devem permanecer visíveis.
*
* ### Quando evitar
*
* - Mais de 6 opções: use `br-select` para economizar espaço de tela.
* - Seleção de múltiplas opções ao mesmo tempo: use `br-checkbox-group`.
* - Liga/desliga imediato: use `br-switch`.
*
* Consulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/radio-group?tab=designer).
*
* @category Formulários, Seleção
* @see br-radio
* @slot default - Radios pertencentes ao grupo.
* @slot label - Legenda do grupo, como alternativa à propriedade `label`.
* @slot description - Texto auxiliar do grupo.
* @slot feedback - Mensagem de validação do grupo.
* @slot validation-loading - Indicador exibido durante validação assíncrona.
* @part group - Fieldset semântico do grupo.
* @part legend - Legenda e nome acessível do grupo.
* @part options - Contêiner das opções.
* @part description - Área de texto auxiliar.
* @part feedback - Área de mensagem de validação.
* @part validation-loading - Área do indicador de validação assíncrona.
*/
export declare class RadioGroup {
elementInternals: ElementInternals;
el: HTMLElement;
formDisabled: boolean;
customValidationMessage: string;
validatorMessage: string | null;
isValidating: boolean;
hasFeedbackSlot: boolean;
hasInteracted: boolean;
hasDescriptionSlot: boolean;
hasLabelSlot: boolean;
hasValidationLoadingSlot: boolean;
/** Nome do campo enviado pelo formulário. */
readonly name: string;
/** Valor atualmente selecionado; `null` representa nenhuma seleção. */
value: string | null;
/** Valor restaurado por `form.reset()` e usado como seleção inicial. */
readonly defaultValue?: string;
/** Exige uma opção habilitada selecionada. */
readonly required: boolean;
/** Desabilita o grupo e seus radios. */
readonly disabled: boolean;
/** Orientação visual das opções. Valores inválidos usam `vertical`. */
readonly orientation: RadioGroupOrientation;
/** Texto visível usado como legenda do grupo. */
readonly label?: string;
/** Nome acessível usado quando não há uma legenda visível. */
readonly ariaLabel: string | null;
/** Estado visual opcional do feedback. Valores inválidos não aplicam estado. A validade real vem de ElementInternals. */
readonly feedbackState?: 'valid' | 'invalid';
/**
* Regra síncrona ou assíncrona aplicada ao valor do grupo.
* Recebe a string selecionada ou `null` quando nenhuma opção está marcada.
*
* @example
* ```js
* const group = document.querySelector('br-radio-group');
* group.validator = (value) => value ? null : 'Escolha uma alternativa';
* ```
*/
readonly validator?: RadioGroupValidator;
/** Identificador usado nas relações acessíveis internas. */
readonly customId: string;
/** Emitido ao iniciar e concluir uma validação customizada. */
brRadioGroupValidationChange: EventEmitter;
private initialValue;
private validationRunId;
private syncingChildren;
private checkingValidity;
private ready;
private originalNames;
private readonly reconciler;
formDisabledCallback(disabled: boolean): void;
formResetCallback(): void;
formStateRestoreCallback(state: string | File | FormData | null): void;
componentWillLoad(): void;
componentDidLoad(): void;
connectedCallback(): void;
disconnectedCallback(): void;
handleValueChange(): void;
handleNameChange(): void;
handleDisabledChange(disabled: boolean): void;
handleValidatorChange(): void;
handleDefaultValueChange(value?: string): void;
handleRequiredChange(): void;
handleCustomValidityChange(): void;
handleChildInput(event: globalThis.Event): void;
handleChildChange(event: globalThis.Event): void;
handleFocusOut(event: FocusEvent): void;
handleInvalid(): void;
handleChildChecked(event: globalThis.Event): void;
handleChildStateChange(event: CustomEvent<{
property?: string;
}>): void;
handleKeyDown(event: KeyboardEvent): void;
/** Verifica a validade do grupo. */
checkValidity(): Promise;
/** Verifica a validade e apresenta a mensagem do grupo. */
reportValidity(): Promise;
/** Define a mensagem de validade customizada do grupo. */
setCustomValidity(message: string): Promise;
/** Executa o validator do grupo. */
validate(): Promise;
/** Retorna o snapshot de validade do grupo. */
getValidationState(): Promise;
/** Move o foco para o radio marcado ou para o primeiro radio habilitado. */
setFocus(): Promise;
private readonly handleSlotChange;
private getChildren;
private getRadioValue;
private isDisabled;
private isWithinGroup;
private markAsInteracted;
private clearInteraction;
private handleChildFormEvent;
private syncManagedState;
private manageRadio;
private releaseRadio;
private syncNamedSlots;
private applyValueToChildren;
private reconcileChildren;
private getValidityMessage;
private getNativeValidityMessage;
private cancelValidation;
private getCssClassMap;
private get effectiveOrientation();
private get effectiveState();
private syncFormState;
private renderDefaultFeedback;
render(): any;
}