import * as i0 from '@angular/core';
import { AfterViewInit, Renderer2, ElementRef, EventEmitter, ChangeDetectorRef, OnChanges, OnInit, TemplateRef, ComponentRef, ComponentFactoryResolver, ApplicationRef, Injector, SimpleChanges, ModuleWithProviders } from '@angular/core';
import { MatMenuTrigger } from '@angular/material/menu';

interface PopmenuOptions {
    animationDuration?: number;
    apPopmenuBorder?: boolean;
    apPopmenuDisabled?: boolean;
    apPopmenuBackground?: boolean;
    arrow?: boolean;
    arrowPosition?: boolean;
    arrowOffset?: number;
    hasBackdrop?: boolean;
    backdropClass?: string;
    panelClass?: string;
    placement?: string;
    rounded?: boolean;
    delay?: number;
    display?: boolean;
    displayTouchscreen?: boolean;
    'show-delay'?: number;
    'hide-delay'?: number;
    showDelay?: number;
    hideDelay?: number;
    trigger?: string;
    shadow?: boolean;
    theme?: string;
    /**
     * @deprecated use offsets (with an S at the end) instead
     */
    offset?: number;
    /**
     * Allow to customize the position of the popmenu from the target
     *
     * Skidding: displaces the popper along the reference element.
     *
     * Distance: displaces the popper away from, or toward, the reference element in the direction of its placement.
     * A positive number displaces it further away, while a negative number lets it overlap the reference.
     *
     * See popper.js documentation for more explanation about skidding and distance: https://popper.js.org/docs/v2/modifiers/offset/
     */
    offsets?: {
        distance?: number;
        skidding?: number;
    };
    width?: number;
    'max-width'?: number;
    position?: {
        top: number;
        left: number;
    };
}

