import { ReactNode } from 'react';
import { LassoToolsMessage } from './types';
export interface LassoMessageChildrenProps {
    message: LassoToolsMessage;
    onDismiss: () => void;
}
export interface LassoMessageProps {
    mapId: string;
    /** Pixels above the geometry's top edge to float anchored messages. @default 12 */
    offsetY?: number;
    children: (props: LassoMessageChildrenProps) => ReactNode;
}
/**
 * Renders the lasso tools' pending messages over the map. A message whose
 * `id` matches a lasso geometry (e.g. a self-intersection auto-repair notice,
 * see `repairSelfIntersection` in `./util`) is anchored to the top-center of
 * that geometry's bounding box and kept in sync with the map via screen
 * projection (works for both MapLibre and Google Maps basemaps). Messages
 * without a matching geometry render in a stack at the top-center of the map,
 * so every message is always visible and dismissible.
 *
 * Render-props, like {@link LassoGeometryToolbar}: drop a presentational
 * message (e.g. `LassoMessageUI` from `@carto/ps-react-ui`) inside and wire
 * the supplied `onDismiss` handler. Renders nothing while there are no
 * pending messages.
 *
 * @example
 * ```tsx
 * <LassoTools.Message mapId="map1">
 *   {(props) => <LassoMessageUI {...props} />}
 * </LassoTools.Message>
 * ```
 */
export declare function LassoMessage({ mapId, offsetY, children, }: LassoMessageProps): import('react').ReactPortal | null;
