import * as rollup from 'rollup';
import * as unplugin from 'unplugin';
import { FilterPattern, UnpluginInstance } from 'unplugin';
import export_default from './babel.js';
import '@babel/traverse';
import '@babel/types';

interface Options {
    include?: FilterPattern;
    exclude?: FilterPattern;
    enforce?: 'post' | 'pre' | undefined;
    forceTgpuAlias?: string;
}

declare const typegpu: UnpluginInstance<Options, false>;

declare const vitePlugin: (options: Options) => unplugin.VitePlugin<any>;
declare const rollupPlugin: (options: Options) => rollup.Plugin<any>;
declare const rolldownPlugin: (options: Options) => Plugin$3;
declare const webpackPlugin: (options: Options) => WebpackPluginInstance;
declare const rspackPlugin: (options: Options) => RspackPluginInstance;
declare const esbuildPlugin: (options: Options) => unplugin.EsbuildPlugin;
declare const farmPlugin: (options: Options) => JsPlugin;
declare const babelPlugin: typeof export_default;

export { type Options, babelPlugin, typegpu as default, esbuildPlugin, farmPlugin, rolldownPlugin, rollupPlugin, rspackPlugin, vitePlugin, webpackPlugin };
