import type { ExtractedChunk } from '../static-build.js'; import type { BuildInternals } from '../internal.js'; import type { StaticBuildOptions } from '../types.js'; /** * Unified manifest system architecture: * * The serialized manifest (virtual:astro:manifest) is now the single source of truth * for both dev and production builds: * * - In dev: The serialized manifest is used directly (pre-computed manifest data) * - In prod: Two-stage process: * 1. serialized.ts emits a placeholder (MANIFEST_REPLACE token) during bundling * 2. plugin-manifest injects the real build-specific data at the end * * This flow eliminates dual virtual modules and simplifies the architecture: * - pluginManifestBuild: Registers SERIALIZED_MANIFEST_ID as Vite input * - pluginManifestBuild.generateBundle: Tracks the serialized manifest chunk filename * - manifestBuildPostHook: Finds the chunk, computes final manifest data, and replaces the token * * The placeholder mechanism allows serialized.ts to emit during vite build without knowing * the final build-specific data (routes, assets, CSP hashes, etc) that's only available * after bundling completes. */ export declare const MANIFEST_REPLACE = "@@ASTRO_MANIFEST_REPLACE@@"; /** * Post-build hook that injects the computed manifest into bundled chunks. * Finds the serialized manifest chunk and replaces the placeholder token with real data. */ export declare function manifestBuildPostHook(options: StaticBuildOptions, internals: BuildInternals, { chunks, mutate, }: { chunks: ExtractedChunk[]; mutate: (fileName: string, code: string, prerender: boolean) => void; }): Promise;