import { UserConfig, ResolvedConfig, InlineConfig } from 'vite'; type BuildStep = ViteBuildStep | CustomBuildStep; interface ViteBuildStep { name: string; description?: string; config?: UserConfig; vite?: true; } interface CustomBuildStep { vite: false; name: string; description?: string; run(info: VaviteMultiBuildInfo, forwarded: Record): void | Promise | Record | Promise>; } interface VaviteMultiBuildInfo { buildSteps: BuildStep[]; currentStepIndex: number; currentStep: BuildStep; } interface MultibuildOptions { onMissingConfigFile?(resolvedConfig: ResolvedConfig): InlineConfig | undefined | Promise; onInitialConfigResolved?(resolvedConfig: ResolvedConfig): void | Promise; onStartBuildStep?(info: VaviteMultiBuildInfo): void | Promise; } declare function multibuild(config?: InlineConfig, options?: MultibuildOptions): Promise; declare module "vite" { interface UserConfig { buildSteps?: BuildStep[]; currentBuildStep?: BuildStep; } interface Plugin { /** * Called before a build step starts. * @param info Info about the build step (and build steps in general). * @param forwarded Data forwarded from the previous build step. */ buildStepStart?(info: VaviteMultiBuildInfo, forwarded: any): void | Promise; /** * Called after a build step has finished. The return value will be forwarded * to the next build step as a way of sharing information between steps. */ buildStepEnd?(): any | Promise; } } export { type BuildStep, type CustomBuildStep, type MultibuildOptions, type VaviteMultiBuildInfo, type ViteBuildStep, multibuild };