import * as _angular_core from '@angular/core';
import { OnDestroy, TemplateRef, OnInit, ElementRef, Injector } from '@angular/core';
import { TranslatableString } from '@siemens/element-translate-ng/translate-types';
import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { OverlayArrowPosition } from '@siemens/element-ng/common';

declare class SiPopoverDirective implements OnDestroy {
    private static idCounter;
    /**
     * The popover text to be displayed
     */
    readonly siPopover: _angular_core.InputSignal<TranslatableString | TemplateRef<unknown> | undefined>;
    /**
     * The placement of the popover. One of 'top', 'start', end', 'bottom'
     *
     * @defaultValue 'auto'
     */
    readonly placement: _angular_core.InputSignal<"auto" | "start" | "end" | "top" | "bottom">;
    readonly placementInternal: _angular_core.Signal<"auto" | "start" | "end" | "top" | "bottom">;
    /**
     * The title to be displayed on top for the popover
     *
     * @defaultValue undefined
     */
    readonly title: _angular_core.InputSignal<TranslatableString | undefined>;
    /**
     * The class that will be applied to container of the popover
     *
     * @defaultValue ''
     */
    readonly containerClass: _angular_core.InputSignal<string>;
    /**
     * The icon to be displayed besides popover title
     *
     * @defaultValue undefined
     */
    readonly icon: _angular_core.InputSignal<string | undefined>;
    /**
     * The context for the attached template
     *
     * @defaultValue undefined
     */
    readonly context: _angular_core.InputSignal<unknown>;
    /**
     * Emits an event when the popover is shown/hidden
     */
    readonly visibilityChange: _angular_core.OutputEmitterRef<void>;
    /** @internal */
    readonly popoverCounter: number;
    /** @internal */
    readonly popoverId: string;
    /** @internal */
    protected readonly isOpen: _angular_core.WritableSignal<boolean>;
    private overlayref?;
    private overlay;
    private elementRef;
    private destroyer;
    ngOnDestroy(): void;
    /**
     * Displays popover and emits 'shown' event.
     */
    show(): void;
    /**
     * Hides the popover and emits 'hidden' event.
     */
    hide(): void;
    /**
     * Updates the position of the popover based on the position strategy.
     */
    updatePosition(): void;
    protected onClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiPopoverDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiPopoverDirective, "[siPopover]", ["si-popover"], { "siPopover": { "alias": "siPopover"; "required": false; "isSignal": true; }; "placement": { "alias": "siPopoverPlacement"; "required": false; "isSignal": true; }; "title": { "alias": "siPopoverTitle"; "required": false; "isSignal": true; }; "containerClass": { "alias": "siPopoverContainerClass"; "required": false; "isSignal": true; }; "icon": { "alias": "siPopoverIcon"; "required": false; "isSignal": true; }; "context": { "alias": "siPopoverContext"; "required": false; "isSignal": true; }; }, { "visibilityChange": "siPopoverVisibilityChange"; }, never, never, true, never>;
}

declare class PopoverComponent implements OnInit, OnDestroy {
    readonly popoverDirective: _angular_core.InputSignal<SiPopoverDirective>;
    readonly popoverWrapper: _angular_core.Signal<ElementRef<any>>;
    /** @internal */
    labelledBy: string | undefined;
    /** @internal */
    describedBy: string | undefined;
    protected readonly positionClass: _angular_core.WritableSignal<string>;
    protected readonly arrowPos: _angular_core.WritableSignal<OverlayArrowPosition | undefined>;
    protected readonly description: _angular_core.Signal<_siemens_element_translate_ng_translate.TranslatableString | undefined>;
    protected popoverTemplate: TemplateRef<any> | null;
    protected injector: Injector;
    private elementRef;
    private focusTrapFactory;
    private focusTrap?;
    private readonly previouslyActiveElement;
    ngOnInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    updateArrow(change: ConnectedOverlayPositionChange, anchor?: ElementRef): void;
    hide(): void;
    private applyFocus;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "si-popover", never, { "popoverDirective": { "alias": "popoverDirective"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SiPopoverTitleDirective {
    readonly popover: PopoverComponent;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiPopoverTitleDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiPopoverTitleDirective, "si-popover-title", never, {}, {}, never, never, true, never>;
}

declare class SiPopoverBodyDirective {
    readonly popover: PopoverComponent;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiPopoverBodyDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiPopoverBodyDirective, "si-popover-body", never, {}, {}, never, never, true, never>;
}

export { SiPopoverBodyDirective, SiPopoverDirective, SiPopoverTitleDirective };
