import type { ResolvedVextFrontendConfig, VextFrontendMode, VextFrontendUserConfig } from "../contract/types.js"; import type { VextRenderErrorOptions, VextRenderHeadOptions, VextRenderOptions } from "../../types/response.js"; import type { VextRequest } from "../../types/request.js"; import type { VextHeaders } from "../../types/headers.js"; import type { VextMiddleware } from "../../types/middleware.js"; import { type VextPageEnvelopeCacheV1, type VextPageEnvelopeV1 } from "../contract/page-envelope.js"; export interface CreateFrontendRendererOptions { rootDir: string; mode: VextFrontendMode; config: VextFrontendUserConfig | ResolvedVextFrontendConfig | undefined; } export interface VextRenderPayload { page: string; props: Record; options: VextRenderOptions; buildId: string; mode: VextFrontendMode; protocolVersion: 1; routeId: string; url: string; layouts: string[]; head: VextRenderHeadOptions; assets: string[]; contractDigest: string; cache: VextPageEnvelopeCacheV1; } export interface VextRenderCacheEntry { __vextResponseKind: "render"; payload: VextRenderPayload; } export interface VextRenderedHtml { html: string; status: number; headers: VextHeaders; payload: VextRenderPayload; } export interface VextRenderedPageEnvelope { envelope: VextPageEnvelopeV1; status: number; headers: VextHeaders; payload?: VextRenderPayload; } export interface VextFrontendRenderer { readonly enabled: boolean; streamPage(page: string, props: Record | undefined, options: VextRenderOptions | undefined, currentStatus: number | undefined, res: Parameters[1], req?: VextRequest): void; renderPage(page: string, props?: Record, options?: VextRenderOptions, currentStatus?: number, req?: VextRequest): VextRenderedHtml; renderPageEnvelope(page: string, props: Record | undefined, options: VextRenderOptions | undefined, currentStatus: number | undefined, req: VextRequest): VextRenderedPageEnvelope; renderError(errorOrStatus?: Error | number | string, pageOrOptions?: string | Record | unknown[] | VextRenderErrorOptions, options?: VextRenderErrorOptions, currentStatus?: number, requestId?: string, req?: VextRequest): VextRenderedHtml; renderErrorEnvelope(errorOrStatus: Error | number | string | undefined, pageOrOptions: string | Record | unknown[] | VextRenderErrorOptions | undefined, options: VextRenderErrorOptions | undefined, currentStatus: number | undefined, requestId: string | undefined, req: VextRequest): VextRenderedPageEnvelope; renderRedirectEnvelope(location: string, status: 301 | 302 | 303 | 307 | 308, req: VextRequest): VextRenderedPageEnvelope; renderCached(payload: unknown, status: number, headers: VextHeaders, req?: VextRequest): VextRenderedHtml; renderCachedEnvelope(payload: unknown, status: number, headers: VextHeaders, req: VextRequest): VextRenderedPageEnvelope; } export declare function createFrontendRenderer(options: CreateFrontendRendererOptions): VextFrontendRenderer; export declare function createFrontendRenderMiddleware(options: CreateFrontendRendererOptions): VextMiddleware; export declare function isPageEnvelopeRequest(req: Pick): boolean;