import * as _angular_core from '@angular/core';
import { ElementRef, TemplateRef, InjectionToken } from '@angular/core';
import { HasElementRef, Nullable, ColorAccent } from '@fundamental-ngx/cdk/utils';
import { IconFont } from '@fundamental-ngx/core/icon';
import { FdLanguageKeyIdentifier } from '@fundamental-ngx/i18n';

type ObjectStatus = 'negative' | 'critical' | 'positive' | 'informative' | 'neutral';
declare const OBJECT_STATUS_CLASS_NAME = "fd-object-status";
declare class ObjectStatusComponent implements HasElementRef {
    /** @hidden */
    _textClass: string;
    /** @hidden Element reference */
    readonly elementRef: ElementRef<any>;
    /**
     * The status represented by the Object Status.
     * Can be one of the following: 'negative' | 'critical' | 'positive' | 'informative'
     * For default Object Status omit this property
     */
    readonly status: _angular_core.InputSignal<Nullable<ObjectStatus>>;
    /** An optional status message for the Object Status. */
    readonly statusMessage: _angular_core.InputSignal<Nullable<string>>;
    /**
     * Glyph (icon) of the Object Status.
     */
    readonly glyph: _angular_core.InputSignal<Nullable<string>>;
    /** Glyph font family */
    readonly glyphFont: _angular_core.InputSignal<IconFont>;
    /** Define the text content of the Object Status */
    readonly label: _angular_core.InputSignal<Nullable<string>>;
    /**
     * Accessible label for screen readers.
     * Used in the screen-reader-only span element to provide context for assistive technologies.
     */
    readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Label applied to glyph element, should be used when there is no text included
     */
    readonly glyphAriaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * A number representing the indication color.
     * For non-inverted state available numbers are from 1 to 8.
     * For inverted state available numbers are from 1 to 10.
     */
    readonly indicationColor: _angular_core.InputSignal<Nullable<ColorAccent>>;
    /** Whether the Object Status is clickable. */
    readonly clickable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether the Object Status is inverted. */
    readonly inverted: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether the Object Status is in Large Design. */
    readonly large: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether to use secondary set of indication colors. */
    readonly secondaryIndication: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Template reference for complex object status texts.
     */
    readonly textTemplate: _angular_core.InputSignal<Nullable<TemplateRef<any>>>;
    /** Aria role description for the object status. */
    readonly ariaRoleDescription: _angular_core.InputSignal<string | undefined>;
    /** @hidden */
    protected readonly _ariaRoleDescription: _angular_core.Signal<string>;
    /** @hidden */
    protected readonly indicationColorCode: _angular_core.Signal<string>;
    /** @hidden */
    protected readonly statusTranslateKey: _angular_core.Signal<FdLanguageKeyIdentifier | null>;
    /** @hidden Computed CSS classes */
    protected readonly _cssClass: _angular_core.Signal<string>;
    /** @hidden */
    private readonly defaultAriaRoleDescription;
    /** Whether the Object status is icon-only. */
    private readonly iconOnly;
    /**
     * Type guard to check if the status is a valid ObjectStatus
     * @hidden
     */
    private isValidObjectStatus;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ObjectStatusComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ObjectStatusComponent, "[fd-object-status]", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "glyphFont": { "alias": "glyphFont"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "glyphAriaLabel": { "alias": "glyphAriaLabel"; "required": false; "isSignal": true; }; "indicationColor": { "alias": "indicationColor"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "inverted": { "alias": "inverted"; "required": false; "isSignal": true; }; "large": { "alias": "large"; "required": false; "isSignal": true; }; "secondaryIndication": { "alias": "secondaryIndication"; "required": false; "isSignal": true; }; "textTemplate": { "alias": "textTemplate"; "required": false; "isSignal": true; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * @deprecated
 * Use `ObjectStatusComponent` import instead.
 */
declare class ObjectStatusModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ObjectStatusModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<ObjectStatusModule, never, [typeof ObjectStatusComponent], [typeof ObjectStatusComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<ObjectStatusModule>;
}

declare const FD_OBJECT_STATUS_COMPONENT: InjectionToken<unknown>;

export { FD_OBJECT_STATUS_COMPONENT, OBJECT_STATUS_CLASS_NAME, ObjectStatusComponent, ObjectStatusModule };
export type { ObjectStatus };
