import * as i0 from '@angular/core';
import { OnInit, OnChanges, ElementRef, Renderer2, EventEmitter, AfterContentInit, OnDestroy } from '@angular/core';
import { CssClassBuilder, HasElementRef } from '@fundamental-ngx/cdk/utils';

/**
 * Applies a thumb styles
 */
declare class FeedInputAvatarDirective implements OnInit, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef<HTMLElement>;
    /** Apply user custom styles */
    class: string;
    /** @hidden */
    placeholder: boolean;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedInputAvatarDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FeedInputAvatarDirective, "[fdFeedInputAvatar]", never, { "class": { "alias": "class"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Applies button feed arrow icon and disabled state
 */
declare class FeedInputButtonDirective implements OnInit {
    private readonly _elementRef;
    private _renderer;
    /** @hidden */
    disabled: boolean;
    /** @hidden */
    constructor(_elementRef: ElementRef<HTMLElement>, _renderer: Renderer2);
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    get elementRef(): ElementRef<HTMLElement>;
    /** @hidden create button icon */
    createArrowIcon(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedInputButtonDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FeedInputButtonDirective, "[fdFeedInputButton]", never, {}, {}, never, never, true, never>;
}

/**
 * Applies text area auto resize and set maximum rows to grow
 */
declare class FeedInputTextareaDirective implements HasElementRef, OnInit {
    /** The maximum rows allowed to grow */
    fdFeedInputTextareaMaxRows: number;
    /** @hidden */
    disabled: boolean;
    /** Event emitted when the textarea value changed */
    valueChange: EventEmitter<string>;
    /** @hidden */
    elementRef: ElementRef<HTMLTextAreaElement>;
    /** @hidden */
    private _renderer;
    /** @hidden */
    onKeyup(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden make to grow textarea */
    resize(): void;
    /** @hidden get line height of textarea */
    private _getTextareaLineHeight;
    /** @hidden get the total height including borders and scroll height */
    private _getTextareaTotalHeight;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedInputTextareaDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FeedInputTextareaDirective, "textarea[fdFeedInputTextarea]", never, { "fdFeedInputTextareaMaxRows": { "alias": "fdFeedInputTextareaMaxRows"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
}

declare class FeedInputComponent implements AfterContentInit, OnDestroy {
    /** Component disable state */
    disabled: boolean;
    /** @hidden */
    textareaElement: FeedInputTextareaDirective;
    /** @hidden */
    buttonElement: FeedInputButtonDirective;
    /** Value for aria label */
    ariaLabel: i0.InputSignal<string | undefined>;
    /** @hidden */
    private readonly _subscriptions;
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FeedInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FeedInputComponent, "fd-feed-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["textareaElement", "buttonElement"], ["*"], true, never>;
}

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

export { FeedInputAvatarDirective, FeedInputButtonDirective, FeedInputComponent, FeedInputModule, FeedInputTextareaDirective };
