import { Options } from '@vitejs/plugin-vue';
import { Options as Options$1 } from '@vitejs/plugin-vue-jsx';
import { UserConfig } from 'unocss';
import { Options as Options$2 } from 'unplugin-auto-import/types';
import { Options as Options$3 } from 'unplugin-vue-components';
import { UserConfigExport, UserConfig as UserConfig$1, UserConfigFnPromise } from 'vite';
import { VitePluginVueDevToolsOptions } from 'vite-plugin-vue-devtools';

// 扩展 Vite 原生配置类型
declare module 'vite' {
  interface UserConfig extends UserConfigExport {
    test?: VitestUserConfig['test'] // 直接从 Vitest 类型中提取
  }
}

interface UnocssOptions extends UserConfig {
  inspector?: boolean
  mode?: 'global' | 'per-module' | 'vue-scoped' | 'dist-chunk' | 'shadow-dom'
  transformCSS?: boolean | 'pre' | 'post'
  postcss?: boolean
  hmrTopLevelAwait?: boolean
  fetchMode?: 'cors' | 'navigate' | 'no-cors' | 'same-origin'
}

interface PluginsCustomOptions {
  vue?: Options | false
  vueJsx?: Options$1 | false
  autoImport?: Options$2 | false
  vueComponents?: Options$3 | false
  unocss?: UnocssOptions | false
  devTools?: VitePluginVueDevToolsOptions | false
}

interface ApplicationViteConfigOptions {
    overrides?: UserConfigExport;
    pluginOptions?: PluginsCustomOptions;
}
declare function mergeConfigs(configs: UserConfig$1[]): Record<string, any>;
declare function createViteConfig(applicationViteConfigOptions?: ApplicationViteConfigOptions): Promise<UserConfigFnPromise>;

export { type PluginsCustomOptions, type UnocssOptions, createViteConfig, mergeConfigs };
