import * as i0 from '@angular/core';
import { OnInit, OnDestroy, ElementRef, AfterViewInit, TemplateRef, EnvironmentProviders } from '@angular/core';
import { IStepOption, TourAnchorDirective, TourService, TourHotkeyListenerComponent, BaseTourProxyAnchor } from 'ngx-ui-tour-core';
export { Direction, StepChangeParams, StepDimensions, TourState, UI_TOUR_OPTIONS } from 'ngx-ui-tour-core';
import { Subscription } from 'rxjs';
import { MatMenuTrigger, MenuPositionX, MenuPositionY, MatMenu } from '@angular/material/menu';

declare class TourAnchorOpenerComponent {
    readonly trigger: i0.Signal<MatMenuTrigger>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TourAnchorOpenerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TourAnchorOpenerComponent, "tour-anchor-opener", never, {}, {}, never, never, true, never>;
}

interface IMdStepOption extends IStepOption {
    placement?: MdMenuPlacement;
    closeOnOutsideClick?: boolean;
    showArrow?: boolean;
}
interface MdMenuPlacement {
    xPosition?: MenuPositionX;
    yPosition?: MenuPositionY;
    /**
     * Enable to position popover horizontally instead of vertically
     */
    horizontal?: boolean;
}

declare class TourAnchorMatMenuDirective implements OnInit, OnDestroy, TourAnchorDirective {
    readonly tourAnchor: i0.InputSignal<string>;
    opener: TourAnchorOpenerComponent;
    menuCloseSubscription: Subscription;
    isActive: i0.WritableSignal<boolean>;
    readonly element: ElementRef<any>;
    private readonly viewContainer;
    private readonly tourService;
    private readonly tourStepTemplate;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private createOpener;
    showTourStep(step: IMdStepOption): void;
    private setPosition;
    hideTourStep(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TourAnchorMatMenuDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TourAnchorMatMenuDirective, "[tourAnchor]", never, { "tourAnchor": { "alias": "tourAnchor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class NgxmTourService<T extends IMdStepOption = IMdStepOption> extends TourService<T> {
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxmTourService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxmTourService<any>>;
}

declare class TourStepTemplateComponent extends TourHotkeyListenerComponent implements AfterViewInit {
    readonly tourStep: i0.Signal<MatMenu>;
    readonly stepTemplate: i0.InputSignal<TemplateRef<{
        step: IMdStepOption;
    }>>;
    readonly stepTemplateContent: i0.Signal<TemplateRef<any>>;
    step: IMdStepOption;
    protected tourService: NgxmTourService<IMdStepOption>;
    private tourStepTemplateService;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TourStepTemplateComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TourStepTemplateComponent, "tour-step-template", never, { "stepTemplate": { "alias": "stepTemplate"; "required": false; "isSignal": true; }; }, {}, ["stepTemplateContent"], never, true, never>;
}

declare class TourProxyAnchorComponent extends BaseTourProxyAnchor {
    protected readonly anchorDirective: TourAnchorMatMenuDirective;
    readonly anchorEl: i0.InputSignal<string | HTMLElement>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TourProxyAnchorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TourProxyAnchorComponent, "tour-proxy-anchor", never, { "anchorEl": { "alias": "anchorEl"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof TourAnchorMatMenuDirective; inputs: { "tourAnchor": "anchorId"; }; outputs: {}; }]>;
}

declare const TourMatMenu: readonly [typeof TourAnchorMatMenuDirective, typeof TourStepTemplateComponent, typeof TourProxyAnchorComponent];

declare function provideUiTour(config?: IMdStepOption): EnvironmentProviders;

export { TourAnchorMatMenuDirective, TourMatMenu, TourProxyAnchorComponent, NgxmTourService as TourService, TourStepTemplateComponent, provideUiTour };
export type { IMdStepOption as IStepOption, MdMenuPlacement };
