import React, { ReactElement, ReactNode } from "react";
import { PortableTextComponents } from "../../components/PortableText";
/**
 * The in-app message dialog, as a Presentation mock.
 *
 * Two pieces, mirroring how the product is split:
 *
 * - {@link MessageDialog} — the hollow dialog shell (width, closing,
 *   feedback), built only from design-system parts. In the product this shell
 *   lives in the application as `InAppMessageDialog`.
 * - {@link messageComponents} — a demo message element catalog injected into
 *   the design-system Portable Text engine, exactly like the typed cards
 *   injected into the hollow StackedCard shell. In the product the catalog is
 *   application code; the presentation ships this demo copy so the stories
 *   need no app imports.
 */
export type MessageDialogSize = "sm" | "md" | "lg";
export interface MessageDialogProps {
    open: boolean;
    onClose: () => void;
    size?: MessageDialogSize;
    /** Supplying a handler shows the centred helpful / not-helpful vote. */
    onVote?: (vote: "up" | "down") => void;
    children: ReactNode;
}
export declare const MessageDialog: ({ open, onClose, size, onVote, children, }: MessageDialogProps) => ReactElement;
/** How a doc-link mark opens its article (by a slug-like reference). The
    surface that renders the message supplies the handler — in the product it
    closes the dialog and opens the article Sheet. */
export type OpenArticleHandler = (article?: string) => void;
export declare const DocLinkContext: React.Context<OpenArticleHandler>;
/** The demo catalog the presentations inject into the Portable Text engine —
    the stand-in for the application's `messageComponents` map. */
export declare const messageComponents: PortableTextComponents;
//# sourceMappingURL=MessageDialog.d.ts.map