import type { ComponentDescriptor, LiteralUnion, RequestMode, TextComponent } from '@enonic-types/core';
import type { TextBaseProps } from './TextBaseProps';
export type XpRunMode = 'development' | 'production';
export interface RenderableContentType {
    contentType: string;
    mode: LiteralUnion<RequestMode>;
    props?: Record<string, unknown>;
    type: 'contentType';
}
export interface RenderableError {
    html: string;
    mode: LiteralUnion<RequestMode>;
    path: string;
    type: 'error';
}
export interface RenderableRegion {
    name: string;
    components: RenderableComponent[];
}
export type RenderableRegions = Record<string, RenderableRegion>;
export interface RenderableLayoutComponent {
    descriptor: ComponentDescriptor;
    mode: LiteralUnion<RequestMode>;
    path?: string;
    props?: Record<string, unknown>;
    regions: RenderableRegions;
    type: 'layout';
    warning?: string;
}
export interface RenderablePageComponent {
    descriptor: ComponentDescriptor;
    error?: string;
    mode: LiteralUnion<RequestMode>;
    path: '/';
    props?: Record<string, unknown>;
    regions: RenderableRegions;
    type: 'page';
    warning?: string;
}
export interface RenderablePartComponent {
    descriptor: ComponentDescriptor;
    mode: LiteralUnion<RequestMode>;
    path?: string;
    props?: Record<string, unknown>;
    type: 'part';
    warning?: string;
}
export interface RenderableWarning {
    html: string;
    mode: LiteralUnion<RequestMode>;
    path: string;
    type: 'warning';
}
export type RenderableTextComponent = TextComponent & {
    mode: LiteralUnion<RequestMode>;
    props?: TextBaseProps;
};
export type RenderableComponent = RenderableContentType | RenderableError | RenderableLayoutComponent | RenderablePageComponent | RenderablePartComponent | RenderableTextComponent | RenderableWarning;
