import * as _angular_core from '@angular/core';
import { TemplateRef } from '@angular/core';
import { BadgeColor } from '@agorapulse/ui-components/badge';
import { DropdownOverlay } from '@agorapulse/ui-components/dropdown-base';
import { agorapulseSymbol, SymbolColor } from '@agorapulse/ui-symbol';

interface ActionDropdownItem {
    /** Unique identifier for the item */
    name?: string;
    /** Display text for the item */
    label?: string;
    /** Secondary text displayed below the label */
    description?: string;
    /** Text displayed in a badge next to the item */
    badgeLabel?: string;
    /** Color of the badge displayed next to the item */
    badgeColor?: BadgeColor;
    /** Whether to show a feature lock icon */
    featureLockEnabled?: boolean;
    /** Whether to apply red styling for destructive actions */
    redModeEnabled?: boolean;
    /** Tooltip text displayed when hovering over the item */
    itemTooltipText?: string;
    /** Icon symbol identifier displayed at the start of the item */
    startSymbolId?: agorapulseSymbol;
    /** Color theme for the start symbol */
    startSymbolColor?: SymbolColor;
    /** Tooltip text for the start symbol */
    startSymbolTooltipText?: string;
    /** Icon symbol identifier displayed at the end of the item */
    endSymbolId?: agorapulseSymbol;
    /** Tooltip text for the end symbol */
    endSymbolTooltipText?: string;
    /** Whether the item is disabled and non-interactive */
    disabled?: boolean;
    /** Whether to add a divider before this item */
    dividerEnabled?: boolean;
    /** Optional ID for the action button item */
    id?: string;
    /** Optional data-track attribute for analytics tracking */
    dataTrack?: string;
}
/**
 * A dropdown component that displays a list of actionable items with support for icons,
 * badges, tooltips, and keyboard navigation.
 */
declare class ActionDropdownComponent implements DropdownOverlay {
    private readonly symbolRegistry;
    private readonly overlay;
    actionDropdownTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
    trigger: _angular_core.Signal<TemplateRef<unknown> | undefined>;
    /** Array of items to display in the dropdown menu */
    items: _angular_core.InputSignal<ActionDropdownItem[]>;
    /** Whether to enable large mode styling for the dropdown */
    largeModeEnabled: _angular_core.InputSignal<boolean>;
    /** Custom width for the dropdown menu in pixels */
    customWidth: _angular_core.InputSignal<number | null>;
    /** Whether to show a backdrop that closes the dropdown when clicked */
    showBackdrop: _angular_core.InputSignal<boolean>;
    /** Whether the dropdown is disabled and cannot be opened */
    disabled: _angular_core.InputSignal<boolean>;
    /** Default position for the dropdown relative to the trigger element */
    defaultPosition: _angular_core.InputSignal<"left" | "right">;
    /** Emits when the dropdown menu is opened */
    opened: _angular_core.OutputEmitterRef<void>;
    /** Emits when the dropdown menu is closed */
    closed: _angular_core.OutputEmitterRef<void>;
    /** Emits when a dropdown item is clicked */
    itemClick: _angular_core.OutputEmitterRef<ActionDropdownItem>;
    protected readonly focusedIndex: _angular_core.WritableSignal<number>;
    readonly isOpen: _angular_core.Signal<boolean>;
    constructor();
    /** Opens the dropdown menu at the specified trigger element */
    open(triggerElement?: HTMLElement): void;
    /** Closes the dropdown menu and cleans up overlay resources */
    close(): void;
    /** Toggles the dropdown menu open or closed state */
    toggle(triggerElement?: HTMLElement): void;
    /** Handles item click events, emitting the selected item and closing the dropdown */
    onItemClick(item: ActionDropdownItem): void;
    /** Handles keyboard navigation within the dropdown menu */
    onKeyDown(event: KeyboardEvent): void;
    /** Sets up keyboard event handling for the opened dropdown */
    private setupKeyboardNavigation;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionDropdownComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionDropdownComponent, "ap-action-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "largeModeEnabled": { "alias": "largeModeEnabled"; "required": false; "isSignal": true; }; "customWidth": { "alias": "customWidth"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultPosition": { "alias": "defaultPosition"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "itemClick": "itemClick"; }, ["trigger"], never, true, never>;
}

/**
 * Directive that turns any element into a trigger for an ActionDropdown component.
 * Handles click and keyboard interactions to open/close the dropdown.
 */
declare class ActionDropdownTriggerDirective {
    private readonly elementRef;
    /** Reference to the ActionDropdown component that this trigger controls */
    apActionDropdownTrigger: _angular_core.InputSignal<ActionDropdownComponent | undefined>;
    /** Handles click events to toggle the dropdown */
    onClick(event: MouseEvent): void;
    /** Handles keyboard events for accessibility (Enter, Space, Arrow Down, Escape) */
    onKeyDown(event: KeyboardEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionDropdownTriggerDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ActionDropdownTriggerDirective, "[apActionDropdownTrigger]", never, { "apActionDropdownTrigger": { "alias": "apActionDropdownTrigger"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { ActionDropdownComponent, ActionDropdownTriggerDirective };
export type { ActionDropdownItem };
