import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
import { FudisIdService } from '../../../../services/id/id.service';
import { CheckboxGroupComponent } from '../checkbox-group.component';
import { FudisCheckboxChangeEvent } from '../../../../types/forms';
import { FormControl } from '@angular/forms';
import * as i0 from "@angular/core";
export declare class CheckboxGroupOptionComponent implements OnInit, OnDestroy {
    private _idService;
    protected _checkboxGroup: CheckboxGroupComponent<object>;
    constructor(_idService: FudisIdService, _checkboxGroup: CheckboxGroupComponent<object>);
    /**
     * HTML input element of checkbox
     */
    private _inputRef;
    /**
     * Control name for this checkbox from FormGroup. Required if FormGroup is given to the parent.
     * Used to link each Checkbox with their Checkbox Group parent's FormGroup.
     */
    controlName: string;
    /**
     * Provide FormControl for each checkbox, when you do not provide FormGroup for the parent
     * Checkbox Group.
     */
    control: FormControl<boolean | null>;
    /**
     * Visible label of checkbox
     */
    label: string;
    /**
     * Id for single checkbox. By default generated.
     */
    id: string;
    /**
     * Emits changed Checkbox and its control.
     */
    handleChange: EventEmitter<FudisCheckboxChangeEvent>;
    /**
     * If checkbox has focus
     */
    protected _focused: boolean;
    /**
     * Boolean for syncing, if this Checkbox had 'control' property provided and parent had no
     * 'formGroup' provided.
     */
    private _controlAddedToParent;
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * For toggling checkbox
     */
    protected _onChange(): void;
    /**
     * When focusing out from checkbox, determine if next focus target is outside of the same checkbox
     * group. If yes, then tell parent Checkbox Group, that focus has moved outside. --> If there are
     * validation errors, those should become visible.
     */
    protected _onBlur(event: FocusEvent): void;
    /**
     * When Checkbox is focused
     */
    protected _onFocus(event: FocusEvent): void;
    /**
     * If control is disabled, prevent toggling it.
     */
    _checkboxClick(event: Event): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxGroupOptionComponent, [null, { host: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxGroupOptionComponent, "fudis-checkbox-group-option", never, { "controlName": { "alias": "controlName"; "required": false; }; "control": { "alias": "control"; "required": false; }; "label": { "alias": "label"; "required": true; }; "id": { "alias": "id"; "required": false; }; }, { "handleChange": "handleChange"; }, never, never, false, never>;
}
