import { type ReactNode } from 'react';
/**
* Creates a stable DOM element whose React subtree
* survives parent re-mounts. Call `Source` once (outside any conditional
* branches) to declare *what* to render, and place `Target` wherever the
* content should appear in the DOM.
*
* Because the host `
` is created once (via `useStableHost`) and only
* moved via `appendChild` in a `useLayoutEffect`, React never unmounts the
* subtree when the layout switches between split / overlay / collapsed /
* drawer modes.
*
* @example
* ```tsx
* const content = useTeleport();
* const panel = useTeleport();
*
* // Always rendered – defines *what* goes into each slot.
*
main area
*
sidebar / details
*
* // Placed in the appropriate layout branch.
* {mode === 'split' ?
: null}
* {mode === 'drawer' ?
: null}
* ```
*
* @internal
*/
export declare function useTeleport(): {
/**
* Renders `children` into `host` via a React portal.
* Must be rendered exactly **once** and must not be rendered conditionally.
*/
Source: ({ children }: {
children: ReactNode;
}) => import("react").ReactPortal;
/**
* Places the `host` element in the DOM at the point where this
* component is mounted. When `Target` moves between different parents
* the DOM node is re-appended without React unmounting it.
*
* Delegates to `TeleportTarget` — the same component used by call sites
* that manage their own host node directly (e.g. `PageLayout`).
*/
Target: () => import("react/jsx-runtime").JSX.Element;
};