import React, { type ReactElement } from 'react'; import type { ReactNode } from 'react'; declare type ContentType = ReactNode; declare type Nodes = Map>; interface Observer { next: (state: T) => void; } export interface PortalContext { set: (slot: string, id: string, node: ContentType) => void; delete: (slot: string, id: string) => void; observable: { subscribe: (observer: Observer) => { unsubscribe: () => void; }; get: () => Nodes; }; } export declare function createPortal(): { (props: { children: ContentType; slot: string; }): null; Host: (props: { children: ContentType; }) => JSX.Element; Slot: React.NamedExoticComponent<{ slot: string; render?: ((children: ReactNode) => ReactElement | null) | undefined; }>; usePortal: (slot: string) => { add: (node: ReactNode) => void; remove: () => void; }; }; declare const Portal: { (props: { children: ContentType; slot: string; }): null; Host: (props: { children: ContentType; }) => JSX.Element; Slot: React.NamedExoticComponent<{ slot: string; render?: ((children: ReactNode) => ReactElement | null) | undefined; }>; usePortal: (slot: string) => { add: (node: ReactNode) => void; remove: () => void; }; }; export default Portal;