import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { FormControl } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { SortState } from '@valtimo/document';
import { IconService, OverflowMenu, PaginationModel, PaginationTranslations, TableHeaderItem, TableModel } from 'carbon-components-angular';
import { NGXLogger } from 'ngx-logger';
import { BehaviorSubject, Observable } from 'rxjs';
import { ActionItem, CarbonListBatchText, CarbonListItem, CarbonListTranslations, CarbonPaginatorConfig, CarbonTag, ColumnConfig, MoveRowEvent, Pagination, ViewType } from '../../models';
import { EllipsisPipe } from '../../pipes';
import { KeyStateService } from '../../services/key-state.service';
import { ViewContentService } from '../view-content/view-content.service';
import { CarbonListFilterPipe } from './CarbonListFilterPipe.directive';
import { CarbonListDragAndDropService } from './services';
import * as i0 from "@angular/core";
export declare class CarbonListComponent implements OnInit, AfterViewInit, OnDestroy {
    private readonly ellipsisPipe;
    private readonly filterPipe;
    private readonly iconService;
    private readonly logger;
    private readonly translateService;
    private readonly viewContentService;
    private readonly keyStateService;
    private readonly dragAndDropService;
    private readonly elementRef;
    actionsMenuTemplate: TemplateRef<OverflowMenu>;
    actionTemplate: TemplateRef<any>;
    booleanTemplate: TemplateRef<any>;
    moveRowsTemplate: TemplateRef<any>;
    dragAndDropTemplate: TemplateRef<any>;
    rowDisabled: TemplateRef<any>;
    tagTemplate: TemplateRef<any>;
    defaultTemplate: TemplateRef<any>;
    private _table;
    private _completeDataSource;
    private readonly _items$;
    private get _items();
    get items(): CarbonListItem[];
    set items(value: CarbonListItem[]);
    currentOpenActionId: string | null;
    private readonly _fields$;
    set fields(value: ColumnConfig[]);
    private _tableTranslations$;
    set tableTranslations(value: Partial<CarbonListTranslations>);
    paginatorConfig: CarbonPaginatorConfig;
    private _pagination;
    private _isPaginationInit;
    set pagination(value: Partial<Pagination> | false);
    get pagination(): Pagination;
    loading: boolean;
    /**
     * @deprecated The actions field is deprecated. Actions can be added through the **@Input field**.
     */
    actions: any[];
    actionItems: ActionItem[];
    header: boolean;
    hideColumnHeader: boolean;
    initialSortState: SortState;
    set sortState(value: SortState);
    isSearchable: boolean;
    enableSingleSelection: boolean;
    /**
     * @deprecated The lastColumnTemplate field is deprecated. Any template column can be added through the **@Input field**.
     */
    lastColumnTemplate: TemplateRef<any>;
    paginationIdentifier: string;
    showSelectionColumn: boolean;
    striped: boolean;
    hideToolbar: boolean;
    lockedTooltipTranslationKey: string;
    movingRowsEnabled: boolean;
    dragAndDrop: boolean;
    dragAndDropDisabled: boolean;
    rowClicked: EventEmitter<any>;
    paginationClicked: EventEmitter<number>;
    paginationSet: EventEmitter<any>;
    search: EventEmitter<any>;
    sortChanged: EventEmitter<SortState>;
    moveRow: EventEmitter<MoveRowEvent>;
    itemsReordered: EventEmitter<CarbonListItem[]>;
    batchText$: Observable<CarbonListBatchText>;
    paginationTranslations$: Observable<Partial<PaginationTranslations>>;
    readonly sort$: BehaviorSubject<SortState>;
    readonly tagModalOpen$: BehaviorSubject<boolean>;
    readonly tagModalData$: BehaviorSubject<CarbonTag[]>;
    readonly CASES_WITHOUT_STATUS_KEY = "CASES_WITHOUT_STATUS_KEY";
    readonly ViewType: typeof ViewType;
    skeletonModel: TableModel;
    paginationModel: PaginationModel;
    searchFormControl: FormControl<string>;
    private static readonly PAGINATION_SIZE;
    private readonly _subscriptions;
    get selectedItems(): CarbonListItem[];
    private readonly _viewInitialized$;
    get viewInitialized$(): Observable<boolean>;
    get model(): TableModel;
    constructor(ellipsisPipe: EllipsisPipe, filterPipe: CarbonListFilterPipe, iconService: IconService, logger: NGXLogger, translateService: TranslateService, viewContentService: ViewContentService, keyStateService: KeyStateService, dragAndDropService: CarbonListDragAndDropService, elementRef: ElementRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    openDragAndDropSubscription(): void;
    onRowClick(index: number): void;
    onSelectPage(page: number): void;
    onSort(headerItem: TableHeaderItem & {
        key: string;
    }): void;
    onDragStart(mouseEvent: MouseEvent, carbonEvent: {
        index: number;
        item: CarbonListItem;
        length: number;
    }): void;
    private buildPaginationModel;
    private _translatedFields$;
    private _headerItems$;
    private readonly _tableItems$;
    private readonly _filteredItems$;
    readonly model$: Observable<TableModel>;
    private get dragAndDropHeaderColumns();
    private get extraColumns();
    onMoveDownClick(event: Event, data: {
        index: number;
        item: CarbonListItem;
        length: number;
    }): void;
    onMoveUpClick(event: Event, data: {
        index: number;
        item: CarbonListItem;
        length: number;
    }): void;
    onTagClick(event: Event, tags: CarbonTag[]): void;
    onCloseEvent(): void;
    handleActionOpenChange(actionId: string, isOpen: boolean): void;
    private getDragAndDropItemsItems;
    private getExtraItems;
    private loadPaginationSize;
    private setPaginationSize;
    private resolveObject;
    private swapItems;
    private resolveTagObject;
    static ɵfac: i0.ɵɵFactoryDeclaration<CarbonListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CarbonListComponent, "valtimo-carbon-list", never, { "items": { "alias": "items"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "tableTranslations": { "alias": "tableTranslations"; "required": false; }; "paginatorConfig": { "alias": "paginatorConfig"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "actionItems": { "alias": "actionItems"; "required": false; }; "header": { "alias": "header"; "required": false; }; "hideColumnHeader": { "alias": "hideColumnHeader"; "required": false; }; "initialSortState": { "alias": "initialSortState"; "required": false; }; "sortState": { "alias": "sortState"; "required": false; }; "isSearchable": { "alias": "isSearchable"; "required": false; }; "enableSingleSelection": { "alias": "enableSingleSelection"; "required": false; }; "lastColumnTemplate": { "alias": "lastColumnTemplate"; "required": false; }; "paginationIdentifier": { "alias": "paginationIdentifier"; "required": false; }; "showSelectionColumn": { "alias": "showSelectionColumn"; "required": false; }; "striped": { "alias": "striped"; "required": false; }; "hideToolbar": { "alias": "hideToolbar"; "required": false; }; "lockedTooltipTranslationKey": { "alias": "lockedTooltipTranslationKey"; "required": false; }; "movingRowsEnabled": { "alias": "movingRowsEnabled"; "required": false; }; "dragAndDrop": { "alias": "dragAndDrop"; "required": false; }; "dragAndDropDisabled": { "alias": "dragAndDropDisabled"; "required": false; }; }, { "rowClicked": "rowClicked"; "paginationClicked": "paginationClicked"; "paginationSet": "paginationSet"; "search": "search"; "sortChanged": "sortChanged"; "moveRow": "moveRow"; "itemsReordered": "itemsReordered"; }, never, ["[header]", "[tabs]", "[carbonToolbarActions]", "[carbonToolbarContent]", "*"], false, never>;
}
//# sourceMappingURL=carbon-list.component.d.ts.map