import { ResolvedRouteGetResponse, ComponentInstance } from '@uniformdev/canvas'; import { PageParameters, ComponentProps, CompositionContext, AppDirectoryServerContext } from '@uniformdev/canvas-next-rsc-shared'; import React, { ComponentType } from 'react'; type UniformStaticCompositionProps = { /** * How to render the composition. */ mode: 'static'; }; type UniformServerCompositionProps = { /** * How to render the composition. */ mode: 'server'; /** * The Context instance to use for server-side rendering. */ serverContext?: AppDirectoryServerContext; }; type UniformCompositionProps = PageParameters & { /** * The route data to render. */ route: ResolvedRouteGetResponse | undefined; /** * Function to map composition components to React components. */ resolveComponent: ResolveComponentFunction; /** * Function to map empty placeholders to React components. */ resolveEmptyPlaceholder?: ResolveEmptyPlaceholderFunction; } & (UniformStaticCompositionProps | UniformServerCompositionProps); declare const UniformComposition: React.FC; type ResolveComponentFunction = (options: { component: ComponentInstance; }) => ResolveComponentResult; type ResolveEmptyPlaceholderFunction = (options: ResolveEmptyPlaceholderOptions) => ResolveEmptyPlaceholderResult; type ResolveEmptyPlaceholderOptions = { parentComponent: ComponentInstance | undefined; component: ComponentInstance; slotName: string; slotIndex: number; }; type ResolveComponentResult = { component: ComponentType> | null; includeContext?: boolean; suspense?: { fallback: ComponentType | undefined; }; }; type ResolveEmptyPlaceholderResult = { component: ComponentType> | null; }; declare const resolveComposition: (props: Omit & { composition: ComponentInstance; compositionContext: CompositionContext; }) => React.FunctionComponentElement | null; type ResolveComponentsOptions = { serverContext?: AppDirectoryServerContext; target: { type: 'root'; composition: ComponentInstance; } | { type: 'slot'; components: ComponentInstance[]; parent: ComponentInstance; root: ComponentInstance; }; slotName: string | undefined; slotIndex: number | undefined; resolveComponent: ResolveComponentFunction; resolveEmptyPlaceholder: ResolveEmptyPlaceholderFunction | undefined; compositionContext: CompositionContext; mode: UniformCompositionProps['mode']; }; export { type ResolveComponentFunction as R, type UniformCompositionProps as U, type ResolveComponentResult as a, UniformComposition as b, resolveComposition as r };