import * as i0 from '@angular/core';
import { TemplateRef, EventEmitter, AfterViewInit, AfterContentInit, OnDestroy } from '@angular/core';
import { MXInteractiveComponent, AXClickEvent, MXComponentOptionChanged, AXEvent, MXBaseComponent } from '@acorex/cdk/common';
import * as i1 from '@angular/common';
import * as i2 from '@angular/cdk/portal';
import * as i3 from '@acorex/components/decorators';

declare class AXTabContentDirective {
    private _viewContainerRef;
    private _portal;
    get portal(): TemplateRef<any> | undefined;
    set portal(v: TemplateRef<any> | undefined);
    static ɵfac: i0.ɵɵFactoryDeclaration<AXTabContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AXTabContentDirective, "[axTabContent]", ["axTabContent"], { "portal": { "alias": "axTabContent"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * @category
 *  Represents an individual tab item in a tab component.
 */
declare class AXTabItemComponent extends MXInteractiveComponent {
    /**
     * Defines the text content to be displayed within the component.
     */
    text: string;
    /**
     * Defines a unique identifier for the component instance.
     */
    key: string;
    template: TemplateRef<unknown>;
    /**
     * Defines a custom template for the component's header.
     */
    headerTemplate: TemplateRef<unknown>;
    /**
     * Emits an event when the `active` state of the component changes.
     * @event
     */
    activeChange: EventEmitter<boolean>;
    /**
     * Emits an event when the component is clicked.
     * @event
     */
    onClick: EventEmitter<AXClickEvent>;
    /** @ignore */
    private _active;
    /**
     * Gets or sets the component's active state, controlling its behavior and appearance.
     * @param value {boolean}
     */
    get active(): boolean;
    set active(value: boolean);
    /**
     * @ignore
     */
    private __hostClick;
    /**
     * @ignore
     */
    protected internalOptionChanged(option: MXComponentOptionChanged<any>): void;
    /**
     * Gets the component's position and size statistics.
     *
     * @returns object with width, height, left, and top properties
     */
    getStats(): {
        width: number;
        height: number;
        left: number;
        top: number;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<AXTabItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXTabItemComponent, "ax-tab-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "text": { "alias": "text"; "required": false; }; "key": { "alias": "key"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "active": { "alias": "active"; "required": false; }; }, { "disabledChange": "disabledChange"; "onClick": "onClick"; "onBlur": "onBlur"; "onFocus": "onFocus"; "activeChange": "activeChange"; }, never, ["ax-prefix", "ax-suffix", "ax-content"], true, never>;
}

declare class AXTabStripChangedEvent extends AXEvent {
    tab: AXTabItemComponent;
    index: number;
}
type AXTabLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color' | 'classic' | 'custom';
type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';

/**
 * @category
 * A component that serves as a container for tab items.
 */
declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {
    #private;
    private readonly renderer;
    /**
     * @ignore
     */
    private _contentTabs;
    /**
     * Sets the appearance style of the tab component.
     *  @defaultValue 'default'
     */
    look: i0.InputSignal<AXTabLook>;
    /**
     * Specifies the position of the tab component.
     * @defaultValue 'bottom'
     */
    location: i0.InputSignal<AXTabLocation>;
    /**
     * @defaultValue 'false'
     * Specifies whether the component should resize to fit its parent container.
     */
    fitParent: boolean;
    /**
     * @defaultValue 'false'
     * Applies a minimum width constraint to the component.
     */
    minWidth: boolean;
    /**
     * The `AXTabContentDirective` associated with the tab.
     */
    content: AXTabContentDirective;
    private indicator;
    private zone;
    private platformId;
    /** @ignore */
    private _isUserInteraction;
    get items(): AXTabItemComponent[];
    /** @ignore */
    private _selectedItem;
    /** @ignore */
    get selectedIndex(): number;
    /** @ignore */
    get selectedItem(): AXTabItemComponent;
    private changes;
    private activeTab;
    /**
     * @event
     */
    onActiveTabChanged: EventEmitter<AXTabStripChangedEvent>;
    /** @ignore */
    private get __hostClass();
    /** @ignore */
    ngAfterContentInit(): void;
    /** @ignore */
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /** @ignore */
    private _bindOnClickEvent;
    /**
     * Activates the specified tab and updates the content.
     *
     * @param tab - The tab to select, either by index (number) or by component instance
     */
    select(tab: number | AXTabItemComponent): void;
    private setIndicatorPosition;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXTabsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXTabsComponent, "ax-tabs", never, { "look": { "alias": "look"; "required": false; "isSignal": true; }; "location": { "alias": "location"; "required": false; "isSignal": true; }; "fitParent": { "alias": "fitParent"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, { "onActiveTabChanged": "onActiveTabChanged"; }, ["_contentTabs"], ["ax-tab-item"], true, never>;
}

declare class AXTabsModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXTabsModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXTabsModule, never, [typeof i1.CommonModule, typeof i2.PortalModule, typeof i3.AXDecoratorModule, typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective], [typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXTabsModule>;
}

export { AXTabContentDirective, AXTabItemComponent, AXTabStripChangedEvent, AXTabsComponent, AXTabsModule };
export type { AXTabLocation, AXTabLook };
