import { TableContainerHeightProps, TableContentSizeProps, TablePagination } from '@sixbell-telco/sdk/components/table';
import * as i0 from "@angular/core";
export type DualListData<T> = T & {
    selected: boolean;
};
export declare class DualListComponent<T> {
    size: import("@angular/core").InputSignal<TableContentSizeProps>;
    height: import("@angular/core").InputSignal<TableContainerHeightProps>;
    chevronLeftIcon: string;
    chevronRightIcon: string;
    searchIcon: string;
    key: import("@angular/core").InputSignal<string>;
    value: import("@angular/core").InputSignal<string>;
    label: import("@angular/core").InputSignal<string>;
    titleLeft: import("@angular/core").InputSignal<string>;
    titleRight: import("@angular/core").InputSignal<string>;
    getKey(item: DualListData<T>): string;
    getValue(item: DualListData<T>): string;
    getLabel(): string;
    items: import("@angular/core").InputSignal<unknown[]>;
    target: import("@angular/core").WritableSignal<DualListData<T>[]>;
    selectedItems: import("@angular/core").WritableSignal<DualListData<T>[]>;
    itemsToRemove: import("@angular/core").WritableSignal<DualListData<T>[]>;
    totalItems: import("@angular/core").InputSignal<number>;
    addedItems: import("@angular/core").InputSignalWithTransform<T[], T[]>;
    computedItems: import("@angular/core").Signal<(T & {
        selected: boolean;
    })[]>;
    allToAdd: import("@angular/core").Signal<boolean>;
    allToRemove: import("@angular/core").Signal<boolean>;
    itemsAdded: import("@angular/core").OutputEmitterRef<DualListData<T>[]>;
    itemsAddedEffect: import("@angular/core").EffectRef;
    searchQuery: import("@angular/core").OutputEmitterRef<string>;
    handleSearch(search: string): void;
    searchTarget: import("@angular/core").WritableSignal<string>;
    searchTargetComputed: import("@angular/core").Signal<DualListData<T>[]>;
    handleTargetListSearch(search: string): void;
    pagination: import("@angular/core").InputSignal<TablePagination>;
    pageChanged: import("@angular/core").OutputEmitterRef<number>;
    pageSizeChanged: import("@angular/core").OutputEmitterRef<number>;
    handlePageChange(page: number): void;
    handlePageSizeChange(size: number): void;
    handleSelectSourceItem(checked: boolean, item: DualListData<T>): void;
    handleSelectTargetItem(checked: boolean, item: DualListData<T>): void;
    handleSelectAll(all: boolean): void;
    handleSelectAllToRemove(all: boolean): void;
    handleAddItems(): void;
    handleRemoveItems(): void;
    private updateTargetList;
    static ɵfac: i0.ɵɵFactoryDeclaration<DualListComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DualListComponent<any>, "st-dual-list", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "titleLeft": { "alias": "titleLeft"; "required": false; "isSignal": true; }; "titleRight": { "alias": "titleRight"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "addedItems": { "alias": "addedItems"; "required": true; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": true; "isSignal": true; }; }, { "itemsAdded": "itemsAdded"; "searchQuery": "searchQuery"; "pageChanged": "pageChanged"; "pageSizeChanged": "pageSizeChanged"; }, never, never, true, never>;
}
