import { ElementRef, EventEmitter, Injector, OnDestroy, OnInit, Renderer2, TemplateRef } from '@angular/core';
import { InputSize } from '@ironsource/fusion-ui/components/input/common/base';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { DynamicComponentConfiguration } from '@ironsource/fusion-ui/components/dynamic-components/common/entities';
import { DropdownOption } from '@ironsource/fusion-ui/components/dropdown-option/entities';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { ApiBase } from '@ironsource/fusion-ui/components/api-base';
import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id';
import { BackendPagination, SelectedItemName } from '@ironsource/fusion-ui/components/dropdown';
import { IncludeExcludeTestIdModifiers } from '@ironsource/fusion-ui/entities';
import { TestIdsService } from '@ironsource/fusion-ui/services/test-ids';
import * as i0 from "@angular/core";
export declare abstract class DropdownDualMultiSelectBaseComponent extends ApiBase implements OnInit, ControlValueAccessor, OnDestroy {
    protected element: ElementRef;
    protected renderer: Renderer2;
    protected uidService: UniqueIdService;
    private injector;
    isDisabled: boolean;
    /** @internal */
    dynamicPlaceholder: DynamicComponentConfiguration;
    /** @internal */
    totalItems: number;
    /** @internal */
    suppressClickButton: boolean;
    /** @internal */
    autoComplete: boolean;
    title: string;
    /** @internal */
    testId: string;
    /** @internal */
    pendingItems: boolean;
    /** @internal */
    set hasSelectAll(value: boolean);
    get hasSelectAll(): boolean;
    /** @internal */
    testIdIncludeExcludeModifiers: typeof IncludeExcludeTestIdModifiers;
    /** @internal */
    testIdsService: TestIdsService;
    set placeholder(data: string);
    /** @internal */
    set searchByProperties(value: string[]);
    get searchByProperties(): string[];
    /** @internal */
    set opened(data: boolean);
    set items(data: DropdownOption[]);
    get items(): DropdownOption[];
    /**
     * item name for selected placeholder
     * like "2 Applications selected" (singular)
     * or "1 Application selected" (plural)
     * @param value
     */
    selectedItemName: SelectedItemName;
    /** @internal */
    set backendPagination(value: BackendPagination);
    get hasBackendPagination(): boolean;
    get testAttribute(): string;
    scrollDown: EventEmitter<any>;
    searchChange: EventEmitter<any>;
    viewChange: EventEmitter<any>;
    /** @internal */
    chipContent: TemplateRef<any>;
    /** @internal */
    trigger: ElementRef;
    /** @internal */
    preSelectedItems: FormControl<any>;
    /** @internal */
    searchControlTerm: FormControl<string>;
    /** @internal */
    items$: BehaviorSubject<DropdownOption[]>;
    /** @internal */
    opened$: BehaviorSubject<boolean>;
    /** @internal */
    placeholder$: BehaviorSubject<string>;
    /** @internal */
    confirm: boolean;
    /** @internal */
    defaultPlaceHolder: string;
    /** @internal */
    isPositionLeft: boolean;
    /** @internal */
    inputSize: typeof InputSize;
    /** @internal */
    dropdownDualMultiSelectionButtonOptions: {
        rounded: boolean;
        size: InputSize;
    };
    /** @internal */
    selected$: BehaviorSubject<any>;
    /** @internal */
    chipDefaultContent: string;
    /** @internal */
    uid: string;
    /** @internal */
    backendPaginationChanged$: Subject<any>;
    private selectedChange;
    private parentWithOverflow;
    private onDestroy$;
    private _searchByProperties;
    private backendPaginationState;
    private backendPaginationTotalResult;
    private backendPaginationPageNumber;
    private _hasSelectAll;
    /** @internal */
    loadingLeft$: BehaviorSubject<boolean>;
    constructor(element: ElementRef, renderer: Renderer2, uidService: UniqueIdService, injector: Injector);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    onScrollDown(): void;
    /** @internal */
    changeConfig(val: string): void;
    /** @internal */
    valueSelected(): Observable<{
        value: string;
        isSelected: boolean;
        selectedCount?: number;
        partialSelect?: {
            firstSelected?: DropdownOption;
            totalAmount?: number;
        };
    }>;
    /** @internal */
    open(): void;
    /** @internal */
    applySelect(apply?: boolean): void;
    /** @internal */
    closeDropdownDualSelect(): void;
    /** @internal */
    onClickDualMultiSelectButton(): void;
    /** @internal */
    propagateChange: (_: DropdownOption[]) => void;
    /** @internal */
    propagateTouched: () => void;
    /** @internal */
    writeValue(value: DropdownOption[]): void;
    /** @internal */
    registerOnChange(fn: any): void;
    /** @internal */
    registerOnTouched(fn: any): void;
    /** @internal */
    setDisabledState?(isDisabled: boolean): void;
    /** @internal */
    onOutsideClick($event: any): void;
    protected calcDualMultiSelectHolderPosition(): boolean;
    private getParentWithOverflow;
    private changeTerm;
    private initializeListeners;
    private checkSelectItemsChanged;
    private setLabel;
    private onBackendPaginationChanged;
    private sortOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownDualMultiSelectBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownDualMultiSelectBaseComponent, never, never, { "isDisabled": { "alias": "isDisabled"; "required": false; }; "dynamicPlaceholder": { "alias": "dynamicPlaceholder"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "suppressClickButton": { "alias": "suppressClickButton"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "title": { "alias": "title"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "pendingItems": { "alias": "pendingItems"; "required": false; }; "hasSelectAll": { "alias": "hasSelectAll"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "searchByProperties": { "alias": "searchByProperties"; "required": false; }; "opened": { "alias": "opened"; "required": false; }; "items": { "alias": "items"; "required": false; }; "selectedItemName": { "alias": "selectedItemName"; "required": false; }; "backendPagination": { "alias": "backendPagination"; "required": false; }; }, { "scrollDown": "scrollDown"; "searchChange": "searchChange"; "viewChange": "viewChange"; }, never, never, false, never>;
}
