import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { Observable } from 'rxjs';
import { GridListSelectionActions, GridListSelectionEvent, GridListSelectionMode } from '../../models/grid-list-selection.models';
import { GridListItemComponent } from '../grid-list-item/grid-list-item.component';
import { GridList } from './grid-list-base.component';
import * as i0 from "@angular/core";
export declare class GridListComponent<T> extends GridList<T> implements OnChanges, AfterContentInit, OnDestroy {
    private readonly _cd;
    private _elRef;
    /** id for the Element */
    id: string;
    /** width of the element */
    width: string;
    /** Sets the `aria-label` attribute to the element. */
    ariaLabel: Nullable<string>;
    /**
     * Defines the mode of Grid List
     * Modes:
     * - none: Default mode (no selection)
     * - delete: Delete mode (only one list item can be deleted via provided delete button)
     * - singleSelect: Selected item is highlighted but no selection control is visible (only one list item can be selected)
     * - singleSelectLeft: Left-positioned single selection mode (only one list item can be selected)
     * - singleSelectRight: Right-positioned single selection mode (only one list item can be selected)
     * - multiSelect: Multi-selection mode (more than one list item can be selected)
     *  */
    selectionMode: GridListSelectionMode;
    /**
     * specify the column layout in the format `XLn-Ln-Mn-Sn` where n is the number of columns and can be different for each size.
     * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L, and M sizes and single-column layout for S size.
     */
    layoutPattern: string;
    /** Event is thrown, when mode is singleSelect, singleSelectLeft, singleSelectRight or multiSelect and item was selected */
    selectionChange: EventEmitter<GridListSelectionEvent<T>>;
    /** @hidden */
    set gridListItems(components: QueryList<GridListItemComponent<T>>);
    get gridListItems(): QueryList<GridListItemComponent<T>>;
    /** @hidden */
    readonly _selectedItems$: Observable<GridListSelectionEvent<T>>;
    /** @hidden */
    private _gridListItems;
    /** @hidden */
    private readonly _rangeSelector;
    /** @hidden */
    private readonly _selectedItems;
    /** @hidden */
    private readonly _selectedItemsSubject$;
    /** @hidden */
    private readonly subscription;
    /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)  */
    private readonly _destroyRef;
    /** @hidden */
    private readonly _rtlService;
    /** @hidden */
    private readonly _rtl$;
    /** @hidden */
    constructor(_cd: ChangeDetectorRef, _elRef: ElementRef);
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /**
     * Clears previous selection of the items.
     */
    clearSelection(): void;
    /** @hidden */
    setSelectedItem(item: T, componentIndex: number, action?: GridListSelectionActions | null, event?: PointerEvent): void;
    /** @hidden */
    handleKeydown(event: KeyboardEvent): void;
    /** @hidden */
    private _handleHomeEndKeydown;
    /** @hidden */
    private _handleTabKeydown;
    /** @hidden */
    private _handleShiftArrowKeydown;
    /** @hidden */
    private _handleArrowKeydown;
    /** hidden */
    private _calculateIndexToFocus;
    /** hidden */
    private _persistSelectionState;
    /** hidden */
    private _getCurrentItemIndex;
    /** hidden */
    private _focusItemAtIndex;
    /** hidden */
    private _toggleSelection;
    /** @hidden */
    private _listenOnQueryChange;
    /** @hidden */
    private _setFirstFocusableItem;
    /** @hidden */
    private _getItemsPerRow;
    /** @hidden */
    private _updateGridListItemsProperties;
    /** @hidden */
    private _updateGridListItemsProperty;
    static ɵfac: i0.ɵɵFactoryDeclaration<GridListComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<GridListComponent<any>, "fd-grid-list", never, { "id": { "alias": "id"; "required": false; }; "width": { "alias": "width"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "layoutPattern": { "alias": "layoutPattern"; "required": false; }; }, { "selectionChange": "selectionChange"; }, ["gridListItems"], ["*"], true, never>;
}
