import * as i0 from '@angular/core';
import { OnChanges, EventEmitter, AfterViewInit, OnDestroy, QueryList } from '@angular/core';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
declare class SiTabLegacyComponent implements OnChanges {
    private static idCounter;
    /** Title of the tab item. */
    heading?: TranslatableString;
    /** Icon of the tab item. */
    icon?: string;
    /** Alternative name or translation key for icon. Used for A11y. */
    iconAltText?: TranslatableString;
    /**
     * Additional badge content. A value of
     * - `true` will render a red dot
     * - any string without a `badgeColor` will render a red dot with text
     * - any string with a `badgeColor` will render a normal badge
     */
    badgeContent?: TranslatableString | boolean;
    /**
     * Background color of the badge.
     * If no color is provided a red dot badge will be rendered.
     */
    badgeColor?: string;
    /**
     * Disables the tab.
     *
     * @defaultValue false
     */
    disabled: boolean;
    /**
     * Close the current tab.
     *
     * @defaultValue false
     */
    closable?: boolean | undefined;
    /** Event emitter to notify when a tab is closed. */
    readonly closeTriggered: EventEmitter<SiTabLegacyComponent>;
    /** @internal */
    id: string;
    /** @internal */
    tabId: string;
    protected get isHidden(): boolean | null;
    private parent?;
    /** @internal */
    readonly active: i0.WritableSignal<boolean>;
    /** @internal */
    registerParent(parent: SiTabsetLegacyComponent): void;
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiTabLegacyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SiTabLegacyComponent, "si-tab-legacy", never, { "heading": { "alias": "heading"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconAltText": { "alias": "iconAltText"; "required": false; }; "badgeContent": { "alias": "badgeContent"; "required": false; }; "badgeColor": { "alias": "badgeColor"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; }, { "closeTriggered": "closeTriggered"; }, never, ["*"], true, never>;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_closable: unknown;
}

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

interface SiTabDeselectionEvent {
    /**
     * The target tab
     */
    target: SiTabLegacyComponent;
    /**
     * The index of target tab
     */
    tabIndex: number;
    /**
     * To be called to prevent switching the tab
     */
    cancel: () => void;
}
/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
declare class SiTabsetLegacyComponent implements AfterViewInit, OnDestroy {
    /**
     * Contains the current tab components.
     */
    protected tabPanels: QueryList<SiTabLegacyComponent>;
    /**
     * Component variable to indicate if scrolling is necessary or the container is big enough to display all tabs.
     */
    protected scrollable: boolean;
    protected xPos: number;
    protected endArrowDisabled: boolean;
    protected focusedTabIndex?: number;
    protected readonly icons: Record<"elementCancel" | "elementLeft3" | "elementRight3", string>;
    /**
     * If selectDefaultTab is passed as 'false', this implies no default tab selection
     * i.e. on initial load of tabset component no tab gets selected.
     *
     * @defaultValue true
     */
    selectDefaultTab: boolean;
    /**
     * Sets a selected tab index. This will activate the tab of the provided
     * index, activates the tab and fires a notification about the change.
     * If index is passed as -1 i.e. `selectedTabIndex = -1`, this implies to clear all tab selection.
     * @defaultref {@link _selectedTabIndex}
     */
    set selectedTabIndex(tabIndex: number);
    /**
     * Returns the currently selected tab index.
     */
    get selectedTabIndex(): number;
    /** Define an optional max-width in px for the tab buttons. The minimum value is `100`. */
    tabButtonMaxWidth?: number;
    /**
     * Event emitter to notify about selected tab index changes. You can either
     * use bi-directional binding with [(selectedTabIndex)] or separate both with
     * [selectedTabIndex]=... and (selectedTabIndexChange)=...
     */
    readonly selectedTabIndexChange: EventEmitter<number>;
    /**
     * Event emitter to notify when a tab became inactive.
     */
    readonly deselect: EventEmitter<SiTabDeselectionEvent>;
    private initTabIndex;
    private initialized;
    private subscription?;
    private readonly tabContainer;
    private readonly innerTabContainer;
    private readonly tabs;
    private changeDetectorRef;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    notifyChildrenChanged(): void;
    protected isTabFocusable(index: number): boolean;
    protected focusNext(): void;
    protected focusPrevious(): void;
    protected resize(): void;
    /**
     * Finds the index of the provided tab and sets the index as new selected tab index
     *
     * @param selectedTab - The tab to be selected. This must already be part of the container.
     */
    protected selectTab(selectedTab: SiTabLegacyComponent): void;
    /**
     * Scrolls the tab headers to the end (right in LTR).
     */
    protected scrollEnd(): void;
    /**
     * Scrolls the tab headers to the start (left in LTR).
     */
    protected scrollStart(): void;
    private scroll;
    protected mouseScroll(event: WheelEvent): void;
    /** @internal */
    focus(index: number): void;
    /** @internal */
    blur(): void;
    protected closeTab(event: MouseEvent, tab: SiTabLegacyComponent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiTabsetLegacyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SiTabsetLegacyComponent, "si-tabset-legacy", never, { "selectDefaultTab": { "alias": "selectDefaultTab"; "required": false; }; "selectedTabIndex": { "alias": "selectedTabIndex"; "required": false; }; "tabButtonMaxWidth": { "alias": "tabButtonMaxWidth"; "required": false; }; }, { "selectedTabIndexChange": "selectedTabIndexChange"; "deselect": "deselect"; }, ["tabPanels"], ["*"], true, never>;
    static ngAcceptInputType_selectDefaultTab: unknown;
}

/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
declare class SiTabsLegacyModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiTabsLegacyModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SiTabsLegacyModule, never, [typeof SiTabsetLegacyComponent, typeof SiTabLegacyComponent], [typeof SiTabsetLegacyComponent, typeof SiTabLegacyComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SiTabsLegacyModule>;
}

export { SiTabLegacyComponent, SiTabsLegacyModule, SiTabsetLegacyComponent };
export type { SiTabDeselectionEvent };
