import * as _angular_core from '@angular/core';
import { OnChanges } from '@angular/core';
import { SelectOption } from '@siemens/element-ng/select';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

/**
 * One step in a list of thresholds
 */
interface ThresholdStep {
    /** Threshold value, the first step has no value */
    value?: number;
    /** One of the `SelectOption.id` */
    optionValue: string;
    /** When set to `false`, input fields are highlighted as invalid */
    valid?: boolean;
    /** Optional alias label for the threshold step, used when `useAliasForStepValues` is `true` */
    aliasLabel?: TranslatableString;
}
declare class SiThresholdComponent implements OnChanges {
    /**
     * Options to be shown in select dropdown
     *
     * @defaultValue []
     */
    readonly options: _angular_core.InputSignal<SelectOption<unknown>[]>;
    /**
     * The thresholds
     *
     * @defaultValue []
     */
    readonly thresholdSteps: _angular_core.ModelSignal<ThresholdStep[]>;
    /**
     * The unit to show
     *
     * @defaultValue ''
     */
    readonly unit: _angular_core.InputSignal<string>;
    /**
     * The min. value for the threshold value
     *
     * @defaultValue 0
     */
    readonly minValue: _angular_core.InputSignal<number>;
    /**
     * The max. value for the threshold value
     *
     * @defaultValue 100
     */
    readonly maxValue: _angular_core.InputSignal<number>;
    /**
     * The step size for the threshold value
     *
     * @defaultValue 1
     */
    readonly stepSize: _angular_core.InputSignal<number>;
    /**
     * Max. number of steps, 0 for no hard limit
     *
     * @defaultValue 0
     */
    readonly maxSteps: _angular_core.InputSignal<number>;
    /**
     * Do validation?
     *
     * @defaultValue true
     */
    readonly validation: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When disabled, steps cannot be added/removed
     *
     * @defaultValue true
     */
    readonly canAddRemoveSteps: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Use horizontal layout?
     *
     * @defaultValue false
     */
    readonly horizontalLayout: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Show dec/inc buttons?
     *
     * @defaultValue true
     */
    readonly showDecIncButtons: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The obvious
     *
     * @defaultValue false
     */
    readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Indicate that the threshold options are readonly and cannot be changed. This will also disable adding / removing steps.
     *
     * @defaultValue false
     */
    readonly readonlyConditions: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The aria-label for delete button
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_THRESHOLD.DELETE:Delete step`)
     * ```
     */
    readonly deleteAriaLabel: _angular_core.InputSignal<TranslatableString>;
    /**
     * The aria-label for add button
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_THRESHOLD.ADD:Add step`)
     * ```
     */
    readonly addAriaLabel: _angular_core.InputSignal<TranslatableString>;
    /**
     * The aria-label for input field
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`)
     * ```
     */
    readonly inputAriaLabel: _angular_core.InputSignal<TranslatableString>;
    /**
     * The aria-label for status selection
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_THRESHOLD.STATUS:Status`)
     * ```
     */
    readonly statusAriaLabel: _angular_core.InputSignal<TranslatableString>;
    /**
     * When enabled, numeric step inputs are replaced with readonly text fields displaying the `aliasLabel` of each step.
     * Add/remove step buttons are also hidden.
     *
     * @defaultValue false
     */
    readonly useAliasForStepValues: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Fired when validation status changes */
    readonly validChange: _angular_core.OutputEmitterRef<boolean>;
    protected readonly colors: _angular_core.Signal<string[]>;
    protected readonly icons: Record<"elementPlus" | "elementDelete", string>;
    private _valid;
    /**
     * Whether the current input value is valid or not.
     */
    get valid(): boolean;
    private readonly numberInputs;
    protected readonly showAddRemoveButtons: _angular_core.Signal<boolean>;
    ngOnChanges(): void;
    protected deleteStep(index: number): void;
    protected addStep(index: number): void;
    protected stepChange(): void;
    private validate;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiThresholdComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiThresholdComponent, "si-threshold", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "thresholdSteps": { "alias": "thresholdSteps"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "stepSize": { "alias": "stepSize"; "required": false; "isSignal": true; }; "maxSteps": { "alias": "maxSteps"; "required": false; "isSignal": true; }; "validation": { "alias": "validation"; "required": false; "isSignal": true; }; "canAddRemoveSteps": { "alias": "canAddRemoveSteps"; "required": false; "isSignal": true; }; "horizontalLayout": { "alias": "horizontalLayout"; "required": false; "isSignal": true; }; "showDecIncButtons": { "alias": "showDecIncButtons"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "readonlyConditions": { "alias": "readonlyConditions"; "required": false; "isSignal": true; }; "deleteAriaLabel": { "alias": "deleteAriaLabel"; "required": false; "isSignal": true; }; "addAriaLabel": { "alias": "addAriaLabel"; "required": false; "isSignal": true; }; "inputAriaLabel": { "alias": "inputAriaLabel"; "required": false; "isSignal": true; }; "statusAriaLabel": { "alias": "statusAriaLabel"; "required": false; "isSignal": true; }; "useAliasForStepValues": { "alias": "useAliasForStepValues"; "required": false; "isSignal": true; }; }, { "thresholdSteps": "thresholdStepsChange"; "validChange": "validChange"; }, never, never, true, never>;
}

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

export { SiThresholdComponent, SiThresholdModule };
export type { ThresholdStep };
