import * as i0 from '@angular/core';
import { AfterViewInit, AfterViewChecked, OnDestroy, ElementRef, EventEmitter, TemplateRef, InjectionToken, OnInit, QueryList } from '@angular/core';
import { ContentDensity, Nullable, Size, ColorAccent } from '@fundamental-ngx/cdk/utils';
import { CheckboxComponent } from '@fundamental-ngx/core/checkbox';
import { IconFont } from '@fundamental-ngx/core/icon';
import { ListUnreadIndicator } from '@fundamental-ngx/core/list';
import { RadioButtonComponent } from '@fundamental-ngx/core/radio';
import { DataProvider, ListDataSource, BaseComponent, CollectionBaseInput } from '@fundamental-ngx/platform/shared';
import { Observable } from 'rxjs';
import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';
import { FdLanguage } from '@fundamental-ngx/i18n';
import * as i2 from '@fundamental-ngx/core/content-density';

/**
 * Default options for platform List
 */
declare class ListConfig {
    /**
     * Content Density of element. 'cozy' | 'compact'
     */
    contentDensity: ContentDensity;
    /**
     * Maps data providers
     */
    providers: Map<string, DataProvider<any>> | null;
    /**
     * Create Provider factory function
     */
    static createProviderFactory(obj: Partial<ListConfig>): () => ListConfig;
    static ɵfac: i0.ɵɵFactoryDeclaration<ListConfig, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ListConfig>;
}

type SelectionType = 'none' | 'multi' | 'single' | 'delete';
type ListType = 'inactive' | 'active' | 'detail';
type FdpListDataSource<T> = ListDataSource<T> | Observable<T[]> | T[] | null;
interface FdpList<T = any> {
    _setupListItem(item: T): void;
}

declare const IS_ACTIVE_CLASS = "is-active";
type StatusType = 'negative' | 'critical' | 'positive' | 'informative';
declare class ListIconConfig {
    /** The icon name to display. See the icon page for the list of icons
     * here: https://sap.github.io/fundamental-ngx/icon
     * */
    glyph: string;
    /** user's custom classes */
    class: string;
    /**
     * The icon font
     * Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'
     */
    font: IconFont;
    /** Aria-label for Icon. */
    ariaLabel: Nullable<string>;
}
declare class ListAvatarConfig {
    /** @hidden */
    class: string;
    /** @hidden */
    ariaLabel: Nullable<string>;
    /** @hidden */
    ariaLabelledby: Nullable<string>;
    /** @hidden */
    label: Nullable<string>;
    /** @hidden */
    size: Size;
    /** @hidden */
    glyph: Nullable<string>;
    /** @hidden */
    zoomGlyph: Nullable<string>;
    /** @hidden */
    circle: boolean;
    /** @hidden */
    transparent: boolean;
    /** @hidden */
    contain: boolean;
    /** @hidden */
    placeholder: boolean;
    /** @hidden */
    tile: boolean;
    /** @hidden */
    border: boolean;
    /** @hidden */
    colorAccent: Nullable<ColorAccent>;
    /** @hidden */
    random: boolean;
    /** @hidden */
    clickable: boolean;
    /** @hidden */
    image: Nullable<string>;
    /** @hidden */
    alterIcon: Nullable<string>;
    /** @hidden */
    backupImage: Nullable<string>;
}
/**
 * Base interface for a list variant definition.
 * Captures a list item template definition.
 */
