import * as i0 from '@angular/core';
import { Provider, AfterContentInit, OnChanges, OnInit, OnDestroy, Injector, ElementRef, EventEmitter } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';

declare const RADIO_VALUE_ACCESSOR: Provider;
declare class RadioControlRegistry {
    private accessors;
    add(control: NgControl, accessor: RadioComponent): void;
    remove(accessor: RadioComponent): void;
    select(accessor: RadioComponent): void;
    getIndex(accessor: RadioComponent): number;
    getNextRadio(accessor: RadioComponent): RadioComponent | null;
    getPreviousRadio(accessor: RadioComponent): RadioComponent | null;
    blurAllGroup(accessor: RadioComponent): void;
    setNegativeTabIndexToAllExcept(accessor: RadioComponent): void;
    focusPrevious(accessor: RadioComponent): void;
    focusNext(accessor: RadioComponent): void;
    getFirstCheckedRadio(): RadioComponent | null;
    private isSameGroup;
    static ɵfac: i0.ɵɵFactoryDeclaration<RadioControlRegistry, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RadioControlRegistry>;
}
declare class RadioComponent implements ControlValueAccessor, AfterContentInit, OnChanges, OnInit, OnDestroy {
    private elementRef;
    readonly injector: Injector;
    private readonly changeDetectorRef;
    private readonly radioControlRegistry;
    private readonly ngZone;
    inputElement: ElementRef<HTMLInputElement>;
    labelElement: ElementRef<HTMLInputElement>;
    ariaLabel: string;
    ariaLabelledby: string | null;
    ariaDescribedby: string;
    set disabled(disabled: boolean);
    get disabled(): boolean;
    labelPosition: 'left' | 'right';
    radioId: string;
    formControlName: string;
    value: unknown;
    required: boolean;
    name: string;
    onClick: EventEmitter<{
        originalEvent: Event;
        value: unknown;
    }>;
    onFocus: EventEmitter<FocusEvent>;
    onBlur: EventEmitter<FocusEvent>;
    inputId: string;
    _disabled: boolean;
    hasLabel: boolean;
    hostDataTest: string | undefined;
    control: NgControl;
    checked: boolean;
    focused: boolean;
    radioIndex: number;
    private readonly destroy$;
    onModelChange: (value: unknown) => void;
    onModelTouched: () => void;
    constructor(elementRef: ElementRef);
    ngOnChanges(): void;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    handleClick(event: MouseEvent, radioButton: HTMLInputElement): void;
    select(event: Event): void;
    writeValue(value: unknown): void;
    registerOnChange(fn: () => void): void;
    registerOnTouched(fn: () => void): void;
    onInputFocus(event: FocusEvent): void;
    onInputBlur(event: FocusEvent): void;
    onChange(event: Event): void;
    private checkName;
    private throwNameError;
    static ɵfac: i0.ɵɵFactoryDeclaration<RadioComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent, "ap-radio", never, { "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "radioId": { "alias": "radioId"; "required": true; }; "formControlName": { "alias": "formControlName"; "required": false; }; "value": { "alias": "value"; "required": true; }; "required": { "alias": "required"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "onClick": "onClick"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, ["*"], true, never>;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_required: unknown;
}

export { RADIO_VALUE_ACCESSOR, RadioComponent, RadioControlRegistry };
