import * as _angular_core from '@angular/core';
import { ElementRef, InjectionToken } from '@angular/core';
import { HasElementRef } from '@fundamental-ngx/cdk/utils';
import * as rxjs from 'rxjs';
import { FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';

type BusyIndicatorSize = 's' | 'm' | 'l';
declare class BusyIndicatorComponent {
    /** Whether to display the loading indicator animation. */
    readonly loading: _angular_core.InputSignal<boolean>;
    /** The size of the loading indicator, default will be medium */
    readonly size: _angular_core.InputSignal<BusyIndicatorSize>;
    /** Whether to use loader as block element */
    readonly block: _angular_core.InputSignal<boolean>;
    /** Aria label attribute value. */
    readonly ariaLabel: _angular_core.InputSignal<string | null>;
    /** Aria-valuetext attribute value. */
    readonly ariaValueText: _angular_core.InputSignal<string | null>;
    /** title attribute value for tooltip. */
    readonly title: _angular_core.InputSignal<string | undefined>;
    /** add loading label value */
    readonly label: _angular_core.InputSignal<string | undefined>;
    /** Aria live attribute value. */
    readonly ariaLive: _angular_core.InputSignal<"assertive" | "polite" | "off" | null>;
    /** @hidden */
    protected readonly fakeFocusElement: _angular_core.Signal<ElementRef<any> | undefined>;
    /** @hidden */
    protected readonly _lang$: rxjs.Observable<FdLanguage>;
    /** @hidden */
    protected readonly _translationResolver: TranslationResolver;
    /** @hidden */
    protected readonly _ariaValueText: _angular_core.Signal<string>;
    /** @hidden */
    protected readonly _titleValue: _angular_core.Signal<string>;
    /** @hidden */
    private readonly _elementRef;
    /** @hidden If focus escapes busy container focus element after wrapped content */
    protected hostFocusChangeHandler(event: KeyboardEvent): void;
    /** @hidden If busy container is navigated as "previous focusable element",
     * focus busy indicator to prevent from focusing wrapped content */
    protected fakeElementFocusHandler(event: FocusEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BusyIndicatorComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<BusyIndicatorComponent, "fd-busy-indicator", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaValueText": { "alias": "ariaValueText"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLive": { "alias": "ariaLive"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

declare class BusyIndicatorExtendedDirective implements HasElementRef {
    /** @hidden */
    readonly elementRef: ElementRef<any>;
    /** @hidden */
    protected readonly busyIndicator: _angular_core.Signal<BusyIndicatorComponent | undefined>;
    /** @hidden */
    constructor();
    /** @hidden */
    private _appendCssToParent;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BusyIndicatorExtendedDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BusyIndicatorExtendedDirective, "[fd-busy-indicator-extended]", never, {}, {}, ["busyIndicator"], never, true, never>;
}

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

declare const FD_BUSY_INDICATOR_COMPONENT: InjectionToken<unknown>;

export { BusyIndicatorComponent, BusyIndicatorExtendedDirective, BusyIndicatorModule, FD_BUSY_INDICATOR_COMPONENT };
export type { BusyIndicatorSize };
