export type { PageContext };
export type { PageContextServer };
export type { PageContextClient };
export type { GlobalContext };
export type { GlobalContextServer };
export type { GlobalContextClient };
export type { PageContextWithServerRouting };
export type { PageContextClientWithServerRouting };
export type { GlobalContextClientWithServerRouting };
export type { PageContextBuiltInServerInternal };
export type { PageContextBuiltInServer_deprecated as PageContextBuiltInServer };
export type { PageContextBuiltInClientWithClientRouting_deprecated as PageContextBuiltInClientWithClientRouting };
export type { PageContextBuiltInClientWithServerRouting_deprecated as PageContextBuiltInClientWithServerRouting };
import type { PageContextUrlInternal, PageContextUrlClient, PageContextUrlServer } from './getPageContextUrlComputed.js';
import type { ConfigEntries, ExportsAll, From, Source, Sources } from './page-configs/getPageConfigUserFriendly.js';
import type { Config } from './page-configs/Config.js';
import type { PageContextConfig } from './page-configs/Config/PageContextConfig.js';
import type { AbortStatusCode } from './route/abort.js';
import type { GlobalContextServer } from '../node/runtime/globalContext.js';
import type { GlobalContextClient } from '../client/client-routing-runtime/globalContext.js';
import type { GlobalContextClientWithServerRouting } from '../client/server-routing-runtime/globalContext.js';
type PageContextServer<Data = unknown> = PageContextBuiltInServer<Data> & Vike.PageContext & Vike.PageContextServer;
type PageContext<Data = unknown> = PageContextClient<Data> | PageContextServer<Data>;
type PageContextClient<Data = unknown> = PageContextBuiltInClientWithClientRouting<Data> & Vike.PageContext & Vike.PageContextClient;
type GlobalContext = GlobalContextServer | GlobalContextClient;
type PageContextWithServerRouting<Data = unknown> = PageContextClientWithServerRouting<Data> | PageContextServer<Data>;
type PageContextClientWithServerRouting<Data = unknown> = PageContextBuiltInClientWithServerRouting<Data> & Vike.PageContext & Vike.PageContextClient;
type PageContextBuiltInCommon<Data> = {
    /**
     * Useful for distinguishing `pageContext` from other objects and narrowing down TypeScript unions.
     *
     * https://vike.dev/pageContext#typescript
     */
    isPageContext: true;
    /** The `export { Page }` of your `.page.js` file.
     *
     * https://vike.dev/Page
     * https://vike.dev/pageContext#Page
     */
    Page: Config['Page'];
    /** Route Parameters, e.g. `pageContext.routeParams.productId` for a Route String `/product/@productId`.
     *
     * https://vike.dev/route-string
     * https://vike.dev/pageContext#routeParams
     */
    routeParams: Record<string, string>;
    /** The page's data which was fetched using the data() hook.
     *
     * https://vike.dev/data
     * https://vike.dev/pageContext#data
     */
    data: Data;
    /** The page's configuration values.
     *
     * https://vike.dev/config
     * https://vike.dev/pageContext#config
     */
    config: PageContextConfig;
    /** The page's configuration, including the configs origin and overriden configs.
     *
     * https://vike.dev/config
     */
    configEntries: ConfigEntries;
    /** Custom Exports/Hooks.
     *
     * https://vike.dev/exports
     */
    exports: Record<string, unknown>;
    /**
     * Same as `pageContext.exports` but cumulative.
     *
     * https://vike.dev/exports
     */
    exportsAll: ExportsAll;
    /** The URL you provided to Vike when calling `renderPage({ urlOriginal })` in your server middleware.
     *
     * https://vike.dev/renderPage
     */
    urlOriginal: string;
    /**
     * The HTTP Headers of the incoming HTTP Request.
     *
     * As a string object normalized by Vike.
     *
     * https://vike.dev/headers
     * https://vike.dev/pageContext#headers
     */
    headers: Record<string, string> | null;
    /**
     * The HTTP Headers of the incoming HTTP Request.
     *
     * The original object provided by the server.
     *
     * https://vike.dev/headers
     * https://vike.dev/pageContext#headersOriginal
     */
    headersOriginal?: unknown;
    /** If an error occurs, whether the error is a `404 Page Not Found`.
     *
     * https://vike.dev/error-page
     */
    is404: boolean | null;
    /**
     * Whether the page was navigated by the client-side router.
     *
     * https://vike.dev/pageContext#isClientSideNavigation
     */
    isClientSideNavigation: boolean;
    /**
     * The reason why the original page was aborted. Usually used for showing a custom message on the error page.
     *
     * https://vike.dev/render
     * https://vike.dev/pageContext#abortReason
     */
    abortReason?: unknown;
    /**
     * The status code set by `throw render(abortStatusCode)`.
     *
     * https://vike.dev/render
     * https://vike.dev/pageContext#abortStatusCode
     */
    abortStatusCode?: AbortStatusCode;
    /**
     * Error that occured while rendering.
     *
     * https://vike.dev/error-tracking
     * https://vike.dev/pageContext#errorWhileRendering
     */
    errorWhileRendering?: unknown;
    /**
     * The page's unique identifier.
     */
    pageId: string | null;
    /** @experimental https://github.com/vikejs/vike/issues/1268 */
    from: From;
    /** @experimental https://github.com/vikejs/vike/issues/1268 */
    source: Source;
    /** @experimental https://github.com/vikejs/vike/issues/1268 */
    sources: Sources;
    /** @deprecated */
    url: string;
    /** @deprecated */
    pageExports: Record<string, unknown>;
    /**
     * Whether the Base URL is missing in the URL of the HTTP request made to the SSR server.
     *
     * https://vike.dev/base-url#setup
     * https://vike.dev/pageContext#isBaseMissing
     */
    isBaseMissing?: true;
};
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextUrlServer & {
    /**
     * Whether the page is being rendered on the client-side or server-side / pre-rendered.
     *
     * We recommend using `import.meta.env.SSR` instead, see https://vike.dev/pageContext#isClientSide
     *
     * https://vike.dev/pageContext#isClientSide
     */
    isClientSide: false;
    /**
     * Whether the page is being pre-rendered.
     *
     * The value is always `false` in development.
     *
     * https://vike.dev/pre-rendering
     * https://vike.dev/pageContext#isPrerendering
     */
    isPrerendering: boolean;
    /**
     * Runtime information about your app.
     *
     * https://vike.dev/getGlobalContext
     * https://vike.dev/pageContext#globalContext
     */
    globalContext: GlobalContextServer;
    isHydration?: undefined;
    isBackwardNavigation?: undefined;
    previousPageContext?: undefined;
};
type PageContextBuiltInClientWithClientRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'routeParams' | 'pageExports' | 'config' | 'configEntries' | 'exports' | 'exportsAll' | 'abortReason' | 'data' | 'pageId' | 'source' | 'sources' | 'from'> & PageContextClientCommon & {
    /** Whether the current page is already rendered to HTML */
    isHydration: boolean;
    /**
     * Whether the user is navigating back in history.
     *
     * The value is `true` when the user clicks on his browser's backward navigation button, or when invoking `history.back()`.
     *
     * https://vike.dev/pageContext#isBackwardNavigation
     */
    isBackwardNavigation: boolean | null;
    /**
     * Upon client-side page navigation, you can use `pageContext.previousPageContext` to access the `pageContext` of the previous page.
     *
     * https://vike.dev/pageContext#previousPageContext
     */
    previousPageContext: PageContextClient<Data> | null;
    globalContext: GlobalContextClient;
} & PageContextUrlClient;
type PageContextBuiltInClientWithServerRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'pageExports' | 'exports' | 'abortReason' | 'pageId' | 'data'> & PageContextClientCommon & {
    /**
     * Whether the current page is already rendered to HTML.
     *
     * The `isHydration` value is always `true` when using Server Routing.
     *
     * https://vike.dev/pageContext#isHydration
     */
    isHydration: true;
    /**
     * Whether the user is navigating back in history.
     *
     * The `isBackwardNavigation` property only works with Client Routing. (The value is always `null` when using Server Routing.)
     *
     * https://vike.dev/pageContext#isBackwardNavigation
     */
    isBackwardNavigation: null;
    globalContext: GlobalContextClientWithServerRouting;
};
type PageContextClientCommon = {
    /**
     * Whether the page is being rendered on the client-side, or rendered on the server-side / pre-rendered.
     *
     * In order to save client-side KBs, we recommend using `import.meta.env.SSR` whenever possible instead, see https://vike.dev/pageContext#isClientSide
     *
     * https://vike.dev/pageContext#isClientSide
     */
    isClientSide: true;
    /**
     * Whether the page is being pre-rendered.
     *
     * The value is always `false` in development.
     *
     * https://vike.dev/pre-rendering
     * https://vike.dev/pageContext#isPrerendering
     */
    isPrerendering: false;
};
/** For Vike internal use */
type PageContextBuiltInServerInternal = Omit<PageContextBuiltInCommon<unknown> & PageContextUrlInternal, 'data'>;
/** @deprecated
 * Replace:
 *   ```
 *   import type { PageContextBuiltInServer } from 'vike/types'
 *   ```
 * With:
 *   ```
 *   import { PageContextServer } from 'vike/types'
 *   ```
 *
 * See https://vike.dev/pageContext#typescript
 */
type PageContextBuiltInServer_deprecated<Page = never> = PageContextBuiltInServer<unknown>;
/** @deprecated
 * Replace:
 *   ```
 *   import type { PageContextBuiltInClientWithClientRouting } from 'vike/types'
 *   ```
 * With:
 *   ```
 *   import { PageContextClient } from 'vike/types'
 *   ```
 *
 * See https://vike.dev/pageContext#typescript
 */
type PageContextBuiltInClientWithClientRouting_deprecated<Page = never> = PageContextBuiltInClientWithClientRouting<unknown>;
/** @deprecated
 * Replace:
 *   ```
 *   import type { PageContextBuiltInClientWithServerRouting } from 'vike/types'
 *   ```
 * With:
 *   ```
 *   import { PageContextClientWithServerRouting as PageContextClient } from 'vike/types'
 *   ```
 *
 * See https://vike.dev/pageContext#typescript
 */
type PageContextBuiltInClientWithServerRouting_deprecated<Page = never> = PageContextBuiltInClientWithServerRouting<unknown>;
