import * as i0 from '@angular/core';
import { ElementRef, AfterContentInit, InjectionToken } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';

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

declare class BusyIndicatorExtendedDirective implements AfterContentInit {
    readonly elementRef: ElementRef;
    /** @hidden */
    busyIndicator: BusyIndicatorComponent;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    private _appendCssToParent;
    static ɵfac: i0.ɵɵFactoryDeclaration<BusyIndicatorExtendedDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BusyIndicatorExtendedDirective, "[fd-busy-indicator-extended]", never, {}, {}, ["busyIndicator"], never, true, never>;
}

declare class BusyIndicatorModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<BusyIndicatorModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<BusyIndicatorModule, never, [typeof BusyIndicatorComponent, typeof BusyIndicatorExtendedDirective], [typeof BusyIndicatorComponent, typeof BusyIndicatorExtendedDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<BusyIndicatorModule>;
}

declare const FD_BUSY_INDICATOR_COMPONENT: InjectionToken<unknown>;

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