/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IRadioComponent } from '../radio';
/**
 * A class for coordinating the states of radio components within a radio group.
 */
export declare class RadioGroupManager {
    private static _radiosRequestingReset;
    /**
     * Returns an array of IRadioComponents that belong to the same radio group as the given
     * IRadioComponent.
     * If the given IRadioComponent does not have an associated form element, it searches the root
     * node for all IRadioComponents with the same name.
     * If the given IRadioComponent has an associated form element, it gets all RadioComponents with
     * the same name from the form element.
     *
     * @param el - The IRadioComponent to get the radio group for.
     * @param rootNode - The node to search for radios.
     * @param form - The form element to get radios from.
     * @returns An array of IRadioComponents that belong to the same radio group as the given
     * IRadioComponent.
     */
    static getRadioGroup(el: IRadioComponent, { rootNode, form }?: {
        rootNode?: ShadowRoot | Document;
        form?: HTMLFormElement;
    }): IRadioComponent[];
    /**
     * Sets the validity of a radio group.
     * If no radio is selected in the group and selection is required, it sets the validity to
     * `valueMissing`.
     *
     * @param el A radio component within the group to set the validity for.
     */
    static setRadioGroupValidity(el: IRadioComponent): void;
    /**
     * Sets the selected radio in a radio group.
     *
     * @param el - The radio component to set as selected.
     */
    static setSelectedRadioInGroup(el: IRadioComponent): void;
    /**
     * Sets the tabindices of radios in a radio group based on the currently checked radio.
     * @param el - A radio component within the group to update the tab indices for.
     * @param ignoreSelf - Whether to ignore the passed radio component when updating the tab indices.
     * @param rootNode - The node to search for radios.
     * @param form - The form element to get radios from.
     */
    static syncRadioFocusableState(el: IRadioComponent, { ignoreSelf, rootNode, form }?: {
        ignoreSelf: boolean;
        rootNode?: ShadowRoot | Document;
        form?: HTMLFormElement;
    }): void;
    /**
     * Focuses the next radio in the radio group.
     *
     * @param el - The currently focused radio component.
     */
    static focusNextRadioInGroup(el: IRadioComponent): void;
    /**
     * Focuses the previous radio in the radio group.
     *
     * @param el - The currently focused radio component.
     */
    static focusPreviousRadioInGroup(el: IRadioComponent): void;
    /**
     * Adds or removes each radio in a radio group from the tab order. When no radio is selected and
     * focus is not in the group, all radios are added to the tab order. Otherwise only the selected
     * radio is added to the tab order.
     *
     * @param el - The focused or blurred radio component.
     * @param event - The event type (`'focus'` or `'blur'`).
     */
    static setUncheckedRadioGroupFocus(el: IRadioComponent, event: 'focus' | 'blur'): void;
    /**
     * Resets a radio group to . This will run once each radio has a chance to
     * update.
     *
     * @param el - The radio component requesting the reset.
     * @returns A promise that resolves when the reset logic is complete.
     */
    static requestRadioGroupReset(el: IRadioComponent): Promise<void>;
    /**
     * Updates the focus and selection of a radio group based on the currently focused radio and the
     * direction of the focus change.
     *
     * @param el - The currently focused radio element.
     * @param increment - The direction of the focus change. 1 for forward, -1 for backward.
     */
    private static _updateRadioGroupFocus;
    /**
     * Determines if a radio selection is required within a group.
     *
     * @param group - The radio components within a group.
     * @returns True if the radio selection is required, false otherwise.
     */
    private static _selectionIsRequired;
}
