import type { CodeTransform } from '@vue-macros/common';
import type { ParserPlugin } from '@babel/parser';
import MagicStringAST from 'magic-string';
import type { SourceMap } from 'magic-string';
import type { ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, Program } from '@babel/types';



declare function transformVueSFC(code: string, id: string): CodeTransform | undefined;











declare function shouldTransform(src: string): boolean;
interface RefTransformOptions {
	filename?: string;
	sourceMap?: boolean;
	parserPlugins?: ParserPlugin[];
	importHelpersFrom?: string;
}
interface RefTransformResults {
	code: string;
	map: SourceMap | null;
	rootRefs: string[];
	importedHelpers: string[];
}
interface ImportBinding {
	local: string;
	imported: string;
	source: string;
	specifier: ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier;
}
declare function transform(src: string, { filename, sourceMap, parserPlugins, importHelpersFrom }?: RefTransformOptions): RefTransformResults;
declare function transformAST(ast: Program, s: MagicStringAST, offset?: number, knownRefs?: string[], knownProps?: Record<string, {
	local: string
	default?: any
	isConst?: boolean
}>): {
	rootRefs: string[]
	importedHelpers: string[]
};

export { shouldTransform, transform, transformAST, transformVueSFC };
export type { ImportBinding, RefTransformOptions, RefTransformResults };
