import * as _angular_core from '@angular/core';
import * as i2 from '@acorex/cdk/common';
import { MXInteractiveComponent, AXClickEvent, NXComponent } from '@acorex/cdk/common';
import * as i5 from '@angular/router';
import { UrlTree, IsActiveMatchOptions } from '@angular/router';
import * as i1 from '@angular/common';
import * as i3 from '@acorex/components/loading';
import * as i4 from '@acorex/core/translation';
import * as i6 from '@acorex/components/decorators';

declare class AXSideMenuItemClickEvent extends AXClickEvent {
    handled: boolean;
}
declare class AXSideMenuItemComponent extends MXInteractiveComponent {
    #private;
    text: _angular_core.ModelSignal<string>;
    active: _angular_core.ModelSignal<boolean>;
    isLoading: _angular_core.ModelSignal<boolean>;
    isCollapsed: _angular_core.ModelSignal<boolean>;
    onClick: _angular_core.OutputEmitterRef<AXSideMenuItemClickEvent>;
    private elem;
    readonly toggleOnClick: _angular_core.InputSignal<boolean>;
    readonly href: _angular_core.InputSignal<string>;
    readonly routerLink: _angular_core.InputSignal<string | any[] | UrlTree>;
    readonly routerLinkActive: _angular_core.InputSignal<string | string[]>;
    readonly routerLinkActiveOptions: _angular_core.InputSignal<{
        exact: boolean;
    } | IsActiveMatchOptions>;
    readonly target: _angular_core.InputSignal<"_blank" | "_self" | "_parent" | "_top">;
    protected hasChild: _angular_core.WritableSignal<boolean>;
    private checkForChildren;
    protected _handleClickEvent(e: MouseEvent): void;
    toggle(): void;
    open(): void;
    close(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSideMenuItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXSideMenuItemComponent, "ax-side-menu-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "isCollapsed": { "alias": "isCollapsed"; "required": false; "isSignal": true; }; "toggleOnClick": { "alias": "toggleOnClick"; "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; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, { "text": "textChange"; "active": "activeChange"; "isLoading": "isLoadingChange"; "isCollapsed": "isCollapsedChange"; "onClick": "onClick"; }, never, ["ax-title", "ax-side-menu-item, ng-container", "ax-divider", "ax-prefix", "ax-text", "*", "ax-suffix"], true, never>;
}

type AXSideMenuLook = 'pills' | 'with-line' | 'with-line-color' | 'default';
type AXSideMenuLocation = 'start' | 'end';
type AXSideMenuItem = {
    title?: string;
    routerLink?: string | any[] | UrlTree;
    routerLinkActive?: string | string[];
    routerLinkActiveOptions?: {
        exact: boolean;
    } | IsActiveMatchOptions;
    href?: string;
    target?: '_blank' | '_self' | '_parent' | '_top';
    text: string;
    active?: boolean;
    disabled?: boolean;
    isLoading?: boolean;
    isCollapsed?: boolean;
    icon?: string;
    data?: unknown;
    suffixText?: string;
    toggleOnClick?: boolean;
    items?: AXSideMenuItem[];
};
/**
 * @category
 * A component for displaying a side menu with customizable content.
 */
declare class AXSideMenuComponent extends NXComponent {
    items: _angular_core.ModelSignal<AXSideMenuItem[]>;
    readonly look: _angular_core.InputSignal<AXSideMenuLook>;
    readonly location: _angular_core.InputSignal<AXSideMenuLocation>;
    children: _angular_core.Signal<readonly AXSideMenuItemComponent[]>;
    /** @ignore */
    private get __hostClass();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSideMenuComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXSideMenuComponent, "ax-side-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "location": { "alias": "location"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; }, never, ["ax-side-menu-item,ax-title,ng-container,ng-content"], true, never>;
}

declare class AXOutlineSideMenuDirective {
    #private;
    private router;
    private unsubscriber;
    private sideMenu;
    private container;
    private updateSideMenu;
    /**
     * Creates a string signature that represents the tree structure of the menu.
     * Example: "href1(href1.1,href1.2),href2,href3"
     * This will be different for a flat list vs. a nested list.
     */
    private getStructuralSignature;
    private flattenMenuItems;
    private textReplace;
    private buildNestedMenuItems;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOutlineSideMenuDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXOutlineSideMenuDirective, "[axOutlineSideMenu]", ["axOutlineSideMenu"], {}, {}, never, never, true, never>;
}

declare class AXSideMenuModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSideMenuModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXSideMenuModule, never, [typeof i1.CommonModule, typeof i2.AXCommonModule, typeof i2.AXRippleDirective, typeof i3.AXLoadingModule, typeof i4.AXTranslationModule, typeof i5.RouterLink, typeof i5.RouterLinkActive, typeof i6.AXDecoratorModule, typeof AXSideMenuComponent, typeof AXSideMenuItemComponent, typeof AXOutlineSideMenuDirective], [typeof AXSideMenuComponent, typeof AXSideMenuItemComponent, typeof AXOutlineSideMenuDirective]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXSideMenuModule>;
}

export { AXOutlineSideMenuDirective, AXSideMenuComponent, AXSideMenuItemClickEvent, AXSideMenuItemComponent, AXSideMenuModule };
export type { AXSideMenuItem, AXSideMenuLocation, AXSideMenuLook };
