import { PluginOptions } from 'babel-plugin-react-compiler';
export { PluginOptions as ReactCompilerConfig } from 'babel-plugin-react-compiler';
import babel from '@babel/core';
import { NextConfig } from 'next/dist/server/config-shared';
import { RuleSetRule } from 'webpack';

interface ReactCompilerLoaderOption extends PluginOptions {
    babelTransFormOpt?: babel.TransformOptions;
}

declare const reactCompilerLoader: string;

type RuleOptions = Omit<RuleSetRule, 'use'>;
declare const defineReactCompilerLoaderOption: (options: ReactCompilerLoaderOption) => ReactCompilerLoaderOption;
declare function withReactCompiler(pluginOptions?: ReactCompilerLoaderOption, ruleOptions?: RuleOptions): (nextConfig?: NextConfig) => NextConfig;

export { type ReactCompilerLoaderOption, defineReactCompilerLoaderOption, reactCompilerLoader, withReactCompiler };
