import * as i0 from '@angular/core';
import { OnInit, OnChanges, ElementRef, SimpleChanges, AfterContentChecked, OnDestroy, QueryList } from '@angular/core';
import { CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';

declare class FeedListActionComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListActionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedListActionComponent, "fd-feed-list-action", never, {}, {}, never, ["*"], true, never>;
}

declare class FeedListAvatarComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListAvatarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedListAvatarComponent, "fd-feed-list-avatar", never, {}, {}, never, ["*"], true, never>;
}

declare class FeedListFooterComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedListFooterComponent, "fd-feed-list-footer", never, {}, {}, never, ["*"], true, never>;
}

declare class FeedListItemComponent implements OnInit, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef;
    /** User's custom classes */
    class: string;
    /**
     * Author of feed
     */
    authorTitle: string;
    /**
     * Link to Author of feed
     */
    authorLink: Nullable<string>;
    /**
     * Feed text
     */
    text: string;
    /**
     * Max preview characters of Feed text. If you have more than max characters text, you can toggle preview/full text with more/less button.
     */
    maxChars: number;
    /**
     * Sets the `aria-label` attribute to the element.
     */
    ariaLabel: string;
    /**
     * aria-labelledby for element describing.
     */
    ariaLabelledby: string;
    /**
     * Apply rich feed text, please note - we use a formatted text component with this option, it has a list of controlled tags and attibutes.
     * This feature should be handled with care as it allows for countless custom layouts.
     */
    isRichText: boolean;
    /**
     * Apply mobile view
     */
    mobile: boolean;
    /**
     * Apply body class by default
     */
    isFeedListItemBody: boolean;
    /** @hidden */
    maxCharsAtDefault: boolean;
    /**
     * Shows toggle state of feed text - more or less
     */
    isCollapsed: boolean;
    /**
     * Shows have you more line than max lines
     */
    hasMore: boolean;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    setHasMore(): void;
    /** @hidden */
    setDefaultMaxChars(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    toggleTextView(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedListItemComponent, "fd-feed-list-item", never, { "class": { "alias": "class"; "required": false; }; "authorTitle": { "alias": "authorTitle"; "required": false; }; "authorLink": { "alias": "authorLink"; "required": false; }; "text": { "alias": "text"; "required": false; }; "maxChars": { "alias": "maxChars"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "isRichText": { "alias": "isRichText"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; }, {}, never, ["fd-feed-list-avatar", "fd-feed-list-avatar", "fd-feed-list-action", "fd-feed-list-footer"], true, never>;
}

declare class FeedListComponent implements OnInit, AfterContentChecked, OnDestroy, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef;
    /** User's custom classes */
    class: string;
    /**
     * Sets the `aria-label` attribute to the element.
     */
    ariaLabel: string;
    /**
     * aria-labelledby for element describing.
     */
    ariaLabelledby: string;
    /**
     * Apply mobile view
     */
    mobile: boolean;
    /**
     * Feed list items will be display in a group.
     */
    isGroup: boolean;
    /**
     * It removes border if items are displaying in a group.
     */
    borderLess: boolean;
    /**
     * Gets feed list items
     */
    feedItems: QueryList<FeedListItemComponent>;
    /** @hidden */
    private $feedItemChanges;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngAfterContentChecked(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    private _listenOnFeedItems;
    /** @hidden */
    private _refreshItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedListComponent, "fd-feed-list", never, { "class": { "alias": "class"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "isGroup": { "alias": "isGroup"; "required": false; }; "borderLess": { "alias": "borderLess"; "required": false; }; }, {}, ["feedItems"], ["fd-feed-list-item"], true, never>;
}

declare class FeedListFooterBylineDirective {
    /** @hidden */
    fdBylineClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListFooterBylineDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FeedListFooterBylineDirective, "[fd-item-footer-byline]", never, {}, {}, never, never, true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class FeedListItemModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedListItemModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<FeedListItemModule, never, [typeof FeedListComponent, typeof FeedListItemComponent, typeof FeedListAvatarComponent, typeof FeedListActionComponent, typeof FeedListFooterComponent, typeof FeedListFooterBylineDirective], [typeof FeedListComponent, typeof FeedListItemComponent, typeof FeedListAvatarComponent, typeof FeedListActionComponent, typeof FeedListFooterComponent, typeof FeedListFooterBylineDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<FeedListItemModule>;
}

export { FeedListActionComponent, FeedListAvatarComponent, FeedListComponent, FeedListFooterBylineDirective, FeedListFooterComponent, FeedListItemComponent, FeedListItemModule };
