import type { Plugin as VitePlugin, Rollup } from 'vite'; import type { BuildInternals } from './internal.js'; import type { StaticBuildOptions, ViteBuildReturn } from './types.js'; type RollupOutputArray = Extract>; type OutputChunkorAsset = RollupOutputArray[number]['output'][number]; type OutputChunk = Extract; export type BuildTarget = 'server' | 'client'; type MutateChunk = (chunk: OutputChunk, targets: BuildTarget[], newCode: string) => void; export interface BuildBeforeHookResult { enforce?: 'after-user-plugins'; vitePlugin: VitePlugin | VitePlugin[] | undefined; } export type AstroBuildPlugin = { targets: BuildTarget[]; hooks?: { 'build:before'?: (opts: { target: BuildTarget; input: Set; }) => BuildBeforeHookResult | Promise; 'build:post'?: (opts: { ssrOutputs: RollupOutputArray; clientOutputs: RollupOutputArray; mutate: MutateChunk; }) => void | Promise; }; }; export declare function createPluginContainer(options: StaticBuildOptions, internals: BuildInternals): { options: StaticBuildOptions; internals: BuildInternals; register(plugin: AstroBuildPlugin): void; runBeforeHook(target: BuildTarget, input: Set): Promise<{ vitePlugins: (VitePlugin | VitePlugin[])[]; lastVitePlugins: (VitePlugin | VitePlugin[])[]; }>; runPostHook(ssrOutputs: Rollup.RollupOutput[], clientOutputs: Rollup.RollupOutput[]): Promise>; }; export type AstroBuildPluginContainer = ReturnType; export {};