import * as React from 'react';
import { ToolpadComponents } from '@mui/toolpad-core';
export { ComponentsContextProvider } from '@mui/toolpad-core';
import { a as AppDom, P as PageNode, R as RuntimeState } from './types-2ZwJajnE.js';
import '@mui/material';

declare const DomContextProvider: React.ComponentType<React.ProviderProps<AppDom>>;

interface RenderedPageProps {
    page: PageNode;
}
declare function RenderedPage({ page }: RenderedPageProps): React.JSX.Element;
interface ToolpadAppProps {
    rootRef?: React.Ref<HTMLDivElement>;
    basename: string;
    state: RuntimeState;
}

interface NavigationEntry {
    slug: string;
    displayName: string;
    hasShell?: boolean;
}
interface ToolpadAppLayoutProps {
    activePage?: string;
    pages?: NavigationEntry[];
    hasShell?: boolean;
    children?: React.ReactNode;
    clipped?: boolean;
}
declare function AppLayout({ activePage, pages, hasShell: hasShellProp, children, clipped, }: ToolpadAppLayoutProps): React.JSX.Element;

/**
 * This allows us to hot update the components when a file is added/removed
 */
declare function setComponents(newComponents: ToolpadComponents, pageComponents: Record<string, React.ComponentType>): void;
interface RootProps {
    initialState: RuntimeState;
    base: string;
    ToolpadApp: React.ComponentType<ToolpadAppProps>;
}
interface InitParams {
    initialState: RuntimeState;
    base: string;
    ToolpadApp?: React.ComponentType<ToolpadAppProps>;
}
declare function init({ ToolpadApp, initialState, base }: InitParams): void;

declare function createRemoteFunction(functionFile: string, functionName: string): (...params: any[]) => Promise<unknown>;

export { AppLayout, DomContextProvider, type InitParams, RenderedPage, type RootProps, RuntimeState, createRemoteFunction, init, setComponents };
