import type { LoadComponentsReturnType } from '../load-components';
import type { ServerRuntime, SizeLimit } from '../../types';
import type { ExperimentalConfig, NextConfigComplete, PrefetchInliningConfig } from '../../server/config-shared';
import type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin';
import type { ParsedUrlQuery } from 'querystring';
import type { AppPageModule } from '../route-modules/app-page/module';
import type { DeepReadonly } from '../../shared/lib/deep-readonly';
import type { ImageConfigComplete } from '../../shared/lib/image-config';
import type { __ApiPreviewProps } from '../api-utils';
import s from 'next/dist/compiled/superstruct';
import type { RequestLifecycleOpts } from '../base-server';
import type { InstrumentationOnRequestError } from '../instrumentation/types';
import type { NextRequestHint } from '../web/adapter';
import type { BaseNextRequest } from '../base-http';
import type { IncomingMessage } from 'http';
import type { RenderResumeDataCache } from '../resume-data-cache/resume-data-cache';
import type { ServerCacheStatus } from '../../next-devtools/dev-overlay/cache-indicator';
import type { PrefetchHints } from '../../shared/lib/app-router-types';
export declare const flightRouterStateSchema: s.Describe<any>;
export type ServerOnInstrumentationRequestError = (error: unknown, request: NextRequestHint | BaseNextRequest | IncomingMessage, errorContext: Parameters<InstrumentationOnRequestError>[2], silenceLog: boolean) => void | Promise<void>;
export interface RenderOptsPartial {
    dir?: string;
    previewProps: __ApiPreviewProps | undefined;
    err?: Error | null;
    basePath: string;
    cacheComponents: boolean;
    trailingSlash: boolean;
    images: ImageConfigComplete;
    supportsDynamicResponse: boolean;
    runtime?: ServerRuntime;
    serverComponents?: boolean;
    enableTainting?: boolean;
    assetPrefix?: string;
    crossOrigin?: '' | 'anonymous' | 'use-credentials' | undefined;
    nextFontManifest?: DeepReadonly<NextFontManifest>;
    botType?: 'dom' | 'html' | undefined;
    serveStreamingMetadata?: boolean;
    incrementalCache?: import('../lib/incremental-cache').IncrementalCache;
    cacheLifeProfiles?: {
        [profile: string]: import('../use-cache/cache-life').CacheLife;
    };
    isOnDemandRevalidate?: boolean;
    isPossibleServerAction?: boolean;
    setCacheStatus?: (status: ServerCacheStatus, htmlRequestId: string) => void;
    setIsrStatus?: (key: string, value: boolean | undefined) => void;
    setReactDebugChannel?: (debugChannel: {
        readable: ReadableStream<Uint8Array>;
    }, htmlRequestId: string, requestId: string) => void;
    sendErrorsToBrowser?: (errorsRscStream: ReadableStream<Uint8Array>, htmlRequestId: string) => void;
    isBuildTimePrerendering?: boolean;
    nextConfigOutput?: 'standalone' | 'export';
    onInstrumentationRequestError?: ServerOnInstrumentationRequestError;
    isDraftMode?: boolean;
    onUpdateCookies?: (cookies: string[]) => void;
    loadConfig?: (phase: string, dir: string, customConfig?: object | null, rawConfig?: boolean, silent?: boolean) => Promise<NextConfigComplete>;
    serverActions?: {
        bodySizeLimit?: SizeLimit;
        allowedOrigins?: string[];
    };
    logServerFunctions?: boolean;
    params?: ParsedUrlQuery;
    isPrefetch?: boolean;
    htmlLimitedBots: string | undefined;
    experimental: {
        /**
         * When true, it indicates that the current page supports partial
         * prerendering.
         */
        isRoutePPREnabled?: boolean;
        expireTime: number | undefined;
        staleTimes: ExperimentalConfig['staleTimes'] | undefined;
        clientTraceMetadata: string[] | undefined;
        /**
         * The origins that are allowed to write the rewritten headers when
         * performing a non-relative rewrite. When undefined, no non-relative
         * rewrites will get the rewrite headers.
         */
        clientParamParsingOrigins: string[] | undefined;
        dynamicOnHover: boolean;
        optimisticRouting: boolean;
        inlineCss: boolean;
        prefetchInlining: PrefetchInliningConfig;
        authInterrupts: boolean;
        cachedNavigations: boolean;
        /**
         * The maximum size (in bytes) of the postponed state body for PPR resume
         * requests. Used to calculate decompression limits (5x this value).
         */
        maxPostponedStateSizeBytes: number | undefined;
    };
    postponed?: string;
    /**
     * Should wait for react stream allReady to resolve all suspense boundaries,
     * in order to perform a full page render.
     */
    shouldWaitOnAllReady?: boolean;
    /**
     * A prefilled resume data cache. This was either generated for this page
     * during dev warmup, or when a page with defined params was previously
     * prerendered, and now its matching optional fallback shell is prerendered.
     */
    renderResumeDataCache?: RenderResumeDataCache;
    /**
     * When true, the page will be rendered using the static rendering to detect
     * any dynamic API's that would have stopped the page from being fully
     * statically generated.
     */
    isDebugDynamicAccesses?: boolean;
    /**
    /**
     * The maximum length of the headers that are emitted by React and added to
     * the response.
     */
    reactMaxHeadersLength: number | undefined;
    /**
     * Per-route prefetch hints from prefetch-hints.json.
     * Loaded at server startup from the build output.
     */
    prefetchHints?: Record<string, PrefetchHints>;
    isStaticGeneration?: boolean;
    /**
     * When true, the page is prerendered as a fallback shell, while allowing any
     * dynamic accesses to result in an empty shell. This is the case when there
     * are also routes prerendered with a more complete set of params.
     * Prerendering those routes would catch any invalid dynamic accesses.
     */
    allowEmptyStaticShell?: boolean;
    /**
     * When true, attempt to run build-time instant validation for this prerender.
     * Only the first prerender per page sets this, since validation uses
     * unstable_instant.samples and is independent of actual route params.
     */
    runInstantValidation?: boolean;
}
export type RenderOpts = LoadComponentsReturnType<AppPageModule> & RenderOptsPartial & RequestLifecycleOpts;
export type PreloadCallbacks = (() => void)[];
