import type { GraphqlUI } from '@teambit/graphql';
import type { SlotRegistry } from '@teambit/harmony';
import type { ReactRouterUI } from '@teambit/react-router';
import type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';
import type { ReactNode, ComponentType } from 'react';
import type { UIRootFactory } from './ui-root.ui';
type HudSlot = SlotRegistry<ReactNode>;
type RenderPluginsSlot = SlotRegistry<RenderPlugin<any, any>>;
type UIRootRegistry = SlotRegistry<UIRootFactory>;
/**
 * extension
 */
export declare class UiUI {
    /**
     * react-router extension.
     */
    private router;
    /**
     * ui root registry.
     */
    private uiRootSlot;
    /** slot for overlay ui elements */
    private hudSlot;
    /** hooks into the ssr render process */
    private renderPluginsSlot;
    constructor(
    /**
     * react-router extension.
     */
    router: ReactRouterUI, 
    /**
     * ui root registry.
     */
    uiRootSlot: UIRootRegistry, 
    /** slot for overlay ui elements */
    hudSlot: HudSlot, 
    /** hooks into the ssr render process */
    renderPluginsSlot: RenderPluginsSlot);
    /** render and rehydrate client-side */
    render(rootExtension: string): Promise<void>;
    /** render dehydrated server-side */
    renderSsr(rootExtension: string, ssrContent: SsrSession): Promise<string>;
    /** adds elements to the Heads Up Display */
    registerHudItem: (element: ReactNode) => void;
    /**
     * adds global context at the ui root
     * @deprecated replace with `.registerRenderHooks({ reactContext })`.
     */
    registerContext<T>(context: ComponentType<ContextProps<T>>): void;
    registerRoot(uiRoot: UIRootFactory): void;
    registerRenderHooks<T, Y>(plugin: RenderPlugin<T, Y>): void;
    private getLifecyclePlugins;
    private getRoot;
    static slots: ((registerFn: () => string) => SlotRegistry<ReactNode>)[];
    static dependencies: import("@teambit/harmony").Aspect[];
    static runtime: import("@teambit/harmony").RuntimeDefinition;
    static provider([GraphqlUi, router]: [GraphqlUI, ReactRouterUI], config: any, [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]): Promise<UiUI>;
}
export {};
