import type { ReactiveController, ReactiveControllerHost } from 'lit';
/**
 * The controller host type.
 *
 * @public
 */
export type TourRegistryControllerHost = ReactiveControllerHost & HTMLElement;
/**
 * The config options for a TourRegistryController used by anchors.
 *
 * @public
 */
export interface ITourRegistryAnchorConfig {
    getTourId: () => string;
    getAnchorId: () => string;
}
/**
 * The config options for a TourRegistryController used by tours.
 *
 * @public
 */
export interface ITourRegistryTourConfig {
    getTourId: () => string;
}
/**
 * A reactive controller that manages anchor registration for tour elements.
 *
 * @public
 */
export declare class TourRegistryController implements ReactiveController {
    private readonly _host;
    private readonly _config;
    private readonly _isAnchor;
    private _registeredTourId;
    private _registeredAnchorId;
    /**
     * Constructs a new instance of the `TourRegistryController` class.
     *
     * @public
     */
    constructor(host: TourRegistryControllerHost, config: ITourRegistryAnchorConfig | ITourRegistryTourConfig);
    /**
     * @public
     */
    hostConnected(): void;
    /**
     * @public
     */
    hostDisconnected(): void;
    /**
     * @public
     */
    hostUpdate(): void;
    /**
     * @public
     */
    hostUpdated(): void;
    /**
     * Registers the anchor with current tourId and anchorId.
     * Call this when tourId or anchorId changes.
     *
     * @public
     */
    register(): void;
    /**
     * Unregisters the anchor with the previously registered tourId and anchorId.
     *
     * @public
     */
    unregister(): void;
    /**
     * Updates the registration when tourId or anchorId changes.
     *
     * @public
     */
    updateRegistration(previousTourId: string, previousAnchorId: string): void;
    /**
     * Resolves an anchor element by its anchorId.
     *
     * @public
     */
    resolve(anchorId: string): HTMLElement | null;
    /**
     * Clears all registered anchors.
     *
     * @public
     */
    clear(): void;
}
/**
 * Adds a tour registry controller to the given host for anchor registration.
 *
 * @public
 * @param host The host element.
 * @param config The configuration options.
 * @returns The tour registry controller instance.
 */
export declare function addTourRegistryController(host: TourRegistryControllerHost, config: ITourRegistryAnchorConfig | ITourRegistryTourConfig): TourRegistryController;
//# sourceMappingURL=TourRegistryController.d.ts.map