import { FocusMonitor } from '@angular/cdk/a11y';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
import { MatSort, Sort } from '@angular/material/sort';
import { ILfSelectable, ItemWithId } from '@laserfiche/lf-ui-components/shared';
import { GridSelectionListDataSource } from './lf-selection-list-data-source';
import { ColumnDef, ColumnOrderBy, SelectedItemEvent } from './lf-selection-list-types';
import * as i0 from "@angular/core";
/** @internal */
export interface RepositoryBrowserData {
    columns: Record<string, string>;
}
/** @internal */
export declare class LfSelectionListComponent implements AfterViewInit, OnDestroy {
    /** @internal */
    private focusMonitor;
    private ref;
    scrollChanged: EventEmitter<undefined>;
    itemDoubleClicked: EventEmitter<ItemWithId>;
    itemSelected: EventEmitter<SelectedItemEvent>;
    itemFocused: EventEmitter<ItemWithId>;
    refreshData: EventEmitter<void>;
    itemSize: number;
    private _pageSize;
    set pageSize(value: number);
    get pageSize(): number;
    listItemRef?: TemplateRef<unknown>;
    alwaysShowHeader?: boolean;
    set listItems(items: ILfSelectable[]);
    private setNewWidths;
    set uniqueIdentifier(key: string);
    set multipleSelection(value: boolean);
    get multipleSelection(): boolean;
    get columnOrderBy(): ColumnOrderBy | undefined;
    set columnOrderBy(orderBy: ColumnOrderBy | undefined);
    set columns(cols: ColumnDef[]);
    get columns(): ColumnDef[];
    private setDefaultWidths;
    /** @internal */
    viewport?: CdkVirtualScrollViewport;
    /** @internal */
    matTable?: ElementRef;
    /** @internal */
    sort?: MatSort;
    /** @internal */
    private additionalColumnDefs;
    /** @internal */
    private _uniqueIdentifier?;
    /** @internal */
    private allSubscriptions?;
    /** @internal */
    private _columnOrderBy;
    /** @internal */
    private selectable;
    /** @internal */
    private _multipleSelectEnabled;
    /** @internal */
    allColumnHeaders?: string[];
    /** @internal */
    dataSource?: GridSelectionListDataSource;
    /** @internal */
    items: ILfSelectable[];
    /** @internal */
    allColumnDefs: ColumnDef[];
    /** @internal */
    columnsWidth: string | undefined;
    /** @internal */
    resizePosition: number;
    /** @internal */
    _showHeader: boolean;
    /** @internal */
    currentFocusIndex: number;
    /** @internal */
    constructor(
    /** @internal */
    focusMonitor: FocusMonitor, ref: ChangeDetectorRef);
    /** @internal */
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    clearSelectedValues(clearCached?: boolean): void;
    placeholderWhen(index: number, _: any): index is 0;
    focus(): void;
    sortData(sort: Sort): void;
    focusCurrentIndex(): void;
    /** @internal */
    onClickMatListOption(event: MouseEvent, option: ILfSelectable, index: number): Promise<void>;
    /** @internal */
    onDblClick(event: MouseEvent | KeyboardEvent, item: ILfSelectable): void;
    /** @internal */
    onItemKeyDown(event: KeyboardEvent, item: ILfSelectable): Promise<void>;
    /** @internal */
    onItemKeyUp(event: KeyboardEvent, item: ILfSelectable): void;
    /** @internal */
    onFocused(index: number): void;
    /** @internal */
    onViewportKeyDown(event: KeyboardEvent): void;
    setInitialWidth(): void;
    private getRepositoryBrowserData;
    resetCachedNodesAsync(): Promise<ILfSelectable[]>;
    setSelectedNodesAsync(nodesToSelect: ILfSelectable[] | undefined, checkForMoreDataCallback: () => Promise<ILfSelectable[] | undefined>, maxFetchIterations: number): Promise<ILfSelectable[]>;
    /** @internal */
    _computeRowId(index: number): string;
    /** @internal */
    _checkFocused(rowIndex: number): boolean;
    /** @internal */
    private _checkRowInView;
    /** @internal */
    private _focus;
    placeholderHeight: number;
    onColumnWidthChanges(width: number, index: number): void;
    private updateRepositoryBrowserData;
    setColumnWidthChanges(width: number, index: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LfSelectionListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LfSelectionListComponent, "lf-selection-list-component", never, { "itemSize": { "alias": "itemSize"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "listItemRef": { "alias": "listItemRef"; "required": false; }; "alwaysShowHeader": { "alias": "alwaysShowHeader"; "required": false; }; "listItems": { "alias": "listItems"; "required": false; }; "uniqueIdentifier": { "alias": "uniqueIdentifier"; "required": false; }; "multipleSelection": { "alias": "multipleSelection"; "required": false; }; "columnOrderBy": { "alias": "columnOrderBy"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; }, { "scrollChanged": "scrollChanged"; "itemDoubleClicked": "itemDoubleClicked"; "itemSelected": "itemSelected"; "itemFocused": "itemFocused"; "refreshData": "refreshData"; }, never, never, false, never>;
}
