import * as i0 from '@angular/core';
import { OnChanges, OnInit, ElementRef, TemplateRef, InjectionToken } from '@angular/core';
import { CssClassBuilder, Nullable, ColorAccent, NullableObject } from '@fundamental-ngx/cdk/utils';
import { IconFont } from '@fundamental-ngx/core/icon';

type ObjectStatus = 'negative' | 'critical' | 'positive' | 'informative' | 'neutral';
declare class ObjectStatusComponent implements OnChanges, OnInit, CssClassBuilder {
    readonly elementRef: ElementRef;
    /** User's custom classes */
    class: string;
    /**
     * The status represented by the Object Status.
     * Can be one of the following: 'negative' | 'critical' | 'positive' | 'informative'
     * For default Object Status omit this property
     */
    status: Nullable<ObjectStatus>;
    /**
     * Glyph (icon) of the Object Status.
     */
    glyph: Nullable<string>;
    /** Glyph font family */
    glyphFont: IconFont;
    /** Define the text content of the Object Status */
    label: Nullable<string>;
    /**
     * Label applied to glyph element, should be used when there is no text included
     */
    glyphAriaLabel: string;
    /**
     * 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.
     */
    indicationColor: Nullable<ColorAccent>;
    /** Whether the Object Status is clickable. */
    clickable: boolean;
    /** Whether the Object Status is inverted. */
    inverted: boolean;
    /** Whether the Object Status is in Large Design. */
    large: boolean;
    /** Whether to use secondary set of indication colors. */
    secondaryIndication: boolean;
    /**
     * Template reference for complex object status texts.
     */
    textTemplate: Nullable<TemplateRef<any>>;
    /** @hidden */
    _textClass: string;
    /** Whether the Object status is icon-only. */
    get iconOnly(): 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 */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectStatusComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ObjectStatusComponent, "[fd-object-status]", never, { "class": { "alias": "class"; "required": false; }; "status": { "alias": "status"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "glyphFont": { "alias": "glyphFont"; "required": false; }; "label": { "alias": "label"; "required": false; }; "glyphAriaLabel": { "alias": "glyphAriaLabel"; "required": false; }; "indicationColor": { "alias": "indicationColor"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "large": { "alias": "large"; "required": false; }; "secondaryIndication": { "alias": "secondaryIndication"; "required": false; }; "textTemplate": { "alias": "textTemplate"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_inverted: unknown;
}
type ObjectStatusData = NullableObject<{
    status: ObjectStatus;
    inverted: boolean;
    large: boolean;
    indicationColor: number;
    clickable: boolean;
    class: string;
    iconOnly: boolean;
    secondaryIndication: boolean;
}>;
declare const buildObjectStatusCssClasses: (data: ObjectStatusData) => string[];

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

declare const FD_OBJECT_STATUS_COMPONENT: InjectionToken<unknown>;

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