import * as _angular_core from '@angular/core';
import { AfterContentInit, ElementRef } from '@angular/core';
import { ZIcon, ZIconVariants } from '@shival99/z-ui/components/z-icon';
import { ZPopoverPosition } from '@shival99/z-ui/components/z-popover';

interface ZDropdownMenuItem {
    label: string;
    icon?: ZIcon;
    iconSize?: ZIconVariants['zSize'];
    shortcut?: string;
    class?: string;
    disabled?: boolean;
    hidden?: boolean;
    onClick?: () => void;
    divide?: 'before' | 'after';
    submenu?: ZDropdownMenuItem[];
    submenuPosition?: ZPopoverPosition;
    subMinWidth?: number;
    subMaxWidth?: number;
}

declare class ZDropdownMenuComponent implements AfterContentInit {
    protected readonly contentWrapper: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
    readonly zOnItemClick: _angular_core.OutputEmitterRef<ZDropdownMenuItem>;
    readonly zItems: _angular_core.InputSignal<ZDropdownMenuItem[]>;
    readonly zLabel: _angular_core.InputSignal<string | undefined>;
    readonly zIcon: _angular_core.InputSignal<ZIcon>;
    readonly zButtonType: _angular_core.InputSignal<"primary" | "secondary" | "outline" | "ghost">;
    readonly zPosition: _angular_core.InputSignal<ZPopoverPosition>;
    readonly zButtonSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "xl" | null | undefined>;
    readonly zOffset: _angular_core.InputSignal<number>;
    readonly zMinWidth: _angular_core.InputSignal<number>;
    readonly zMaxWidth: _angular_core.InputSignal<number>;
    readonly zDisabled: _angular_core.InputSignal<boolean>;
    protected readonly hasContent: _angular_core.WritableSignal<boolean>;
    protected readonly popoverControl: _angular_core.WritableSignal<{
        close: () => void;
        closeImmediate: () => void;
    } | null>;
    protected readonly visibleItems: _angular_core.Signal<ZDropdownMenuItem[]>;
    ngAfterContentInit(): void;
    protected onItemClick(item: ZDropdownMenuItem): void;
    protected onControl(control: {
        close: () => void;
        closeImmediate: () => void;
    }): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZDropdownMenuComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZDropdownMenuComponent, "z-dropdown-menu", never, { "zItems": { "alias": "zItems"; "required": true; "isSignal": true; }; "zLabel": { "alias": "zLabel"; "required": false; "isSignal": true; }; "zIcon": { "alias": "zIcon"; "required": false; "isSignal": true; }; "zButtonType": { "alias": "zButtonType"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zButtonSize": { "alias": "zButtonSize"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zMinWidth": { "alias": "zMinWidth"; "required": false; "isSignal": true; }; "zMaxWidth": { "alias": "zMaxWidth"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; }, { "zOnItemClick": "zOnItemClick"; }, never, ["*"], true, never>;
}

export { ZDropdownMenuComponent };
export type { ZDropdownMenuItem };
