import { type ComponentPropsWithoutRef, type ReactNode, type RefObject } from "react";
export type CoachmarkPlacement = "top" | "bottom" | "left" | "right" | "auto";
export interface CoachmarkProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "children" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Whether the coachmark is open. */
    open: boolean;
    /** The element to anchor to. */
    target: RefObject<HTMLElement | null>;
    /** Preferred placement. Default `"auto"` (picks the side with most room). */
    placement?: CoachmarkPlacement;
    /** Distance between target and coachmark. Default `12`. */
    offset?: number;
    /** Title (heading). */
    title: ReactNode;
    /**
     * Heading level for the title. Default `"h3"`. Override when the
     * surrounding page lacks h1/h2 so axe's `heading-order` rule is
     * satisfied (a Coachmark inside a page with no prior heading should
     * use `"h2"`, etc).
     */
    titleAs?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
    /** Body text. */
    description?: ReactNode;
    /** Optional leading icon in the header. */
    icon?: ReactNode;
    /** Optional custom action slot (replaces default Next/Skip buttons). */
    action?: ReactNode;
    /** Fires when the user clicks Dismiss / X / Skip. */
    onDismiss: () => void;
    /** Multi-step: 1-based current step. */
    step?: number;
    /** Multi-step: total step count. */
    totalSteps?: number;
    /** Multi-step: fires when user clicks Next. */
    onNext?: () => void;
    /** Multi-step: fires when user clicks Previous. */
    onPrev?: () => void;
    /** Multi-step: override the Next button label. */
    nextLabel?: ReactNode;
    /** Multi-step: override the Previous button label. */
    prevLabel?: ReactNode;
    /** Override the Dismiss / Skip label. Default `"Skip"` in tour mode, `"Got it"` solo. */
    dismissLabel?: ReactNode;
    /** Highlight the target with a halo. Default `true`. */
    highlightTarget?: boolean;
    /** DOM node to portal into. Defaults to `document.body`. */
    container?: Element | null;
    /** Skip mount animation. */
    disableAnimation?: boolean;
}
export declare const Coachmark: import("react").ForwardRefExoticComponent<CoachmarkProps & import("react").RefAttributes<HTMLDivElement>>;
export declare function useCoachmarkSeen(key: string, storagePrefix?: string): [boolean, () => void];
//# sourceMappingURL=Coachmark.d.ts.map