import type { RsbuildTarget, BundlerChainRule, RsbuildConfig, InspectConfigOptions, CreateRsbuildOptions, NormalizedDevConfig, NormalizedHtmlConfig, NormalizedOutputConfig, NormalizedSourceConfig, NormalizedSecurityConfig, NormalizedPerformanceConfig, NormalizedToolsConfig, NormalizedConfig } from './types';
export declare const getDefaultDevConfig: () => NormalizedDevConfig;
export declare const getDefaultSourceConfig: () => NormalizedSourceConfig;
export declare const getDefaultHtmlConfig: () => NormalizedHtmlConfig;
export declare const getDefaultSecurityConfig: () => NormalizedSecurityConfig;
export declare const getDefaultToolsConfig: () => NormalizedToolsConfig;
export declare const getDefaultPerformanceConfig: () => NormalizedPerformanceConfig;
export declare const getDefaultOutputConfig: () => NormalizedOutputConfig;
export declare function outputInspectConfigFiles({
  rsbuildConfig,
  bundlerConfigs,
  inspectOptions,
  rsbuildOptions,
  configType
}: {
  configType: string;
  rsbuildConfig: string;
  bundlerConfigs: string[];
  inspectOptions: InspectConfigOptions & {
    outputPath: string;
  };
  rsbuildOptions: Required<CreateRsbuildOptions>;
}): Promise<void>;
/**
 * lodash set type declare.
 * eg. a.b.c; a[0].b[1]
 */
export type GetTypeByPath<T extends string, C extends Record<string, any>> = T extends `${infer K}[${infer P}]${infer S}` ? GetTypeByPath<`${K}.${P}${S}`, C> : T extends `${infer K}.${infer P}` ? GetTypeByPath<P, K extends '' ? C : NonNullable<C[K]>> : C[T];
export declare const setConfig: <T extends Record<string, any>, P extends string>(config: T, path: P, value: GetTypeByPath<P, T>) => void;
export declare function getExtensions({
  target,
  resolveExtensionPrefix,
  isTsProject
}?: {
  target?: RsbuildTarget;
  resolveExtensionPrefix?: NormalizedSourceConfig['resolveExtensionPrefix'];
  isTsProject?: boolean;
}): string[];
export declare function getMinify(isProd: boolean, config: NormalizedConfig): Promise<false | {
  removeComments: boolean;
  useShortDoctype: boolean;
  keepClosingSlash: boolean;
  collapseWhitespace: boolean;
  removeRedundantAttributes: boolean;
  removeScriptTypeAttributes: boolean;
  removeStyleLinkTypeAttributes: boolean;
  removeEmptyAttributes: boolean;
  minifyJS: import("terser").MinifyOptions;
  minifyCSS: boolean;
  minifyURLs: boolean;
}>;
export declare function stringifyConfig(config: unknown, verbose?: boolean): Promise<string>;
export declare const chainStaticAssetRule: ({
  rule,
  maxSize,
  filename,
  assetType,
  issuer
}: {
  rule: BundlerChainRule;
  maxSize: number;
  filename: string;
  assetType: string;
  issuer?: any;
}) => void;
export declare const getDefaultStyledComponentsConfig: (isProd: boolean, ssr: boolean) => {
  ssr: boolean;
  pure: boolean;
  displayName: boolean;
  transpileTemplateLiterals: boolean;
};
/**
 * Omit unused keys from Rsbuild config passed by user
 */
export declare const pickRsbuildConfig: (rsbuildConfig: RsbuildConfig) => RsbuildConfig;