import type { ReactNode } from "react";
import React from "react";
import type { XOR } from "ts-xor";
import { type ButtonProps } from "../Button";
import { type SectionProps } from "../Menu";
export type ButtonActionProps = ButtonProps & {
    ref?: React.RefObject<HTMLDivElement | null>;
};
interface PageFoundationProps {
    readonly children: ReactNode | ReactNode[];
    /**
     * Title of the page.
     *
     * Supports any React node. If a string is provided, it will be rendered as an H1 heading.
     * Otherwise it will be rendered as is.
     *
     * **Important**: If you're passing a custom element, it must include an H1-level heading within it.
     * Ideally <Heading level={1}> should be used here.
     */
    readonly title: ReactNode;
    /**
     * TitleMetaData component to be displayed
     * next to the title. Only compatible with string titles.
     */
    readonly titleMetaData?: ReactNode;
    /**
     * Subtitle of the page.
     */
    readonly subtitle?: string;
    /**
     * Determines the width of the page.
     *
     * Fill makes the width grow to 100%.
     *
     * Standard caps out at 1280px.
     *
     * Narrow caps out at 1024px.
     *
     * @default standard
     */
    readonly width?: "fill" | "standard" | "narrow";
    /**
     * Page title primary action button settings.
     */
    readonly primaryAction?: ButtonActionProps;
    /**
     * Page title secondary action button settings.
     */
    readonly secondaryAction?: ButtonActionProps;
    /**
     * Page title Action menu.
     */
    readonly moreActionsMenu?: SectionProps[];
}
interface PageWithIntroProps extends PageFoundationProps {
    /**
     * Content of the page. This supports basic markdown node types
     * such as `_italic_`, `**bold**`, and `[link name](url)`.
     */
    readonly intro: string;
    /**
     * Causes any markdown links in the `intro` prop to open in a new
     * tab, i.e. with `target="_blank"`.
     *
     * Can only be used if `intro` prop is also specified.
     *
     * Defaults to `false`.
     */
    readonly externalIntroLinks?: boolean;
}
export type PageProps = XOR<PageFoundationProps, PageWithIntroProps>;
export declare function Page({ title, titleMetaData, intro, externalIntroLinks, subtitle, children, width, primaryAction, secondaryAction, moreActionsMenu, }: PageProps): React.JSX.Element;
export declare const getActionProps: (actionProps: ButtonActionProps) => ButtonProps;
export {};
