import type { ConfigEnv, UserConfig } from "vite";
/**
 * Configuration options for the FeedMe Microfrontend (FMMF) Vite preset.
 *
 * This preset configures Vite to work with a microfrontend architecture using ES Module importmaps.
 * It handles externalization of dependencies, CDN imports, and proper bundling for both development
 * and production (fmmf) modes.
 *
 * @example
 * ```typescript
 * fmmfVitePresent(config, env, {
 *   excludeFmmfPackages: ['@feedmepos/mf-old-app'],
 *   externalize: true,
 *   externalizeCore: true
 * })
 * ```
 */
export interface FmmfPresentOptions {
    /**
     * List of FMMF package names to exclude from the importmap.
     *
     * Use this when you want to bundle a specific microfrontend into your app instead of
     * loading it externally. This only affects your local build; to exclude packages in the
     * portal, contact the project leader.
     *
     * @example ['@feedmepos/mf-old-feature', '@feedmepos/mf-deprecated']
     */
    excludeFmmfPackages?: string[];
    /**
     * List of additional FMMF package names to include in the importmap.
     *
     * Use this to add microfrontends that aren't in your package.json dependencies but
     * should be available at runtime. This only affects your local build.
     *
     * @example ['@feedmepos/mf-experimental', '@feedmepos/mf-feature-flag']
     */
    includeFmmfPackages?: string[];
    /**
     * Map of package names to custom CDN URLs to override default jsdelivr CDN.
     *
     * Useful for testing local builds or using different CDN sources. Keys must start with
     * '@feedmepos/mf-' or be '@feedmepos/ui-library'. This only affects your local build.
     *
     * @example { '@feedmepos/mf-menu': 'http://localhost:5173/dist/app.js' }
     * @throws Error if keys don't start with '@feedmepos/mf-' or '@feedmepos/ui-library'
     */
    replaceFmmfPackages?: Record<string, string>;
    /**
     * Import map scopes for granular control over module resolution in specific contexts.
     *
     * Scopes allow different versions of the same module to be used in different parts of
     * the application. See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap#scopes
     *
     * @example { './local/': { 'vue': 'https://cdn.example.com/vue@3.4.0/dist/vue.esm.js' } }
     */
    importMapScopes?: Record<string, string>;
    /**
     * Flag indicating development mode. Currently not actively used in the implementation.
     *
     * @deprecated This flag is not currently utilized in the preset logic.
     */
    isDev?: boolean;
    /**
     * Controls externalization of microfrontends during development (esbuild phase).
     *
     * When enabled, microfrontend modules won't be bundled but will be loaded from CDN/importmap.
     * This speeds up dev builds but requires proper importmap configuration.
     *
     * - `true`: Externalize all microfrontends and their dependencies
     * - `string[]`: Externalize only specific package names
     * - `false` or undefined: Bundle all dependencies normally
     *
     * @example true // Externalize everything
     * @example ['@feedmepos/mf-menu', 'vue'] // Externalize specific packages
     */
    externalize?: boolean | string[];
    /**
     * Whether to externalize @feedmepos/core packages (core, core/fn, core/entity, core/modules).
     *
     * When true, core packages are loaded from jsdelivr CDN instead of being bundled.
     * Useful for sharing core logic across multiple microfrontends and reducing bundle size.
     *
     * @default false
     */
    externalizeCore?: boolean;
}
/**
 * FeedMe Microfrontend Vite Preset
 *
 * Configures Vite for microfrontend architecture with ES Module importmaps.
 * Handles externalization, CDN imports, and proper bundling for dev and production.
 *
 * @param config - Base Vite configuration to extend
 * @param command - Vite command ('build' or 'serve')
 * @param mode - Build mode (e.g., 'development', 'production', 'fmmf')
 * @param options - FMMF-specific configuration options
 * @returns Modified Vite configuration with microfrontend support
 */
export declare const fmmfVitePresent: (config: UserConfig, { command, mode }: ConfigEnv, options?: FmmfPresentOptions) => Promise<UserConfig>;
//# sourceMappingURL=vite-preset.d.ts.map