import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id';
import { ControlValueAccessor } from '@angular/forms';
import { BehaviorSubject } from 'rxjs';
import { DomSanitizer } from '@angular/platform-browser';
import { ToggleLabel } from '@ironsource/fusion-ui/components/toggle/common/entities';
import * as i0 from "@angular/core";
export declare abstract class ToggleBaseComponent implements OnInit, OnDestroy, ControlValueAccessor {
    private uniqueIdService;
    private sanitizer;
    private elementRef;
    set label(label: ToggleLabel);
    get label(): ToggleLabel;
    value: string;
    name: string;
    set isDisabled(value: boolean);
    loading: boolean;
    model: boolean;
    size: 'medium' | 'small';
    customCheckedBackgroundColor: string;
    modelChange: EventEmitter<any>;
    get customBGColor(): any;
    id: string;
    isChecked$: BehaviorSubject<boolean>;
    isDisabled$: BehaviorSubject<boolean>;
    isDisabledInput$: BehaviorSubject<boolean>;
    isDisabledFormControl$: BehaviorSubject<boolean>;
    currentLabel: string;
    _label: ToggleLabel;
    /**
     * fix for issue https://github.com/ironSource/fusion-ui/issues/121
     * we will add animated classes after initial hrml will be rendered.
     * So, in this case will not animation on component render.
     */
    animated$: import("rxjs").Observable<boolean>;
    private onDestroy$;
    constructor(uniqueIdService: UniqueIdService, sanitizer: DomSanitizer, elementRef: ElementRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    onChange(event: any): void;
    setLabel(label: ToggleLabel): void;
    /**
     * Method to call when value has changes.
     */
    propagateChange: (_: string) => void;
    /**
     * Method to call when the component is touched (when it was is clicked).
     */
    propagateTouched: () => void;
    /**
     * update value from model to the component
     */
    writeValue(value: any): void;
    /**
     * Informs the outside world about changes.
     * see method propagateChange call - this.propagateChange(this.model);
     */
    registerOnChange(fn: any): void;
    /**
     * Component was Touched
     */
    registerOnTouched(fn: any): void;
    /**
     * on set form controll enabled / disabled
     * also do UI Component enabled / disabled
     */
    setDisabledState?(isDisabled: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ToggleBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ToggleBaseComponent, never, never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "model": { "alias": "model"; "required": false; }; "size": { "alias": "size"; "required": false; }; "customCheckedBackgroundColor": { "alias": "customCheckedBackgroundColor"; "required": false; }; }, { "modelChange": "modelChange"; }, never, never, false, never>;
}