interface ItemDef {
    templateRef: TemplateRef<any>;
}
interface ListAdvancedDescription {
    text: string;
    ariaLabel?: string;
    title?: string;
}
type ListDescription = string | ListAdvancedDescription;
declare enum LIST_ITEM_TYPE {
    ITEM = "item",
    GROUP = "group",
    FOOTER = "footer",
    HEADER = "header"
}
declare class ModifyItemEvent {
    /** List Item component */
    source: BaseListItem;
    /** Action */
    action: 'delete' | 'edit';
}
declare class ListItemDef implements ItemDef {
    templateRef: TemplateRef<any>;
    /** @hidden */
    constructor(/** @docs-private */ templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ListItemDef, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ListItemDef, "[fdpItemDef]", never, {}, {}, never, never, true, never>;
}
/**
 * This class contains common properties used across list Item components.
 * this can be extended to reduce the code duplication across list Item components.
 */
declare class BaseListItem extends BaseComponent implements AfterViewInit, AfterViewChecked, OnDestroy {
    itemEl: ElementRef<HTMLElement>;
    protected _listConfig: ListConfig;
    private readonly _list;
    /** ID of the list item */
    id: string;
    /** define level of item for screen reader */
    ariaLevel: number;
    /** define position of item for screen reader */
    ariaPosinset: number;
    /** Avatar component properties. @see AvatarComponent for more details */
    set avatar(value: Nullable<Partial<ListAvatarConfig> | string>);
    get avatar(): ListAvatarConfig;
    /** attribute to hold counter value */
    counter?: string;
    /** Description of the title */
    description: Nullable<ListDescription>;
    /** To invert the status of secondary text */
    inverted: boolean;
    /** Whether there is no data inside list item */
    noDataText: string;
    /**
     * The type of the secondary text.fd-list__byline-right--*
     * Can be one of *positive*, *negative*, *informative*, *critical*, *neutral
     */
    statusType?: StatusType;
    /** attribute to hold secondary text*/
    secondary: Nullable<ListDescription>;
    /**
     * Enabling this flag causes forcing secondary item directive to not wrap text,
     * instead of wrapping there will be text truncation
     */
    secondaryWrap?: boolean;
    /** Tooltip text to show when focused for more than timeout value*/
    title?: string;
    /** Used for placeing navigation Link */
    link: Nullable<string>;
    /**
     * Enabling this flag causes forcing title directive to not wrap text,
     * instead of wrapping there will be text truncation
     */
    titleWrap?: boolean;
    /**
     * List item icon configuration.
     */
    set icon(value: Partial<ListIconConfig>);
    get icon(): ListIconConfig;
    /**
     * sets the list item in bold text
     * which respresents unread data
     */
    unRead: boolean;
    /**
     * Whether to display unread notification circle.
     */
    get displayUnreadNotification(): boolean;
    /** radio button value */
    value: string;
    /** By default selection mode is 'none' */
    set selectionMode(value: SelectionType);
    get selectionMode(): SelectionType;
    /** By default selection mode is 'active' */
    listType: ListType;
    /**
     * Whether Navigation mode is included to list component
     * for all the items
     */
    navigated: boolean;
    /**
     * Whether Navigation mode is included to list component
     * only a subset of the list items are navigable
     * you should indicate those by displaying a navigation arrow
     */
    navigationIndicator: boolean;
    /** role */
    role: Nullable<string>;
    /**
     * event emitter for selected item
     * seprate PR for custom event
     */
    itemSelected: EventEmitter<ModifyItemEvent>;
    /**
     * Event emitted for selected item through the checkbox.
     */
    itemCheckboxSelected: EventEmitter<ModifyItemEvent>;
    /** Event sent when delete, details or any other action buttons are clicked */
    buttonClicked: EventEmitter<ModifyItemEvent>;
    /** @hidden */
    listItem: ElementRef<HTMLLIElement>;
    /** Access child element, for checking link content*/
    anchor: ElementRef<HTMLLinkElement>;
    /** Access edit button*/
    edit: ElementRef<HTMLButtonElement>;
    /** Access delete button*/
    delete: ElementRef<HTMLButtonElement>;
    /** @hidden */
    checkboxComponent: CheckboxComponent;
    /** @hidden */
    radioButtonComponent: RadioButtonComponent;
    /** @hidden */
    _type: LIST_ITEM_TYPE;
    /**
     * @hidden
     * Whether By line mode is included to list component, by which
     * list item will accomdate the data in 2 column
     */
    _hasByLine: boolean;
    /**
     * @hidden
     * Whether listitem has row level selection enabled
     */
    set rowSelection(value: boolean);
    get rowSelection(): boolean;
    /**
     * @hidden
     * Whether listitem is selected binded to template
     */
    _selected: boolean;
    /** @hidden */
    get _selectedAttr(): boolean | null;
    /**
     * @hidden
     * get the focused element for key manager
     */
    _focused: boolean;
    /** @hidden */
    get _listItemRole(): string;
    /** @hidden */
    ariaSetSize: Observable<number>;
    /** @hidden */
    private _rowSelection;
    /** @hidden */
    private _defaultRole;
    /** @hidden */
    private _listComponent;
    /** @hidden */
    private _avatarConfig;
    /** @hidden */
    private _iconConfig;
    /**
     * @hidden
     * radio button selected value binded to template
     */
    private _selectionValue;
    /** @hidden */
    private _selectionMode;
    /** @hidden */
    constructor(itemEl: ElementRef<HTMLElement>, _listConfig: ListConfig, _list: ListUnreadIndicator);
    /** Selection value */
    set selectionValue(value: Nullable<string>);
    get selectionValue(): Nullable<string>;
    /**
     * @hidden
     * On item click event will be emitted
     */
    _onItemClick(): void;
    /** @hidden */
    _handleKeyboardEvent(event: KeyboardEvent): void;
    /**
     * @hidden
     * Handler for mouse events
     */
    _onClick(event: MouseEvent): void;
    /**
     * @hidden
     * helps to avoid multi rows active class with navigation
     */
    _onBlur(event: FocusEvent): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /**
     * @hidden
     * To detect changes from parent-listbox to list item
     * for example single, multi option selection those details
     * will be deducted in list item
     */
    ngAfterViewChecked(): void;
    /**
     * @hidden
     * Created focus on list item on mouseclick,
     * Up,down arrow press
     */
    focus(): void;
    /**
     * Programmatically set selected state of the list item.
     * @param selected Whether the list item is selected
     */
    setSelected(selected: boolean): void;
    /**
     * @hidden
     * on keydown append active styles on actionable item
     */
    _onKeyDown(event: KeyboardEvent): void;
    /**
     * @hidden
     * on keyup remove active styles from actionable item
     */
    _onKeyUp(event: KeyboardEvent): void;
    /** @hidden */
    _onCheckboxModelChange(): void;
    /**
     * @hidden
     * Handles action button click
     */
    _onActionButtonClick(action: 'delete' | 'edit'): void;
    /**
     * @hidden
     * Handles action button click on key press
     */
    _onKeyButtonClick(event: KeyboardEvent, action: 'delete' | 'edit'): void;
    /** @hidden */
    _isAdvancedText(text: ListDescription): text is ListAdvancedDescription;
    /** @hidden */
    private _onKeyboardClick;
    /** @hidden */
    private _setAttrRole;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseListItem, [null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseListItem, never, never, { "id": { "alias": "id"; "required": false; }; "ariaLevel": { "alias": "ariaLevel"; "required": false; }; "ariaPosinset": { "alias": "ariaPosinset"; "required": false; }; "avatar": { "alias": "avatar"; "required": false; }; "counter": { "alias": "counter"; "required": false; }; "description": { "alias": "description"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "noDataText": { "alias": "noDataText"; "required": false; }; "statusType": { "alias": "statusType"; "required": false; }; "secondary": { "alias": "secondary"; "required": false; }; "secondaryWrap": { "alias": "secondaryWrap"; "required": false; }; "title": { "alias": "title"; "required": false; }; "link": { "alias": "link"; "required": false; }; "titleWrap": { "alias": "titleWrap"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "unRead": { "alias": "unRead"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "listType": { "alias": "listType"; "required": false; }; "navigated": { "alias": "navigated"; "required": false; }; "navigationIndicator": { "alias": "navigationIndicator"; "required": false; }; "role": { "alias": "role"; "required": false; }; "selectionValue": { "alias": "selectionValue"; "required": false; }; }, { "itemSelected": "itemSelected"; "itemCheckboxSelected": "itemCheckboxSelected"; "buttonClicked": "buttonClicked"; }, never, never, true, never>;
}

declare class ActionChangeEvent {
    /** Action List Item component */
    source: ActionListItemComponent;
}
declare class ActionListItemComponent extends BaseListItem {
    /** Access button element*/
    button: ElementRef<HTMLButtonElement>;
    /** Event sent when action in clicked */
    actionClicked: EventEmitter<ActionChangeEvent>;
    /**
     * @hidden
     * Handles action click
     */
    _onActionClick(): void;
    /**
     * @hidden
     * on keydown append active styles on actionable item
     */
    _onKeyDown(event: KeyboardEvent): void;
    /**
     * @hidden
     * on keyup remove active styles from actionable item
     */
    _onKeyUp(event: KeyboardEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ActionListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ActionListItemComponent, "fdp-action-list-item", never, {}, { "actionClicked": "actionClicked"; }, never, never, true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class ActionListItemModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<ActionListItemModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<ActionListItemModule, never, [typeof ActionListItemComponent], [typeof ActionListItemComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<ActionListItemModule>;
}

declare class DisplayListItemComponent extends BaseListItem {
    static ɵfac: i0.ɵɵFactoryDeclaration<DisplayListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DisplayListItemComponent, "fdp-display-list-item", never, {}, {}, never, never, true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class DisplayListItemModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DisplayListItemModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DisplayListItemModule, never, [typeof DisplayListItemComponent], [typeof DisplayListItemComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DisplayListItemModule>;
}

declare const FdpListComponent: InjectionToken<unknown>;

declare class FreeContentListItemComponent extends BaseListItem {
    static ɵfac: i0.ɵɵFactoryDeclaration<FreeContentListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FreeContentListItemComponent, "fdp-free-content-list-item, li[fdp-free-content-list-item]", never, {}, {}, never, ["*"], true, never>;
}

declare class ListFooterComponent extends BaseComponent {
    /** @hidden */
    _type: LIST_ITEM_TYPE;
    static ɵfac: i0.ɵɵFactoryDeclaration<ListFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ListFooterComponent, "fdp-list-footer", never, {}, {}, never, ["*"], true, never>;
}

declare class ListGroupHeaderComponent extends BaseListItem implements OnInit {
    /** Displays list group header title */
    groupHeaderTitle?: string;
    /** @hidden */
    _type: LIST_ITEM_TYPE;
    /**
     * @hidden
     * Initialization of the list header component
     */
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ListGroupHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ListGroupHeaderComponent, "fdp-list-group-header", never, { "groupHeaderTitle": { "alias": "groupHeaderTitle"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class LoadMoreContentDirective {
    readonly templateRef: TemplateRef<LoadMoreContentContext>;
    /** @hidden */
    constructor(templateRef: TemplateRef<LoadMoreContentContext>);
    static ɵfac: i0.ɵɵFactoryDeclaration<LoadMoreContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LoadMoreContentDirective, "[fdpListLoadMoreContent]", never, {}, {}, never, never, true, never>;
}
interface _LoadMoreContentContext {
    loadTitle: string;
    loading: boolean;
    loadingLabel: Observable<string>;
    lastChunk: {
        start: number;
        end: number;
    };
    total: number;
}
interface LoadMoreContentContext extends _LoadMoreContentContext {
    $implicit: _LoadMoreContentContext;
}

declare class SelectionChangeEvent {
    /** Selected items */
    selectedItems: BaseListItem[];
    /** Index */
    index: number;
    /** Selected item */
    added?: BaseListItem[];
    /** Deselected item */
    removed?: BaseListItem[];
}
/**
 * The List component represents a container for list item types.
 * It is used to display a list features.
 */
declare class ListComponent<T> extends CollectionBaseInput implements ListUnreadIndicator, OnInit, AfterViewInit, OnDestroy, FdpList<BaseListItem> {
    private readonly _liveAnnouncer;
    private readonly _language$;
    /**  An array that holds a list of all selected items. **/
    selectedItems: BaseListItem[];
    /** define size of items for screen reader. */
    ariaSetsize: number;
    /** Defines whether items are multiselectable for screen reader. */
    ariaMultiselectable: boolean;
    /** Title used on button when data loads on button click. */
    loadTitle: string;
    /** Label used on announce message of data was loaded for screen readers. */
    loadingLabel: string;
    /** Wait time for new items. */
    delayTime: number;
    /** Items to be loaded at once. Intinity (no limit) by default. */
    itemSize: number;
    /** Enables lazy loadMore of data. */
    loadMore: boolean;
    /**
     * Enables data load on scroll for true
     * false: enables data loading on button click.
     */
    loadOnScroll: boolean;
    /** define the role to custom requirement. */
    role: string;
    /** ListType 'inactive' | 'active' | 'navigation' | 'detail' */
    listType: ListType;
    /** Max height for viewport to display scroll. */
    maxHeight: string;
    /** Whether list component has removed borders. */
    noBorder: boolean;
    /** Scroll offset percentage to trigger scroll event. */
    scrollOffsetPercentage: number;
    /** Eenables selection styles. */
    selection: boolean;
    /**
     * The type of the selection. Types include:
     * 'none'| 'multi' | 'single'|'delete'.
     * Leave empty for default ().'
     * Default value is set to 'none'.
     */
    selectionMode: SelectionType;
    /** setter and getter for radio button and checkbox. */
    set value(value: any);
    get value(): any;
    /** setter and getter for row level Selection. */
    set rowSelection(value: boolean);
    get rowSelection(): boolean;
    /** Datasource for suggestion list. */
    set dataSource(value: FdpListDataSource<T>);
    get dataSource(): FdpListDataSource<T>;
    /** setter and getter for _navigated. */
    set navigated(value: boolean);
    get navigated(): boolean;
    /** setter and getter for _navigationIndicator. */
    set navigationIndicator(value: boolean);
    get navigationIndicator(): boolean;
    /** setter and getter for hasByLine. */
    set hasByLine(value: boolean);
    get hasByLine(): boolean;
    /** setter and getter for hasObject. */
    set hasObject(value: boolean);
    get hasObject(): boolean;
    /** Whether to display unread notification indicator. */
    unreadIndicator: boolean;
    /** Whether to intercept tab key navigation. */
    interceptTabKey: boolean;
    /** Event thrown, when selected item is changed */
    selectedItemChange: EventEmitter<SelectionChangeEvent>;
    /** Access child element, for checking link content */
    anchor: ElementRef<HTMLLinkElement>;
    /** @hidden */
    listItemDef: ListItemDef;
    /** Show More List item content */
    loadMoreContent: LoadMoreContentDirective;
    /** Child items of the List. */
    listItems: QueryList<BaseListItem>;
    /** @hidden */
    get _ulElement(): Nullable<HTMLUListElement>;
    /**
     * @hidden
     * To display loading symbol
     */
    _loading: boolean;
    /** @hidden
     * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown
     */
    _firstLoadingDone: boolean;
    /** @hidden */
    readonly loadingRange: number[];
    /**
     * @hidden
     * keyManger to handle keybord events used in template
     */
    _keyManager: Nullable<FocusKeyManager<BaseListItem>>;
    /** @hidden */
    _items: T[];
    /** @hidden */
    _ariaSetSize: Observable<number>;
    /** @hidden */
    protected _dataSource: ListDataSource<T>;
    /**
     * @hidden
     * Verfies partial navigation enabled
     */
    protected _partialNavigation: boolean;
    /** @hidden */
    private _translationResolver;
    /**
     * @hidden
     * Whether Navigation mode is included to list component
     * for all the items
     */
    private _navigated;
    /**
     * @hidden
     * Whether By line is present in list item
     */
    private _hasByLine;
    /**
     * @hidden
     * Whether Navigation mode is included to list component
     * only a subset of the list items are navigable
     * you should indicate those by displaying a navigation arrow
     */
    private _navigationIndicator;
    /**
     * @hidden
     * Whether object present in list item
     */
    private _hasObject;
    /**
     * @hidden
     * The model backing of the component.
     */
    private _selectionModel;
    /**
     * @hidden
     * Whether list component has multiselection
     * binding in tempate to append class
     */
    private _multiSelect;
    /** @hidden */
    private _selectedvalue;
    /**
     * @hidden
     * Whether row level selection mode is enabled to list component
     * for all the items
     */
    private _rowSelection;
    /** @hidden To store */
    private _tempItems;
    /** @hidden */
    private _startIndex;
    /** @hidden */
    private _lastIndex;
    /** @hidden */
    private _dsItems;
    /**
     * @hidden
     * for data source handling
     */
    private _dsSubscription;
    /** @hidden */
    private _language;
    /** @hidden */
    private _afterViewInit$;
    /** @hidden */
    constructor(_liveAnnouncer: LiveAnnouncer, _language$: Observable<FdLanguage>);
    /**
     * @hidden
     * on Update navgiation styles for non navigated items
     * event:any to avoid code duplication
     * seprate PR for custom event
     */
    _updateNavigation(event: Event): void;
    /** Get context for load more button */
    getLoadMoreContentContext(): LoadMoreContentContext;
    /**
     * @hidden
     * Initialization of the lis component with selection mode
     */
    ngOnInit(): void;
    /**
     * @hidden
     * Keyboard manager on list items, set values when passed via array
     */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /**
     * @hidden
     * handline keyboard operations
     * in template on list and list items
     */
    _handleKeyDown(event: KeyboardEvent): Nullable<boolean>;
    /** @hidden */
    _setCurrentActiveItemIndex(activeItemIndex: number): void;
    /**
     * @hidden
     * binded in template on scroll
     */
    _scrollHandler(): void;
    /**
     * @hidden
     * show more on enter or space press
     */
    _loadOnKeyPress(event: KeyboardEvent): void;
    /**
     * @hidden
     * Handles lazy loading data
     * used in template
     * onscroll and on more button click
     */
    _getMoreData(): void;
    /**
     * @hidden
     * used in tempate to get Selected items from a list
     * event:any to avoid code duplication
     */
    _onSelectionChanged(event: Event): void;
    /** @hidden */
    _setupListItem(item: BaseListItem): void;
    /** @hidden */
    _selectItem(item: BaseListItem): void;
    /** @hidden */
    _clearSelection(): void;
    /** @hidden */
    private _setItems;
    /** @hidden */
    private _initializeDS;
    /** @hidden */
    private _toDataStream;
    /** @hidden */
    private _openDataStream;
    /** @hidden */
    private _loadNewItems;
    /**
     * @hidden
     * List item with radio button styles, check, uncheckupdates
     * event:any to avoid code duplication
     */
    private _handleSingleSelect;
    /** @hidden */
    private _handleRowSelect;
    /**
     * @hidden
     * List item with checkbox styles,check,uncheckupdates
     * event:any to avoid code duplication
     */
    private _handleMultiSelect;
    /**
     * @hidden
     * Setting values from list to list items
     * example:
     * Does list item has navigation,
     * should show arrows,
     * will it be compact mode,
     * should be in which selection mode
     * set values when passed via datasource
     */
    private _updateListItems;
    /** @hidden */
    private _waitForViewInit;
    /** @hidden */
    private _init;
    static ɵfac: i0.ɵɵFactoryDeclaration<ListComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ListComponent<any>, "fdp-list", never, { "selectedItems": { "alias": "selectedItems"; "required": false; }; "ariaSetsize": { "alias": "ariaSetsize"; "required": false; }; "ariaMultiselectable": { "alias": "ariaMultiselectable"; "required": false; }; "loadTitle": { "alias": "loadTitle"; "required": false; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; }; "delayTime": { "alias": "delayTime"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "loadMore": { "alias": "loadMore"; "required": false; }; "loadOnScroll": { "alias": "loadOnScroll"; "required": false; }; "role": { "alias": "role"; "required": false; }; "listType": { "alias": "listType"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "noBorder": { "alias": "noBorder"; "required": false; }; "scrollOffsetPercentage": { "alias": "scrollOffsetPercentage"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "value": { "alias": "value"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "navigated": { "alias": "navigated"; "required": false; }; "navigationIndicator": { "alias": "navigationIndicator"; "required": false; }; "hasByLine": { "alias": "hasByLine"; "required": false; }; "hasObject": { "alias": "hasObject"; "required": false; }; "unreadIndicator": { "alias": "unreadIndicator"; "required": false; }; "interceptTabKey": { "alias": "interceptTabKey"; "required": false; }; }, { "selectedItemChange": "selectedItemChange"; }, ["listItemDef", "loadMoreContent", "listItems"], ["fd-toolbar", "*", "*", "#load"], true, never>;
}

declare class StandardListItemComponent extends BaseListItem {
    static ɵfac: i0.ɵɵFactoryDeclaration<StandardListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StandardListItemComponent, "fdp-standard-list-item", never, {}, {}, never, ["#secondaryAction"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class StandardListItemModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<StandardListItemModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<StandardListItemModule, never, [typeof StandardListItemComponent, typeof i2.ContentDensityModule], [typeof StandardListItemComponent, typeof i2.ContentDensityModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<StandardListItemModule>;
}

declare class ObjectListItemRowComponent {
    /** object attribute label */
    attributeLabel: string;
    /** object attribute link text */
    linkedText: string;
    /** object attribute is a link */
    islink: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectListItemRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ObjectListItemRowComponent, "fdp-object-list-item-row", never, { "attributeLabel": { "alias": "attributeLabel"; "required": false; }; "linkedText": { "alias": "linkedText"; "required": false; }; "islink": { "alias": "islink"; "required": false; }; }, {}, never, [".attribute", "*"], true, never>;
}

declare class ObjectListItemComponent extends BaseListItem {
    /** define label for screen reader */
    introductionText: string;
    /** holds object number */
    amount: number;
    /** holds object number unit */
    currency: string;
    /** object number amount decimal limitation */
    decimal: number;
    /** object number status */
    numberStatus: StatusType;
    /** holds avatar label */
    label: string;
    /** holds avatar icon as image */
    glyph: string;
    /** Avatar to be circle or not */
    circle: boolean;
    /** Is avatar has placeholder */
    placeholder: boolean;
    /** Is avatar has tile */
    tile: boolean;
    /** Is avatar has colorAccent */
    colorAccent: ColorAccent;
    /** Avatar image path */
    image: string;
    /** Avatar is transparent */
    transparent: boolean;
    /** @hidden */
    children: QueryList<ObjectListItemRowComponent>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ObjectListItemComponent, "fdp-object-list-item", never, { "introductionText": { "alias": "introductionText"; "required": false; }; "amount": { "alias": "amount"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "decimal": { "alias": "decimal"; "required": false; }; "numberStatus": { "alias": "numberStatus"; "required": false; }; "label": { "alias": "label"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "tile": { "alias": "tile"; "required": false; }; "colorAccent": { "alias": "colorAccent"; "required": false; }; "image": { "alias": "image"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; }, {}, ["children"], ["fdp-object-list-item-row", "#secondaryAction"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class ObjectListItemModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectListItemModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<ObjectListItemModule, never, [typeof ObjectListItemComponent, typeof ObjectListItemRowComponent, typeof i2.ContentDensityModule], [typeof ObjectListItemComponent, typeof ObjectListItemRowComponent, typeof i2.ContentDensityModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<ObjectListItemModule>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class PlatformListModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PlatformListModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PlatformListModule, never, [typeof ListComponent, typeof ListFooterComponent, typeof ListGroupHeaderComponent, typeof ListItemDef, typeof i2.ContentDensityModule, typeof StandardListItemModule, typeof ObjectListItemModule, typeof DisplayListItemModule, typeof ActionListItemModule, typeof FreeContentListItemComponent, typeof LoadMoreContentDirective], [typeof ListComponent, typeof ListFooterComponent, typeof ListGroupHeaderComponent, typeof ListItemDef, typeof i2.ContentDensityModule, typeof StandardListItemModule, typeof ObjectListItemModule, typeof DisplayListItemModule, typeof ActionListItemModule, typeof FreeContentListItemComponent, typeof LoadMoreContentDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PlatformListModule>;
}

export { ActionChangeEvent, ActionListItemComponent, ActionListItemModule, BaseListItem, DisplayListItemComponent, DisplayListItemModule, FdpListComponent, FreeContentListItemComponent, IS_ACTIVE_CLASS, LIST_ITEM_TYPE, ListAvatarConfig, ListComponent, ListConfig, ListFooterComponent, ListGroupHeaderComponent, ListIconConfig, ListItemDef, LoadMoreContentDirective, ModifyItemEvent, ObjectListItemComponent, ObjectListItemModule, ObjectListItemRowComponent, PlatformListModule, SelectionChangeEvent, StandardListItemComponent, StandardListItemModule };
export type { FdpList, FdpListDataSource, ItemDef, ListAdvancedDescription, ListDescription, ListType, LoadMoreContentContext, SelectionType, StatusType };
