import { Dispatch, SetStateAction, ReactElement } from 'react';
import { PopperPlacementsType } from '../react-popper';
import { AdvancedTourSettings } from './advanced-tour';
export type TourHandlerFunction = () => void;
export type SkipTourHandlerFunction = (stepNumber: number) => void;
export type StepProps = {
    /** Query selector which will be used to find the anchor component. */
    selector: string;
    /** Tooltip placement. */
    placement?: PopperPlacementsType;
    /** Tour component content. */
    content: ReactElement | string | null;
    /** Image/Gif source. */
    imageSrc: string;
    /** Image/Gif alternative text. */
    altText?: string;
};
export type TourProps = {
    /** Step object that contains required information to show tour. */
    step: StepProps;
    /** Function is called on click on the next button.  */
    setNextStep: () => void;
    /** Function is called on click on the prev button. */
    setPrevStep: () => void;
    /** Function is called on click on the next button when the last step is reached. */
    onCompleteHandler: TourHandlerFunction;
    /** Shows the current step number. */
    stepNumber?: number;
    /** Shows the total amount of steps in the tour. */
    totalSteps?: number;
    /** Defines should we show Tour or not. */
    showTour: boolean;
    /** Function is called when skip button is clicked. */
    onSkipHandler: SkipTourHandlerFunction;
    /** ClassName to add custom styles. */
    className?: string;
};
export type SimpleTourSettings = {
    id: string;
    steps: StepProps[];
    onSkipHandler: SkipTourHandlerFunction;
    onCompleteHandler: TourHandlerFunction;
};
export type TourAccessibilityType = {
    tourAnchorButtonAriaLabel: string;
    nextTourButtonAriaLabel: string;
    previousTourButtonAriaLabel: string;
};
export type TourContextProps = {
    children: ReactElement;
    toursSettings: ToursSettings;
    a11yProps?: TourAccessibilityType;
};
export type TourContextProviderValue = {
    /** The number of the shown tour step. */
    stepId: number;
    /** The number of the shown tour step. */
    advancedTourStepId: number;
    /** The boolean flag defines to show (or not to show) the tour. */
    showTour: boolean;
    setTourId: Dispatch<SetStateAction<string>>;
    setStepId: Dispatch<SetStateAction<number>>;
    setStep: Dispatch<SetStateAction<StepProps | undefined>>;
    setShowTour: Dispatch<SetStateAction<boolean>>;
    setAdvancedTourEnabled: Dispatch<SetStateAction<boolean>>;
    advancedTourEnabled: boolean;
    setShowAdvancedTour: Dispatch<SetStateAction<boolean>>;
    setAdvancedTourStepId: Dispatch<SetStateAction<number>>;
    setAdvancedTourId: Dispatch<SetStateAction<string>>;
    setIsHighlighted: Dispatch<SetStateAction<boolean>>;
};
export type TourHooksParams = {
    isShowTour: boolean;
    tourId: string;
};
export type ToursSettings = {
    tours: SimpleTourSettings[];
    advancedTours: AdvancedTourSettings[];
    tourClassName?: string;
};
