import { TemplateRef, Type } from "@angular/core";
import { DialogContent } from "../dialog/dialog-content";
import { DialogOptions, DialogSize } from "../dialog/dialog-types";
import { TooltipPosition } from "../tooltip/tooltip.component";
export type TourCacheEntry = {
    completed: boolean;
};
export declare class Tour<T = any> {
    /** Unique identifier for the tour */
    id: string;
    /** List of tour steps to present to the user */
    steps: TourStep[];
    /** Final step to be presented to the user if defined */
    exitStep?: TourStep;
    /** Dialog to present to the user before the tour begins */
    introDialog?: TourIntroDialog<T>;
}
export interface TourIntroDialog<T> {
    content?: Type<DialogContent<T>> | TemplateRef<any>;
    context?: T;
    options?: DialogOptions;
    size?: DialogSize;
}
export declare class TourStep {
    /** Unique identifier for the tour step */
    id: string;
    /** Optional tour step title displayed at top of tooltip */
    title?: string;
    /** Optional media to display below title and above tour text. Can be a jpg, png, or gif */
    media?: string;
    /** HTML formatted text that contains the primary content of the tour step */
    text: string;
    /** The element to attach the tour step to. If undefined, step will appear centered on screen */
    anchor?: TourAnchor;
    helpLink?: string;
    /** Allows the step to have a fixed width defined for the tooltip. If not defined the width will be defaulted to 400. If you would like
     *  auto width define as 'auto'.
     */
    width?: number | 'auto';
    /** Allows the step to have a max width defined for the tooltip */
    maxWidth?: number;
}
export declare class TourAnchor {
    /**
     * Optional css selector of an element to click in order to open a menu or
     * overlay. Should not cause a navigation. If defined but does not exist in
     * the DOM, skip this step because it is probably hidden to the user because of permissions
     */
    clickBefore?: string;
    /**
     * CSS selector of element to click in order to close a menu or overlay
     * before continuing to the next step. Ignored if clickBefore is undefined.
     * Should not cause a navigation
     */
    clickAfter?: string;
    /**
     * Selector to attach the tooltip to. If defined but does not exist in the
     * DOM skip this step because it is probably hidden to the user because of
     * permissions.
     */
    selector: string;
    /** Position of the tooltip relative to the anchor. https://energycap-components.netlify.app/tooltip#position */
    position?: TooltipPosition;
}
export declare class TourEvent {
    tours: Tour[];
    tourAction: 'start' | 'end' | 'append';
    isAutoStart: boolean;
    constructor(tours: Tour[], tourAction?: 'start' | 'end' | 'append', isAutoStart?: boolean);
}
