import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import * as _angular_core from '@angular/core';
import { DoCheck, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs';
import * as _siemens_element_ng_common from '@siemens/element-ng/common';
import { ExtendedStatusType } from '@siemens/element-ng/common';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

interface StatusBarItem {
    /**
     * The value to show. 0 or '' means greyed out
     */
    value: number | string;
    /**
     * A descriptive title
     */
    title: string;
    /**
     * Status of the item. If not specified, specify `color`
     */
    status?: ExtendedStatusType;
    /**
     * Custom color as CSS value if `status` is not specified
     * @deprecated use the semantic `status` input instead.
     */
    color?: string;
    /**
     * When blinking is enabled, allows to explicitly disable blinking.
     * `undefined` and `true` mean blink.
     */
    blink?: boolean;
    /**
     * Function to call when the item is clicked.
     */
    action?: (item: StatusBarItem) => void;
}

interface ExtendedStatusBarItem extends StatusBarItem {
    isSpecial?: boolean;
    mutePadding?: boolean;
}
/**
 * The status bar is the main component within an application to inform users at all times
 * about important status information.
 */
declare class SiStatusBarComponent implements DoCheck, OnDestroy, OnChanges {
    private static readonly itemMinWidth;
    private static readonly itemMaxWidth;
    private static readonly itemSpacing;
    private static readonly itemPaddingX;
    private static readonly itemPaddingXdeprecated;
    private static readonly muteButtonWidth;
    /**
     * Array of status bar items.
     */
    readonly items: _angular_core.InputSignal<StatusBarItem[]>;
    /**
     * When true, items with a value have a blinking background
     *
     * @defaultValue false
     */
    readonly blink: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * State of the mute button. Set to `undefined` for no button.
     */
    readonly muteButton: _angular_core.InputSignal<boolean | undefined>;
    /**
     * Text/translation key on mute button for screen reader
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_STATUS_BAR.MUTE:Mute/unmute`)
     * ```
     */
    readonly muteButtonText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Text/translation key for "All OK" status in mobile
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_STATUS_BAR.ALL_OK:All OK`)
     * ```
     */
    readonly allOkText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * compact mode
     *
     * @defaultValue false
     */
    readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * blink pulse generator for synchronized blinking with other components
     */
    readonly blinkPulse: _angular_core.InputSignal<Observable<boolean> | undefined>;
    /**
     * Text for the navbar expand button. Required for a11y
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_STATUS_BAR.EXPAND:Expand`)
     * ```
     */
    readonly expandButtonText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Text for the navbar collapse button. Required for a11y
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_STATUS_BAR.COLLAPSE:Collapse`)
     * ```
     */
    readonly collapseButtonText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Emitted when the mute toggle button is clicked
     */
    readonly muteToggle: _angular_core.OutputEmitterRef<void>;
    private readonly theBar;
    private readonly content;
    private readonly custom;
    protected readonly responsiveItems: _angular_core.WritableSignal<ExtendedStatusBarItem[]>;
    protected responsiveMode: number;
    protected readonly expanded: _angular_core.WritableSignal<number>;
    protected readonly placeholderHeight: _angular_core.WritableSignal<number>;
    protected readonly contentHeight: _angular_core.WritableSignal<number | undefined>;
    protected readonly blinkOnOff: _angular_core.WritableSignal<boolean | undefined>;
    protected readonly icons: Record<"elementDown2" | "elementSoundMute" | "elementSoundOn", string>;
    protected statusId: string;
    private timer;
    private blinkSubs?;
    private readonly element;
    private readonly blinkService;
    private readonly translateService;
    private readonly resizeObserver;
    private readonly measureService;
    constructor();
    ngOnChanges(changes: SimpleChanges<this>): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    protected onItemClicked(item: StatusBarItem): void;
    protected toggleExpand(): void;
    protected resizeHandler(): void;
    private setResponsiveMode;
    private calcResponsiveItems;
    private calculateRequiredWidth;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiStatusBarComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiStatusBarComponent, "si-status-bar", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "blink": { "alias": "blink"; "required": false; "isSignal": true; }; "muteButton": { "alias": "muteButton"; "required": false; "isSignal": true; }; "muteButtonText": { "alias": "muteButtonText"; "required": false; "isSignal": true; }; "allOkText": { "alias": "allOkText"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "blinkPulse": { "alias": "blinkPulse"; "required": false; "isSignal": true; }; "expandButtonText": { "alias": "expandButtonText"; "required": false; "isSignal": true; }; "collapseButtonText": { "alias": "collapseButtonText"; "required": false; "isSignal": true; }; }, { "muteToggle": "muteToggle"; }, never, ["*"], true, never>;
}

declare class SiStatusBarModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiStatusBarModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiStatusBarModule, never, [typeof SiStatusBarComponent], [typeof SiStatusBarComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiStatusBarModule>;
}

declare class SiStatusBarItemComponent {
    private readonly statusIcons;
    readonly status: _angular_core.InputSignal<ExtendedStatusType | undefined>;
    readonly value: _angular_core.InputSignal<number | TranslatableString>;
    readonly heading: _angular_core.InputSignal<TranslatableString>;
    readonly color: _angular_core.InputSignal<string | undefined>;
    /** @defaultValue false */
    readonly blink: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @defaultValue false */
    readonly valueOnly: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /** @defaultValue false */
    readonly clickable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    private readonly bg;
    protected readonly contrastFix: _angular_core.Signal<boolean>;
    protected readonly statusIcon: _angular_core.Signal<_siemens_element_ng_common.StatusIcon | undefined>;
    protected readonly background: _angular_core.Signal<string>;
    private calculateContrastFix;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiStatusBarItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiStatusBarItemComponent, "si-status-bar-item", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "blink": { "alias": "blink"; "required": false; "isSignal": true; }; "valueOnly": { "alias": "valueOnly"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { SiStatusBarComponent, SiStatusBarItemComponent, SiStatusBarModule };
export type { StatusBarItem };
