import * as _angular_core from '@angular/core';
import { AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
import { MXBaseComponent } from '@acorex/cdk/common';
import { UrlTree, IsActiveMatchOptions } from '@angular/router';
import * as rxjs from 'rxjs';

type AXRailLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color';
type AXRailLocation = 'start' | 'end';
type AXRailClickEvent = {
    component: AXRailNavigationItemComponent;
    htmlElement: HTMLElement;
    nativeEvent: MouseEvent;
};

declare class AXRailNavigationItemComponent extends MXBaseComponent implements AfterViewInit, OnDestroy {
    private railNavigationService;
    private platformId;
    onClick: _angular_core.OutputEmitterRef<AXRailClickEvent>;
    active: _angular_core.ModelSignal<boolean>;
    disabled: _angular_core.ModelSignal<boolean>;
    href: _angular_core.InputSignal<string>;
    routerLink: _angular_core.InputSignal<string | any[] | UrlTree>;
    routerLinkActive: _angular_core.InputSignal<string | string[]>;
    target: _angular_core.InputSignal<"_blank" | "_self" | "_parent" | "_top">;
    routerLinkActiveOptions: _angular_core.InputSignal<{
        exact: boolean;
    } | IsActiveMatchOptions>;
    itemContainer: _angular_core.Signal<ElementRef<HTMLElement>>;
    private observer;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    handleClickEvent(e: MouseEvent): void;
    /**
     * Gets the height and top position of the item.
     * @returns Object containing height and top position
     */
    getStats(): {
        height: number;
        top: number;
    };
    private checkActive;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRailNavigationItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXRailNavigationItemComponent, "ax-rail-navigation-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; "active": "activeChange"; "disabled": "disabledChange"; }, never, ["ax-prefix", "ax-icon", "ax-text", "ng-container,ng-content", "ax-suffix"], true, never>;
}

declare class AXRailNavigationComponent extends MXBaseComponent {
    #private;
    private railNavigationService;
    private indicator;
    railNavItems: _angular_core.Signal<readonly AXRailNavigationItemComponent[]>;
    location: _angular_core.InputSignal<AXRailLocation>;
    look: _angular_core.InputSignal<AXRailLook>;
    private activeTab;
    constructor();
    private setIndicatorPosition;
    private get __hostClass();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRailNavigationComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXRailNavigationComponent, "ax-rail-navigation", never, { "location": { "alias": "location"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, {}, ["railNavItems"], ["ax-prefix, ax-header", "ax-rail-navigation-item, ng-container, ng-content", "ax-suffix, ax-footer"], true, never>;
}

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

declare class AXRailNavigationService {
    private activeItem;
    /**
     * Observable that emits the currently active rail navigation item.
     */
    activeItem$: rxjs.Observable<AXRailNavigationItemComponent>;
    /**
     * Sets the specified item as the active rail navigation item.
     * @param item - The rail navigation item to set as active
     */
    setActive(item: AXRailNavigationItemComponent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRailNavigationService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXRailNavigationService>;
}

export { AXRailNavigationComponent, AXRailNavigationItemComponent, AXRailNavigationModule, AXRailNavigationService };
export type { AXRailClickEvent, AXRailLocation, AXRailLook };
