declare module "@babel/template" { declare type PublicOpts = { placeholderWhitelist?: ?Set, placeholderPattern?: ?(RegExp | false), preserveComments?: ?boolean, syntacticPlaceholders?: ?boolean, }; declare type PublicReplacements = { [string]: mixed } | Array; declare type TemplateBuilder = { ast: { (tpl: string, opts: ?PublicOpts): T, (tpl: Array, ...args: Array): T, }, (opts: PublicOpts): TemplateBuilder, (tpl: string, opts: ?PublicOpts): (?PublicReplacements) => T, (tpl: Array, ...args: Array): (?PublicReplacements) => T, }; declare type Smart = TemplateBuilder< Array | BabelNodeStatement >; declare type Statement = TemplateBuilder; declare type Statements = TemplateBuilder>; declare type Expression = TemplateBuilder; declare type Program = TemplateBuilder; declare export default Smart & { smart: Smart, statement: Statement, statements: Statements, expression: Expression, program: Program, }; } declare module "@babel/helper-optimise-call-expression" { declare export default function optimiseCallExpression( callee: BabelNodeExpression, thisNode: BabelNodeExpression, args: $Readonly>, optional: boolean ): BabelNodeCallExpression | BabelNodeOptionalCallExpression; } declare module "@babel/helper-get-function-arity" { declare export default function helperGetFunctionArity( node: BabelNodeFunction ): number; } declare module "@babel/helper-annotate-as-pure" { declare export default function annotateAsPure( pathOrNode: | BabelNode | { node: BabelNode, } ): void; }