import { type RollupBabelInputPluginOptions } from "@rollup/plugin-babel";
import { type Options as TerserOptions } from "@rollup/plugin-terser";
import type { LaxPartial } from "@samual/types";
import type { RolldownOptions } from "rolldown";
import { type Options as PrettierOptions } from "rollup-plugin-prettier";
type Options = LaxPartial<{
	/**
	* Override the source folder.
	* @default "src"
	*
	* @example
	* ```js
	* // rolldown.config.js
	* import { rolldownConfig } from "@samual/rolldown-config"
	*
	* export default rolldownConfig({ sourcePath: "source" })
	* ```
	*/
	sourcePath: string;
	/**
	* Override any Rolldown options.
	* @see [Official Rolldown docs.](https://rolldown.rs/reference/config-options)
	*
	* @example
	* ```ts
	* // rolldown.config.js
	* import { rolldownConfig } from "@samual/rolldown-config"
	*
	* // You can override the output folder like so:
	* export default rolldownConfig({ rolldownOptions: { output: { dir: "build" } } })
	* ```
	*/
	rolldownOptions: RolldownOptions;
	/**
	* Override any Babel options.
	* @see [Official Babel docs.](https://babeljs.io/docs/options)
	*/
	babelOptions: RollupBabelInputPluginOptions;
	/**
	* Override any Terser options.
	* @see [Official Terser docs.](https://terser.org/docs/options/)
	*/
	terserOptions: TerserOptions;
	/**
	* Override any Prettier options.
	* @see [Official Prettier docs.](https://prettier.io/docs/en/options)
	*/
	prettierOptions: PrettierOptions;
	experimental: LaxPartial<{
		noSideEffects: boolean;
		disablePrettier: boolean;
	}>;
}>;
/**
* Construct a {@linkcode RollupOptions} object.
*
* Compiles all `.js` and `.ts` files (excludes `.test.js`, `.test.ts`, and `.d.ts`) found in the
* {@linkcode Options.sourcePath sourcePath}.
*
* @see {@linkcode Options}
*
* @example
* ```text
* src/
* 	env.d.ts
* 	foo.ts
* 	bar/
* 		baz.ts
* 		baz.test.ts
* dist/
* 	foo.js
* 	bar/
* 		baz.js
* ```
*
* @example
* ```js
* // rolldown.config.js
* import { rolldownConfig } from "@samual/rolldown-config"
*
* export default rolldownConfig()
* ```
*/
export declare const rolldownConfig: ({ sourcePath, rolldownOptions, babelOptions, terserOptions, prettierOptions, experimental }?: Options) => Promise<RolldownOptions>;
export {};