declare class PopmenuComponent implements AfterViewInit {
    renderer: Renderer2;
    elementRef: ElementRef<HTMLElement>;
    private changeDetectorRef;
    data: any;
    events: EventEmitter<any>;
    arrowTopPosition: string | undefined;
    arrowBottomPosition: string | undefined;
    arrowLeftPosition: string | undefined;
    arrowRightPosition: string | undefined;
    arrowClass: string | undefined;
    below: boolean;
    before: boolean;
    menuClosed: EventEmitter<any>;
    menuOpened: EventEmitter<any>;
    trigger: MatMenuTrigger;
    hostStyleTop: string;
    hostStyleBorderRadius: string;
    hostStyleLeft: string;
    hostStyleZIndex: number;
    hostStyleTransition: string;
    hostStyleWidth: string;
    hostStyleMaxWidth: string;
    hostStylePointerEvents: string;
    hostClassShow: boolean;
    hostClassShadow: boolean;
    hostClassLight: boolean;
    viewInit: boolean;
    _show: boolean;
    get show(): boolean;
    set show(value: boolean);
    set close(value: boolean);
    menuOpen: boolean;
    get arrow(): any;
    get arrowOffset(): any;
    get arrowPosition(): any;
    get autoPlacement(): any;
    get background(): any;
    get border(): any;
    get element(): any;
    get elementPosition(): any;
    get hasBackdrop(): any;
    get backdropClass(): any;
    get isThemeLight(): boolean;
    get options(): any;
    get panelClass(): any;
    get placement(): any;
    get rounded(): any;
    get shadow(): any;
    get tooltipOffset(): number;
    get offsetSkidding(): number;
    get offsetDistance(): number;
    get value(): any;
    constructor(renderer: Renderer2, elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef);
    ngAfterViewInit(): void;
    onMenuClosed(): void;
    onMenuOpened(): void;
    setHostStyle(placement: string): boolean;
    setPlacementClass(placement?: string): void;
    setPosition(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PopmenuComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PopmenuComponent, "ap-popmenu", never, { "data": { "alias": "data"; "required": false; }; "show": { "alias": "show"; "required": false; }; "close": { "alias": "close"; "required": false; }; }, { "menuClosed": "menuClosed"; "menuOpened": "menuOpened"; }, never, never, true, never>;
}

interface AdComponent {
    data: any;
    show: boolean;
    close: boolean;
    menuClosed: any;
    menuOpened: any;
    menuOpen: boolean;
}
type PopmenuPlacement = 'bottom' | 'top' | 'left' | 'right' | 'bottom right' | 'bottom left' | 'right bottom' | 'left bottom' | 'top right' | 'top left' | 'right top' | 'left top';
type PopmenuArrowPosition = 'left' | 'right' | 'top' | 'bottom';
/**
 * @deprecated This directive is deprecated and will be removed in future versions.
 * Use `ActionDropdownComponent` instead.
 */
declare class PopmenuDirective implements OnChanges, OnInit {
    #private;
    private initOptions;
    renderer: Renderer2;
    private elementRef;
    private componentFactoryResolver;
    private appRef;
    private injector;
    apPopmenuBorder: boolean;
    apPopmenuDisabled: boolean;
    apPopmenuBackground: boolean;
    arrow: boolean;
    arrowOffset: number | undefined;
    arrowPosition: PopmenuArrowPosition | string | undefined;
    close: boolean;
    hasBackdrop: boolean;
    backdropClass: string;
    panelClass: string | undefined;
    offset: number | undefined;
    offsets: {
        distance?: number;
        skidding?: number;
    } | undefined;
    placement: PopmenuPlacement | string;
    pointer: boolean;
    popMenuValue: TemplateRef<any>;
    position: {
        top: number;
        left: number;
    } | undefined;
    rounded: boolean;
    shadow: boolean;
    menuClosed: EventEmitter<void>;
    menuOpened: EventEmitter<void>;
    componentElement: HTMLElement;
    hideTimeoutId: number | undefined;
    destroyTimeoutId: number | undefined;
    createTimeoutId: number | undefined;
    showTimeoutId: number | undefined;
    componentRef: ComponentRef<any>;
    elementPosition: any;
    componentSubscribe: any;
    _defaultOptions: any;
    _options: PopmenuOptions;
    get options(): PopmenuOptions;
    set options(value: PopmenuOptions);
    get destroyDelay(): number;
    get isDisplayOnHover(): boolean;
    get isTooltipDestroyed(): boolean;
    get tooltipPosition(): any;
    constructor(initOptions: PopmenuOptions, renderer: Renderer2, elementRef: ElementRef, componentFactoryResolver: ComponentFactoryResolver, appRef: ApplicationRef, injector: Injector);
    appendComponentToBody(component: any): void;
    menuOpenChange: EventEmitter<boolean>;
    get menuOpen(): boolean;
    set menuOpen(menuOpen: boolean);
    handleClose(): void;
    handleOpen(): void;
    applyOptionsDefault(defaultOptions: PopmenuOptions, options: PopmenuOptions): void;
    clearTimeouts(): void;
    createPopMenu(): void;
    getElementPosition(): void;
    getHideDelay(): number | undefined;
    getProperties(changes: SimpleChanges): any;
    getShowDelay(): number | undefined;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    onClick(): void;
    show(): void;
    showTooltipElem(): void;
    hideTooltipElem(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PopmenuDirective, [{ optional: true; }, null, null, null, null, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PopmenuDirective, "[apPopmenu]", never, { "apPopmenuBorder": { "alias": "apPopmenuBorder"; "required": false; }; "apPopmenuDisabled": { "alias": "apPopmenuDisabled"; "required": false; }; "apPopmenuBackground": { "alias": "apPopmenuBackground"; "required": false; }; "arrow": { "alias": "arrow"; "required": false; }; "arrowOffset": { "alias": "arrowOffset"; "required": false; }; "arrowPosition": { "alias": "arrowPosition"; "required": false; }; "close": { "alias": "close"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "offsets": { "alias": "offsets"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "pointer": { "alias": "pointer"; "required": false; }; "popMenuValue": { "alias": "apPopmenu"; "required": false; }; "position": { "alias": "position"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "shadow": { "alias": "shadow"; "required": false; }; "options": { "alias": "options"; "required": false; }; "menuOpen": { "alias": "menuOpen"; "required": false; }; }, { "menuClosed": "menuClosed"; "menuOpened": "menuOpened"; "menuOpenChange": "menuOpenChange"; }, never, never, true, never>;
}

declare class PopmenuModule {
    static forRoot(initOptions: PopmenuOptions): ModuleWithProviders<PopmenuModule>;
    static ɵfac: i0.ɵɵFactoryDeclaration<PopmenuModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PopmenuModule, never, [typeof PopmenuDirective, typeof PopmenuComponent], [typeof PopmenuDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PopmenuModule>;
}

export { PopmenuComponent, PopmenuDirective, PopmenuModule };
export type { AdComponent, PopmenuArrowPosition, PopmenuOptions, PopmenuPlacement };
