1declare module 'metro-babel-transformer' {
2  import type { FBSourceFunctionMap } from 'metro-source-map';
3  import type { Ast, PluginItem, BabelFileMetadata } from '@babel/core';
4
5  export type CustomTransformOptions = {
6    [key: string]: unknown;
7    __proto__: null;
8  };
9
10  export type TransformProfile = 'default' | 'hermes-stable' | 'hermes-canary';
11
12  export type BabelTransformerOptions = {
13    customTransformOptions?: CustomTransformOptions;
14    dev: boolean;
15    disableFlowStripTypesTransform?: boolean;
16    enableBabelRCLookup?: boolean;
17    enableBabelRuntime: boolean;
18    experimentalImportSupport?: boolean;
19    hot: boolean;
20    inlineRequires: boolean;
21    minify: boolean;
22    unstable_disableES6Transforms?: boolean;
23    platform: ?string;
24    projectRoot: string;
25    publicPath: string;
26    extendsBabelConfigPath?: string;
27    hermesParser?: boolean;
28  };
29
30  export type BabelTransformerArgs = {
31    filename: string;
32    options: BabelTransformerOptions;
33    plugins?: PluginItem[];
34    src: string;
35  };
36
37  export type BabelTransformer = {
38    transform: (args: BabelTransformerArgs) => {
39      ast: Ast;
40      metadata?: BabelFileMetadata;
41      code?: string | null;
42      functionMap?: FBSourceFunctionMap | null;
43    };
44    getCacheKey?: () => string;
45  };
46}
47