import { type IEventDetail, type IEventEmitter } from '@breadstone/mosaik-elements';
import { OverlayElement } from '../Abstracts/OverlayElement';
import type { ITourElementProps } from './ITourElementProps';
import type { ITourStep } from './ITourStep';
import type { ITourStepChangedEventDetail } from './ITourStepChangedEventDetail';
declare const TourElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & typeof OverlayElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Tour - Guides users through a sequence of steps anchored to UI elements.
 *
 * @name TourElement
 * @element mosaik-tour
 * @category Overlays
 *
 * @public
 */
export declare class TourElement extends TourElement_base implements ITourElementProps {
    private static readonly POSITION_OFFSET;
    private static readonly VIEWPORT_PADDING;
    private readonly _registryController;
    private readonly _started;
    private readonly _ended;
    private readonly _stepChanged;
    private readonly _boundHandleViewportChange;
    private _steps;
    private _currentStepIndex;
    private _tourId;
    private _tooltipStyles;
    private _positionFrameId;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `tourId` property.
     *
     * @public
     * @attr
     */
    get tourId(): string;
    set tourId(value: string);
    /**
     * Gets or sets the tour steps.
     *
     * @public
     */
    get steps(): Array<ITourStep>;
    set steps(value: Array<ITourStep>);
    /**
     * Gets the current step.
     *
     * @public
     * @readonly
     */
    get currentStep(): ITourStep | null;
    /**
     * Indicates whether the current step is the first step.
     *
     * @public
     * @readonly
     */
    get isFirstStep(): boolean;
    /**
     * Indicates whether the current step is the last step.
     *
     * @public
     * @readonly
     */
    get isLastStep(): boolean;
    /**
     * Gets the tooltip styles used for positioning.
     *
     * @public
     * @readonly
     */
    get tooltipStyles(): Record<string, string>;
    /**
     * Fired when the tour is started.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get started(): IEventEmitter<IEventDetail>;
    /**
     * Fired when the tour is ended.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get ended(): IEventEmitter<IEventDetail>;
    /**
     * Fired when the tour step changes.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get stepChanged(): IEventEmitter<ITourStepChangedEventDetail>;
    /**
     * Starts the tour from the first step.
     *
     * @public
     */
    start(): void;
    /**
     * Moves to the next step in the tour.
     *
     * @public
     */
    next(): void;
    /**
     * Moves to the previous step in the tour.
     *
     * @public
     */
    previous(): void;
    /**
     * Ends the tour and closes the overlay.
     *
     * @public
     */
    finish(): void;
    /**
     * Skips the current tour.
     *
     * @public
     */
    skip(): void;
    /**
     * Shows the specified step by its identifier.
     *
     * @public
     */
    showStep(stepId: string): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Handles backdrop clicks.
     *
     * @public
     */
    onBackdropClicked(event: MouseEvent): void;
    /**
     * @protected
     * @override
     */
    protected onIsOpenChanged(previousValue: boolean, newValue: boolean): void;
    /**
     * @private
     */
    private readonly _tooltipElement;
    /**
     * Updates the current step index and emits events.
     *
     * @private
     */
    private setCurrentStepIndex;
    /**
     * Emits the step changed event.
     *
     * @private
     */
    private emitStepChanged;
    /**
     * Adds listeners needed to keep the tooltip positioned.
     *
     * @private
     */
    private addViewportListeners;
    /**
     * Removes listeners used for tooltip positioning.
     *
     * @private
     */
    private removeViewportListeners;
    /**
     * Schedules a tooltip position update.
     *
     * @private
     */
    private schedulePositionUpdate;
    /**
     * Updates the tooltip position based on the current step.
     *
     * @private
     */
    private updateTooltipPosition;
    /**
     * Resolves the tooltip position for a given placement.
     *
     * @private
     */
    private resolveTooltipPosition;
}
/**
 * @public
 */
export declare namespace TourElement {
    type Props = ITourElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-tour': TourElement;
    }
}
export {};
//# sourceMappingURL=TourElement.d.ts.map