import type { Context, BundlerChain, RsbuildConfig, CreateAsyncHook, BundlerChainRule, NormalizedConfig, RsbuildPluginAPI, ModifyBundlerChainFn, ModifyBundlerChainUtils } from './types';
export declare function getBundlerChain(): Promise<BundlerChain>;
export declare function modifyBundlerChain(context: Context & {
    hooks: {
        modifyBundlerChainHook: CreateAsyncHook<ModifyBundlerChainFn>;
    };
    config: Readonly<RsbuildConfig>;
}, utils: ModifyBundlerChainUtils): Promise<BundlerChain>;
export declare const CHAIN_ID: {
    /** Predefined rules */
    readonly RULE: {
        /** Rule for .mjs */
        readonly MJS: "mjs";
        /** Rule for fonts */
        readonly FONT: "font";
        /** Rule for images */
        readonly IMAGE: "image";
        /** Rule for media */
        readonly MEDIA: "media";
        /** Rule for js */
        readonly JS: "js";
        /** Rule for data uri encoded javascript */
        readonly JS_DATA_URI: "js-data-uri";
        /** Rule for ts */
        readonly TS: "ts";
        /** Rule for css */
        readonly CSS: "css";
        /** Rule for less */
        readonly LESS: "less";
        /** Rule for sass */
        readonly SASS: "sass";
        /** Rule for stylus */
        readonly STYLUS: "stylus";
        /** Rule for svg */
        readonly SVG: "svg";
        /** Rule for pug */
        readonly PUG: "pug";
        /** Rule for Vue */
        readonly VUE: "vue";
        /** Rule for toml */
        readonly TOML: "toml";
        /** Rule for yaml */
        readonly YAML: "yaml";
        /** Rule for wasm */
        readonly WASM: "wasm";
        /** Rule for node */
        readonly NODE: "node";
        /** Rule for svelte */
        readonly SVELTE: "svelte";
    };
    /** Predefined rule groups */
    readonly ONE_OF: {
        readonly SVG: "svg";
        readonly SVG_URL: "svg-url";
        readonly SVG_ASSET: "svg-asset";
        readonly SVG_INLINE: "svg-inline";
    };
    /** Predefined loaders */
    readonly USE: {
        /** ts-loader */
        readonly TS: "ts";
        /** css-loader */
        readonly CSS: "css";
        /** sass-loader */
        readonly SASS: "sass";
        /** less-loader */
        readonly LESS: "less";
        /** stylus-loader */
        readonly STYLUS: "stylus";
        /** url-loader */
        readonly URL: "url";
        /** pug-loader */
        readonly PUG: "pug";
        /** vue-loader */
        readonly VUE: "vue";
        /** @svgr/webpack */
        readonly SVGR: "svgr";
        /** yaml-loader */
        readonly YAML: "yaml";
        /** toml-loader */
        readonly TOML: "toml";
        /** node-loader */
        readonly NODE: "node";
        /** babel-loader */
        readonly BABEL: "babel";
        /** esbuild-loader */
        readonly ESBUILD: "esbuild";
        /** swc-loader */
        readonly SWC: "swc";
        /** style-loader */
        readonly STYLE: "style-loader";
        /** postcss-loader */
        readonly POSTCSS: "postcss";
        /** ignore-css-loader */
        readonly IGNORE_CSS: "ignore-css";
        /** css-modules-typescript-loader */
        readonly CSS_MODULES_TS: "css-modules-typescript";
        /** mini-css-extract-plugin.loader */
        readonly MINI_CSS_EXTRACT: "mini-css-extract";
        /** resolve-url-loader */
        readonly RESOLVE_URL_LOADER_FOR_SASS: "resolve-url-loader";
        /** plugin-image-compress.loader */
        readonly IMAGE_COMPRESS: "image-compress";
        /** plugin-image-compress svgo-loader */
        readonly SVGO: "svgo";
        /** svelte-loader */
        readonly SVELTE: "svelte";
    };
    /** Predefined plugins */
    readonly PLUGIN: {
        /** HotModuleReplacementPlugin */
        readonly HMR: "hmr";
        /** CopyWebpackPlugin */
        readonly COPY: "copy";
        /** HtmlWebpackPlugin */
        readonly HTML: "html";
        /** DefinePlugin */
        readonly DEFINE: "define";
        /** IgnorePlugin */
        readonly IGNORE: "ignore";
        /** BannerPlugin */
        readonly BANNER: "banner";
        /** ProgressPlugin */
        readonly PROGRESS: "progress";
        /** Inspector */
        readonly INSPECTOR: "inspector";
        /** AppIconPlugin */
        readonly APP_ICON: "app-icon";
        /** WebpackManifestPlugin */
        readonly MANIFEST: "webpack-manifest";
        /** ForkTsCheckerWebpackPlugin */
        readonly TS_CHECKER: "ts-checker";
        /** InlineChunkHtmlPlugin */
        readonly INLINE_HTML: "inline-html";
        /** WebpackBundleAnalyzer */
        readonly BUNDLE_ANALYZER: "bundle-analyze";
        /** HtmlTagsPlugin */
        readonly HTML_TAGS: "html-tags";
        /** HtmlBasicPlugin */
        readonly HTML_BASIC: "html-basic";
        /** HtmlNoncePlugin */
        readonly HTML_NONCE: "html-nonce";
        /** HtmlCrossOriginPlugin */
        readonly HTML_CROSS_ORIGIN: "html-cross-origin";
        /** htmlPreconnectPlugin */
        readonly HTML_PRECONNECT: "html-preconnect-plugin";
        /** htmlDnsPrefetchPlugin */
        readonly HTML_DNS_PREFETCH: "html-dns-prefetch-plugin";
        /** htmlPrefetchPlugin */
        readonly HTML_PREFETCH: "html-prefetch-plugin";
        /** htmlPreloadPlugin */
        readonly HTML_PRELOAD: "html-preload-plugin";
        /** MiniCssExtractPlugin */
        readonly MINI_CSS_EXTRACT: "mini-css-extract";
        /** VueLoaderPlugin */
        readonly VUE_LOADER_PLUGIN: "vue-loader-plugin";
        /** ReactFastRefreshPlugin */
        readonly REACT_FAST_REFRESH: "react-fast-refresh";
        /** ProvidePlugin for node polyfill */
        readonly NODE_POLYFILL_PROVIDE: "node-polyfill-provide";
        /** WebpackSRIPlugin */
        readonly SUBRESOURCE_INTEGRITY: "subresource-integrity";
        /** WebpackAssetsRetryPlugin */
        readonly ASSETS_RETRY: "assets-retry";
        /** AutoSetRootFontSizePlugin */
        readonly AUTO_SET_ROOT_SIZE: "auto-set-root-size";
        /** HtmlAsyncChunkPlugin */
        readonly HTML_ASYNC_CHUNK: "html-async-chunk";
    };
    /** Predefined minimizers */
    readonly MINIMIZER: {
        /** TerserWebpackPlugin */
        readonly JS: "js";
        /** CssMinimizerWebpackPlugin */
        readonly CSS: "css";
        /** ESBuildPlugin */
        readonly ESBUILD: "js-css";
        /** SWCPlugin */
        readonly SWC: "swc";
    };
    /** Predefined resolve plugins */
    readonly RESOLVE_PLUGIN: {
        /** ModuleScopePlugin */
        readonly MODULE_SCOPE: "module-scope";
        /** TsConfigPathsPlugin */
        readonly TS_CONFIG_PATHS: "ts-config-paths";
    };
};
export type ChainIdentifier = typeof CHAIN_ID;
export declare function applyScriptCondition({ rule, config, context, includes, excludes, }: {
    rule: BundlerChainRule;
    config: NormalizedConfig;
    context: Context;
    includes: (string | RegExp)[];
    excludes: (string | RegExp)[];
}): void;
export declare function applyOutputPlugin(api: RsbuildPluginAPI): void;
export declare function applyResolvePlugin(api: RsbuildPluginAPI): void;
