///
import type { IncomingMessage, ServerResponse } from 'http';
import type { GetServerSideProps, GetStaticPaths, GetStaticProps, NextComponentType, PageConfig } from '../../../../../types';
import type { PagesRouteDefinition } from '../../route-definitions/pages-route-definition';
import type { NextParsedUrlQuery } from '../../../request-meta';
import type { RenderOpts } from '../../../render';
import type RenderResult from '../../../render-result';
import type { AppType, DocumentType } from '../../../../shared/lib/utils';
import { RouteModule, type RouteModuleHandleContext, type RouteModuleOptions } from '../route-module';
import { renderToHTML } from '../../../render';
import * as vendoredContexts from './vendored/contexts/entrypoints';
/**
* The PagesModule is the type of the module exported by the bundled pages
* module.
*/
export type PagesModule = typeof import('../../../../build/templates/pages');
/**
* The userland module for a page. This is the module that is exported from the
* page file that contains the page component, page config, and any page data
* fetching functions.
*/
export type PagesUserlandModule = {
/**
* The exported page component.
*/
readonly default: NextComponentType;
/**
* The exported page config.
*/
readonly config?: PageConfig;
/**
* The exported `getStaticProps` function.
*/
readonly getStaticProps?: GetStaticProps;
/**
* The exported `getStaticPaths` function.
*/
readonly getStaticPaths?: GetStaticPaths;
/**
* The exported `getServerSideProps` function.
*/
readonly getServerSideProps?: GetServerSideProps;
};
/**
* The components that are used to render a page. These aren't tied to the
* specific page being rendered, but rather are the components that are used to
* render all pages.
*/
type PagesComponents = {
/**
* The `App` component. This could be exported by a user's custom `_app` page
* file, or it could be the default `App` component.
*/
readonly App: AppType;
/**
* The `Document` component. This could be exported by a user's custom
* `_document` page file, or it could be the default `Document` component.
*/
readonly Document: DocumentType;
};
export interface PagesRouteModuleOptions extends RouteModuleOptions {
readonly components: PagesComponents;
}
/**
* AppRouteRouteHandlerContext is the context that is passed to the route
* handler for app routes.
*/
export interface PagesRouteHandlerContext extends RouteModuleHandleContext {
/**
* The page for the given route.
*/
page: string;
/**
* The parsed URL query for the given request.
*/
query: NextParsedUrlQuery;
/**
* The RenderOpts for the given request which include the specific modules to
* use for rendering.
*/
renderOpts: Omit;
}
export declare class PagesRouteModule extends RouteModule {
private readonly components;
constructor(options: PagesRouteModuleOptions);
render(req: IncomingMessage, res: ServerResponse, context: PagesRouteHandlerContext): Promise;
}
declare const vendored: {
contexts: typeof vendoredContexts;
};
export { renderToHTML, vendored };
export default PagesRouteModule;