import type { Esmx } from '@esmx/core';
import { type SwcLoaderOptions } from '@rspack/core';
import { type BuildTarget, RSPACK_LOADER, type RspackAppOptions } from '../rspack';
import type { TargetSetting } from './target-setting';
export type { TargetSetting };
export interface RspackHtmlAppOptions extends RspackAppOptions {
    /**
     * CSS output mode configuration
     *
     * @default Automatically selected based on environment:
     * - Production: 'css', outputs CSS to separate files for better caching and parallel loading
     * - Development: 'js', bundles CSS into JS to support hot module replacement (HMR) for instant style updates
     *
     * - 'css': Output CSS to separate CSS files
     * - 'js': Bundle CSS into JS files and dynamically inject styles at runtime
     * - false: Disable default CSS processing configuration, requires manual loader rule configuration
     *
     * @example
     * ```ts
     * // Use environment default configuration
     * css: undefined
     *
     * // Force output to separate CSS files
     * css: 'css'
     *
     * // Force bundle into JS
     * css: 'js'
     *
     * // Custom CSS processing
     * css: false
     * ```
     */
    css?: 'css' | 'js' | false;
    /**
     * Custom loader configuration
     *
     * Allows replacing default loader implementations, useful for switching to framework-specific loaders
     *
     * @example
     * ```ts
     * // Use Vue's style-loader
     * loaders: {
     *   styleLoader: 'vue-style-loader'
     * }
     * ```
     */
    loaders?: Partial<Record<keyof typeof RSPACK_LOADER, string>>;
    /**
     * Configure style injection method. For complete options, see:
     * https://github.com/webpack-contrib/style-loader
     *
     * @example
     * ```ts
     * styleLoader: {
     *   injectType: 'singletonStyleTag',
     *   attributes: { id: 'app-styles' }
     * }
     * ```
     */
    styleLoader?: Record<string, any>;
    /**
     * Configure CSS modules, URL resolution, etc. For complete options, see:
     * https://github.com/webpack-contrib/css-loader
     *
     * @example
     * ```ts
     * cssLoader: {
     *   modules: true,
     *   url: false
     * }
     * ```
     */
    cssLoader?: Record<string, any>;
    /**
     * Configure Less compilation options. For complete options, see:
     * https://github.com/webpack-contrib/less-loader
     *
     * @example
     * ```ts
     * lessLoader: {
     *   lessOptions: {
     *     javascriptEnabled: true,
     *     modifyVars: { '@primary-color': '#1DA57A' }
     *   }
     * }
     * ```
     */
    lessLoader?: Record<string, any>;
    /**
     * Automatically inject global style resources. For complete options, see:
     * https://github.com/yenshih/style-resources-loader
     *
     * @example
     * ```ts
     * styleResourcesLoader: {
     *   patterns: [
     *     './src/styles/variables.less',
     *     './src/styles/mixins.less'
     *   ]
     * }
     * ```
     */
    styleResourcesLoader?: Record<string, any>;
    /**
     * Configure TypeScript/JavaScript compilation options. For complete options, see:
     * https://rspack.dev/guide/features/builtin-swc-loader
     *
     * @example
     * ```ts
     * swcLoader: {
     *   jsc: {
     *     parser: {
     *       syntax: 'typescript',
     *       decorators: true
     *     },
     *     transform: {
     *       legacyDecorator: true
     *     }
     *   }
     * }
     * ```
     */
    swcLoader?: SwcLoaderOptions;
    /**
     * Define compile-time global constants, supports setting different values for different build targets
     * For complete documentation, see: https://rspack.dev/plugins/webpack/define-plugin
     *
     * @example
     * ```ts
     * // Unified value
     * definePlugin: {
     *   'process.env.APP_ENV': JSON.stringify('production')
     * }
     *
     * // Values for different build targets
     * definePlugin: {
     *   'process.env.IS_SERVER': {
     *     server: 'true',
     *     client: 'false'
     *   }
     * }
     * ```
     */
    definePlugin?: Record<string, string | Partial<Record<BuildTarget, string>>>;
    /**
     * Set the target runtime environment for the code, affecting code compilation downgrading and polyfill injection
     *
     * @example
     * ```ts
     * // Global compatible mode
     * target: 'compatible'
     *
     * // Global modern mode
     * target: 'modern'
     *
     * // Global custom targets
     * target: ['chrome>=89', 'edge>=89', 'firefox>=108', 'safari>=16.4', 'node>=24']
     *
     * // Per-build-target configuration
     * target: {
     *   client: 'modern',
     *   server: ['node>=24']
     * }
     * ```
     */
    target?: TargetSetting;
}
export declare function createRspackHtmlApp(esmx: Esmx, options?: RspackHtmlAppOptions): Promise<import("@esmx/core").App>;
