import { ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { DropdownOption } from '@ironsource/fusion-ui/components/dropdown-option/entities';
import { BehaviorSubject, Observable } from 'rxjs';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { IncludeExcludeTestIdModifiers } from '@ironsource/fusion-ui/entities';
import { TestIdsService } from '@ironsource/fusion-ui/services/test-ids';
import * as i0 from "@angular/core";
export declare class DropdownDualMultiSelectBodyComponent implements OnInit, OnDestroy, ControlValueAccessor {
    private injector;
    wrapperLeftRef: ElementRef;
    containerLeftRef: ElementRef;
    wrapperRightRef: ElementRef;
    containerRightRef: ElementRef;
    totalItems: number;
    isPendingItems: boolean;
    hasSelectAll: boolean;
    /** @internal */
    testId: string;
    set items(data: DropdownOption[]);
    set searchTerm(data: string);
    set autoComplete(value: boolean);
    set loadingLeft(value: boolean);
    hasBackendPagination: boolean;
    searchByProperties: string[];
    scrollDown: EventEmitter<any>;
    /** @internal */
    testIdIncludeExcludeModifiers: typeof IncludeExcludeTestIdModifiers;
    /** @internal */
    testIdsService: TestIdsService;
    isSelectAllDisabled$: BehaviorSubject<boolean>;
    selectedItemsNumber: number;
    selectedControl: FormControl<any[]>;
    displayOptions$: Observable<DropdownOption[]>;
    selectedOptions$: Observable<DropdownOption[]>;
    options$: BehaviorSubject<DropdownOption[]>;
    selectedItemsWorker$: BehaviorSubject<DropdownOption[]>;
    loadingLeft$: BehaviorSubject<boolean>;
    selectedItemsMapping: {};
    isAllSelected: boolean;
    isIndeterminate: boolean;
    isNoFoundDataToDisplay: boolean;
    private displayItemsAmount;
    private selectedItemsAmount;
    private leftPagePagination$;
    private rightPagePagination$;
    private onDestroy$;
    private searchTerm$;
    private autoComplete$;
    private propagateChange;
    private propagateTouched;
    constructor(injector: Injector);
    ngOnInit(): void;
    ngOnDestroy(): void;
    selectAll(checked?: boolean): void;
    changeSelected(item: DropdownOption): void;
    clearSelect(item: DropdownOption): void;
    clearAll(): void;
    showClearAllButton(): boolean;
    trackById(index: any, item: any): any;
    writeValue(value: DropdownOption[]): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    private generateOptions;
    private isItemsSelected;
    private isDisplayOptionAllDisabled;
    private isDisplayOptionsEmpty;
    private getSelectedIndex;
    private initializeListeners;
    private onScrollChange;
    private onSelectedControlValueChange;
    private onLeftScrollReachBottom;
    private onRightScrollReachBottom;
    private getOptionsDisplayObservable;
    private filterOptions;
    private getPaginationObservable;
    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownDualMultiSelectBodyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DropdownDualMultiSelectBodyComponent, "fusion-dropdown-dual-multi-select-body", never, { "totalItems": { "alias": "totalItems"; "required": false; }; "isPendingItems": { "alias": "isPendingItems"; "required": false; }; "hasSelectAll": { "alias": "hasSelectAll"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "items": { "alias": "items"; "required": false; }; "searchTerm": { "alias": "searchTerm"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "loadingLeft": { "alias": "loadingLeft"; "required": false; }; "hasBackendPagination": { "alias": "hasBackendPagination"; "required": false; }; "searchByProperties": { "alias": "searchByProperties"; "required": false; }; }, { "scrollDown": "scrollDown"; }, never, never, false, never>;
}
