import type { RendererEnv, RendererProps, Schema, SchemaNode } from 'jamis-core';
import type { History } from 'history';
import type { ReactNode } from 'react';
import type { SchemaCollection } from '../sdk';
import type { IRendererStore } from './RendererStore';
export type { IRendererStore } from './RendererStore';
export type { IRootStore } from './RootStore';
export type { TailwindSpacing, TailwindWidth, TailwindHeight } from './Tailwind';
export interface RootRenderProps {
    location?: History['location'];
    [propName: string]: any;
}
export interface RootProps {
    schema: SchemaNode;
    rootStore: IRendererStore;
    env: RendererEnv;
    pathPrefix?: string;
    [propName: string]: any;
}
export interface RootWrapperProps {
    env: RendererEnv;
    children: React.ReactNode;
    schema: SchemaNode;
    rootStore: IRendererStore;
    [propName: string]: any;
}
export interface RenderChildProps extends Partial<RendererProps> {
    env: RendererEnv;
}
export type ReactElement = React.ReactNode[] | JSX.Element | null | false;
export interface SchemaRendererProps extends Partial<RendererProps> {
    schema: Schema;
    $path: string;
    env: RendererEnv;
}
/**
 * 替换`classNameParam`参数对应的元素为slots body里配置的schema
 */
export type RenderSlotBodyType = (classNameParam: string | string[], schemaRegion: string, restParams?: {
    data?: Record<string, any>;
    props?: Record<string, any>;
    defaultSchema?: SchemaCollection;
    children?: ReactNode | (() => ReactNode);
}) => ReactNode;
