import * as _ionic_core from '@ionic/core';
import * as i0 from '@angular/core';
import { AfterViewInit, TemplateRef, OnInit, OnDestroy, ElementRef, EnvironmentProviders } from '@angular/core';
import { IStepOption, TourService, TourHotkeyListenerComponent, TourAnchorDirective, BaseTourProxyAnchor } from 'ngx-ui-tour-core';
export { Direction, StepChangeParams, StepDimensions, TourState, UI_TOUR_OPTIONS } from 'ngx-ui-tour-core';
import { IonPopover } from '@ionic/angular/standalone';

interface IonStepOption extends IStepOption {
    placement?: IonPopoverPlacement;
    showArrow?: boolean;
    trapFocus?: boolean;
}
interface IonPopoverPlacement {
    alignment?: 'center' | 'end' | 'start';
    side?: 'bottom' | 'end' | 'left' | 'right' | 'start' | 'top';
}

declare class IonTourService<T extends IonStepOption = IonStepOption> extends TourService<T> {
    private readonly document;
    protected showStep(step: T): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<IonTourService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<IonTourService<any>>;
}

declare class TourStepTemplateComponent extends TourHotkeyListenerComponent implements AfterViewInit {
    readonly ionPopover: i0.Signal<IonPopover>;
    readonly stepTemplate: i0.InputSignal<TemplateRef<{
        step: IonStepOption;
    }>>;
    readonly stepTemplateContent: i0.Signal<TemplateRef<any>>;
    step: i0.WritableSignal<IonStepOption>;
    noopLeaveAnimation: () => _ionic_core.Animation;
    protected readonly tourService: IonTourService<IonStepOption>;
    private readonly 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 TourAnchorIonPopoverDirective implements OnInit, OnDestroy, TourAnchorDirective {
    readonly tourAnchor: i0.InputSignal<string>;
    isActive: i0.WritableSignal<boolean>;
    readonly element: ElementRef<any>;
    private readonly tourService;
    private readonly stepTemplateService;
    ngOnInit(): void;
    ngOnDestroy(): void;
    showTourStep(step: IonStepOption): Promise<void>;
    hideTourStep(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TourAnchorIonPopoverDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TourAnchorIonPopoverDirective, "[tourAnchor]", never, { "tourAnchor": { "alias": "tourAnchor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class TourProxyAnchorComponent extends BaseTourProxyAnchor {
    protected readonly anchorDirective: TourAnchorIonPopoverDirective;
    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 TourAnchorIonPopoverDirective; inputs: { "tourAnchor": "anchorId"; }; outputs: {}; }]>;
}

declare const TourIonPopover: readonly [typeof TourStepTemplateComponent, typeof TourAnchorIonPopoverDirective, typeof TourProxyAnchorComponent];

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

export { TourAnchorIonPopoverDirective, TourIonPopover, TourProxyAnchorComponent, IonTourService as TourService, TourStepTemplateComponent, provideUiTour };
export type { IonStepOption as IStepOption, IonPopoverPlacement };
