import * as _angular_core from '@angular/core';
import { MTIcon } from '@masterteam/icons';

type TabSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'warning' | 'danger' | 'error' | 'help' | 'contrast';
interface OptionItem {
    label?: string;
    value?: any;
    icon?: MTIcon | null;
    badge?: number | string | null;
    severity?: TabSeverity | null;
    disabled?: boolean;
    [key: string]: unknown;
}
type NormalizedTabSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'help' | 'contrast';
declare class Tabs {
    private readonly transloco;
    options: _angular_core.InputSignal<OptionItem[]>;
    optionLabel: _angular_core.InputSignal<string>;
    optionValue: _angular_core.InputSignal<string>;
    active: _angular_core.ModelSignal<any>;
    readonly mode: _angular_core.InputSignal<"horizontal" | "vertical" | "underline">;
    readonly moreLabel: _angular_core.InputSignal<string>;
    readonly defaultIcon: _angular_core.InputSignal<MTIcon>;
    onChange: _angular_core.OutputEmitterRef<any>;
    readonly size: _angular_core.InputSignal<"small" | "large" | undefined>;
    readonly fluid: _angular_core.InputSignalWithTransform<boolean, unknown>;
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    private readonly destroyRef;
    private readonly tabsContainer;
    private readonly measureRow;
    private readonly morePopover;
    private resizeObserver?;
    private measureHandle;
    private alignHandle;
    readonly visibleCount: _angular_core.WritableSignal<number>;
    readonly visibleOptions: _angular_core.Signal<OptionItem[]>;
    readonly overflowOptions: _angular_core.Signal<OptionItem[]>;
    readonly hasOverflow: _angular_core.Signal<boolean>;
    readonly isActiveInOverflow: _angular_core.Signal<boolean>;
    readonly searchThreshold: _angular_core.InputSignal<number>;
    readonly searchTerm: _angular_core.WritableSignal<string>;
    readonly showOverflowSearch: _angular_core.Signal<boolean>;
    readonly filteredOverflowOptions: _angular_core.Signal<OptionItem[]>;
    constructor();
    private setupResizeObserver;
    private scheduleMeasure;
    private measureAndUpdate;
    onTabChange(value: any): void;
    onOverflowSearch(value: string): void;
    private scheduleOverflowAlign;
    onOverflowPopoverHide(): void;
    onOptionSelect(option: OptionItem): void;
    resolveLabel(option: OptionItem): string;
    resolveValue(option: OptionItem): unknown;
    resolveIcon(option: OptionItem): MTIcon | null;
    resolveIconOrDefault(option: OptionItem): MTIcon;
    resolveBadge(option: OptionItem): number | string | null;
    hasBadge(option: OptionItem): boolean;
    hasCountBadge(option: OptionItem): boolean;
    severity(option: OptionItem): NormalizedTabSeverity;
    isSeverity(option: OptionItem, severity: NormalizedTabSeverity): boolean;
    hasNonPrimarySeverity(option: OptionItem): boolean;
    isActiveOption(option: OptionItem): boolean;
    isOptionDisabled(option: OptionItem): boolean;
    trackOption(option: OptionItem, index: number): unknown;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tabs, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "mt-tabs", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; "defaultIcon": { "alias": "defaultIcon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fluid": { "alias": "fluid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchThreshold": { "alias": "searchThreshold"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "onChange": "onChange"; }, never, never, true, never>;
}

export { Tabs };
export type { OptionItem, TabSeverity };
