import * as React from "react";
import { IOrigin } from '../../Utilities/Position';
import { IImageProps } from '../../Image';
import { IButtonProps } from '../../Button';
export interface ITeachingBubble {
    dismiss: () => void;
}
export interface ITeachingBubbleProps extends ICustomTeachingBubbleProps {
    /**
     * Optional image to render in the teaching bubble
     */
    imageProps?: IImageProps;
    /**
     * Optional button to render in the teaching bubble
     */
    primaryButtonProps?: IButtonProps;
    /**
     * Second optional button to render in the teaching bubble.
     */
    secondaryButtonProps?: IButtonProps;
    /**
     * Body to be rendered in the bubble
     */
    text: React.ReactNode;
    /**
     * A title to be rendered for the bubble
     */
    title?: string;
}
export interface ICustomTeachingBubbleProps {
    /**
     * The element the teaching bubble is positioned relative to.
     */
    anchorElement: HTMLElement;
    /**
     * When an anchorElement is supplied the anchorOrigin is used to describe the
     * relative location of the callout with respect to the anchorElement.
     */
    anchorOrigin: IOrigin;
    /**
     * aria-describedby for the teaching bubble
     */
    ariaDescribedBy?: string;
    /**
     * aria-label for the teaching bubble
     */
    ariaLabeledBy?: string;
    /**
     * How the bubble should be aligned if the anchor origin is a corner
     * @default vertical
     */
    cornerPlacement?: TeachingBubbleCornerPlacement;
    /**
     * When the teaching bubble is mounted, what will be the element inside that gets focus.
     */
    defaultActiveElement?: string | (() => string);
    /**
     * Callback for when the teaching bubble is dismissed. The owner should be responsible for hiding the teaching bubble.
     */
    onDismiss: () => void;
    /**
     * Callback when a teaching bubble changes postion upon changing the anchor element or anchor origin.
     */
    onLocationChange?: () => void;
    /**
     * Is the teachign bubble only text? This will cause the callout to have light dismiss behavior.
     */
    textOnly?: boolean;
}
export declare enum TeachingBubbleCornerPlacement {
    /**
     * If the anchor origin is a corner, the bubble will be positioned to the right/left of the element
     */
    horizontal = 0,
    /**
     * If the anchor origin is a corner, the bubble will be positioned above/below the element
     */
    vertical = 1
}
