1aef260d6SEvan Bacondeclare module 'metro/src/shared/output/bundle' {
2aef260d6SEvan Bacon  export function build(
3aef260d6SEvan Bacon    arg0: Server,
4aef260d6SEvan Bacon    arg1: RequestOptions
5aef260d6SEvan Bacon  ): Promise<{
6aef260d6SEvan Bacon    code: string;
7aef260d6SEvan Bacon    map: string;
8aef260d6SEvan Bacon  }>;
9aef260d6SEvan Bacon  export function save(
10aef260d6SEvan Bacon    arg0: {
11aef260d6SEvan Bacon      code: string;
12aef260d6SEvan Bacon      map: string;
13aef260d6SEvan Bacon    },
14aef260d6SEvan Bacon    arg1: OutputOptions,
15da5824c9SKudo Chien    arg2: (...args: string[]) => void
16aef260d6SEvan Bacon  ): Promise<unknown>;
17aef260d6SEvan Bacon}
1833643b60SEvan Bacon
1933643b60SEvan Bacondeclare module 'metro/src/HmrServer' {
2033643b60SEvan Bacon  export class MetroHmrServer {
2133643b60SEvan Bacon    constructor(...args: any[]);
2233643b60SEvan Bacon  }
2333643b60SEvan Bacon
2433643b60SEvan Bacon  module.exports = MetroHmrServer;
2533643b60SEvan Bacon}
2633643b60SEvan Bacon
279b2597baSEvan Bacondeclare module 'metro/src/ModuleGraph/worker/collectDependencies' {
289b2597baSEvan Bacon  export type AllowOptionalDependenciesWithOptions = {
299b2597baSEvan Bacon    exclude: string[];
309b2597baSEvan Bacon  };
319b2597baSEvan Bacon
329b2597baSEvan Bacon  export type DynamicRequiresBehavior = 'throwAtRuntime' | 'reject';
339b2597baSEvan Bacon
349b2597baSEvan Bacon  export type AllowOptionalDependencies = boolean | AllowOptionalDependenciesWithOptions;
359b2597baSEvan Bacon}
369b2597baSEvan Bacon
379b2597baSEvan Bacondeclare module 'metro/src/DeltaBundler/types.flow' {
389b2597baSEvan Bacon  export type AllowOptionalDependenciesWithOptions = {
399b2597baSEvan Bacon    exclude: string[];
409b2597baSEvan Bacon  };
419b2597baSEvan Bacon
429b2597baSEvan Bacon  export type AllowOptionalDependencies = boolean | AllowOptionalDependenciesWithOptions;
439b2597baSEvan Bacon}
449b2597baSEvan Bacondeclare module 'metro/src/DeltaBundler' {
459b2597baSEvan Bacon  export type AsyncDependencyType = 'async' | 'prefetch';
469b2597baSEvan Bacon  export type TransformResultDependency = {
479b2597baSEvan Bacon    /**
489b2597baSEvan Bacon     * The literal name provided to a require or import call. For example 'foo' in
499b2597baSEvan Bacon     * case of `require('foo')`.
509b2597baSEvan Bacon     */
519b2597baSEvan Bacon    name: string;
529b2597baSEvan Bacon
539b2597baSEvan Bacon    /**
549b2597baSEvan Bacon     * Extra data returned by the dependency extractor.
559b2597baSEvan Bacon     */
569b2597baSEvan Bacon    data: {
579b2597baSEvan Bacon      /**
589b2597baSEvan Bacon       * A locally unique key for this dependency within the current module.
599b2597baSEvan Bacon       */
609b2597baSEvan Bacon      key: string;
619b2597baSEvan Bacon      /**
629b2597baSEvan Bacon       * If not null, this dependency is due to a dynamic `import()` or `__prefetchImport()` call.
639b2597baSEvan Bacon       */
649b2597baSEvan Bacon      asyncType: AsyncDependencyType | null;
659b2597baSEvan Bacon      /**
669b2597baSEvan Bacon       * The condition for splitting on this dependency edge.
679b2597baSEvan Bacon       */
689b2597baSEvan Bacon      splitCondition?: {
699b2597baSEvan Bacon        mobileConfigName: string;
709b2597baSEvan Bacon      };
719b2597baSEvan Bacon      /**
729b2597baSEvan Bacon       * The dependency is enclosed in a try/catch block.
739b2597baSEvan Bacon       */
749b2597baSEvan Bacon      isOptional?: boolean;
759b2597baSEvan Bacon
769b2597baSEvan Bacon      locs: $ReadOnlyArray<BabelSourceLocation>;
779b2597baSEvan Bacon
789b2597baSEvan Bacon      /** Context for requiring a collection of modules. */
799b2597baSEvan Bacon      contextParams?: RequireContextParams;
809b2597baSEvan Bacon    };
819b2597baSEvan Bacon  };
829b2597baSEvan Bacon}
839b2597baSEvan Bacon
849b2597baSEvan Bacondeclare module 'metro/src/lib/countLines' {
859b2597baSEvan Bacon  const countLines = (string: string) => number;
869b2597baSEvan Bacon
879b2597baSEvan Bacon  module.exports = countLines;
889b2597baSEvan Bacon  export default countLines;
899b2597baSEvan Bacon}
909b2597baSEvan Bacon
9133643b60SEvan Bacondeclare module 'metro/src/lib/createWebsocketServer' {
9233643b60SEvan Bacon  export function createWebsocketServer<TClient extends object>({
9333643b60SEvan Bacon    websocketServer,
9433643b60SEvan Bacon  }: HMROptions<TClient>): typeof import('ws').Server;
9533643b60SEvan Bacon
9633643b60SEvan Bacon  module.exports = createWebsocketServer;
9733643b60SEvan Bacon}
989b2597baSEvan Bacon
99*1f98cdd7SEvan Bacondeclare module 'metro/src/DeltaBundler/Serializers/getAssets' {
100*1f98cdd7SEvan Bacon  import { ConfigT } from 'metro-config';
101*1f98cdd7SEvan Bacon
102*1f98cdd7SEvan Bacon  function getMetroAssets(
103*1f98cdd7SEvan Bacon    dependencies: ReadOnlyDependencies,
104*1f98cdd7SEvan Bacon    options: {
105*1f98cdd7SEvan Bacon      processModuleFilter: ConfigT['serializer']['processModuleFilter'];
106*1f98cdd7SEvan Bacon      assetPlugins: ConfigT['transformer']['assetPlugins'];
107*1f98cdd7SEvan Bacon      platform: string;
108*1f98cdd7SEvan Bacon      projectRoot: string;
109*1f98cdd7SEvan Bacon      publicPath: string;
110*1f98cdd7SEvan Bacon    }
111*1f98cdd7SEvan Bacon  );
112*1f98cdd7SEvan Bacon
113*1f98cdd7SEvan Bacon  export default getMetroAssets;
114*1f98cdd7SEvan Bacon}
115*1f98cdd7SEvan Bacon
1169b2597baSEvan Bacondeclare module 'metro/src/lib/splitBundleOptions' {
117da5824c9SKudo Chien  import type { SplitBundleOptions } from 'metro/src/shared/types';
1189b2597baSEvan Bacon
1199b2597baSEvan Bacon  function splitBundleOptions(options: BundleOptions): SplitBundleOptions;
1209b2597baSEvan Bacon
1219b2597baSEvan Bacon  export default splitBundleOptions;
1229b2597baSEvan Bacon}
1239b2597baSEvan Bacon
1249b2597baSEvan Bacondeclare module 'metro/src/DeltaBundler/Serializers/helpers/js' {
1259b2597baSEvan Bacon  import type { JsOutput } from 'metro-transform-worker';
1269b2597baSEvan Bacon  import type { MixedOutput, Module } from 'metro';
1279b2597baSEvan Bacon
1289b2597baSEvan Bacon  export function getJsOutput(
1299b2597baSEvan Bacon    module: readonly {
1309b2597baSEvan Bacon      output: readonly MixedOutput[];
1319b2597baSEvan Bacon      path?: string;
1329b2597baSEvan Bacon    }
1339b2597baSEvan Bacon  ): JsOutput;
1349b2597baSEvan Bacon
1359b2597baSEvan Bacon  export function isJsModule(module: Module<unknown>): boolean;
1369b2597baSEvan Bacon}
1379b2597baSEvan Bacon
1389b2597baSEvan Bacondeclare module 'metro/src/Assets' {
1399b2597baSEvan Bacon  export type AssetInfo = {
1409b2597baSEvan Bacon    files: string[];
1419b2597baSEvan Bacon    hash: string;
1429b2597baSEvan Bacon    name: string;
1439b2597baSEvan Bacon    scales: number[];
1449b2597baSEvan Bacon    type: string;
1459b2597baSEvan Bacon  };
1469b2597baSEvan Bacon
1479b2597baSEvan Bacon  export type AssetDataWithoutFiles = {
1489b2597baSEvan Bacon    __packager_asset: boolean;
1499b2597baSEvan Bacon    fileSystemLocation: string;
1509b2597baSEvan Bacon    hash: string;
1519b2597baSEvan Bacon    height: number | null;
1529b2597baSEvan Bacon    httpServerLocation: string;
1539b2597baSEvan Bacon    name: string;
1549b2597baSEvan Bacon    scales: number[];
1559b2597baSEvan Bacon    type: string;
1569b2597baSEvan Bacon    width: number | null;
1579b2597baSEvan Bacon  };
1589b2597baSEvan Bacon
1599b2597baSEvan Bacon  export type AssetDataFiltered = {
1609b2597baSEvan Bacon    __packager_asset: boolean;
1619b2597baSEvan Bacon    hash: string;
1629b2597baSEvan Bacon    height: number | null;
1639b2597baSEvan Bacon    httpServerLocation: string;
1649b2597baSEvan Bacon    name: string;
1659b2597baSEvan Bacon    scales: number[];
1669b2597baSEvan Bacon    type: string;
1679b2597baSEvan Bacon    width: number | null;
1689b2597baSEvan Bacon  };
1699b2597baSEvan Bacon
170da5824c9SKudo Chien  export type AssetData = AssetDataWithoutFiles & { files: string[] };
1719b2597baSEvan Bacon
1729b2597baSEvan Bacon  export type AssetDataPlugin = (assetData: AssetData) => AssetData | Promise<AssetData>;
1739b2597baSEvan Bacon
1749b2597baSEvan Bacon  export async function getAsset(
1759b2597baSEvan Bacon    relativePath: string,
1769b2597baSEvan Bacon    projectRoot: string,
1779b2597baSEvan Bacon    watchFolders: readonly string[],
1789b2597baSEvan Bacon    platform: string | null | undefined,
1799b2597baSEvan Bacon    assetExts: readonly string[]
1809b2597baSEvan Bacon  ): Promise<Buffer>;
1819b2597baSEvan Bacon
1829b2597baSEvan Bacon  async function getAssetData(
1839b2597baSEvan Bacon    assetPath: string,
1849b2597baSEvan Bacon    localPath: string,
1859b2597baSEvan Bacon    assetDataPlugins: readonly string[],
1869b2597baSEvan Bacon    platform: string | null | undefined,
1879b2597baSEvan Bacon    publicPath: string
1889b2597baSEvan Bacon  ): Promise<AssetData>;
1899b2597baSEvan Bacon}
1909b2597baSEvan Bacon
191aef260d6SEvan Bacondeclare module 'metro' {
192da5824c9SKudo Chien  export * from 'metro/src/index.d';
193aef260d6SEvan Bacon
194da5824c9SKudo Chien  // Exports `Server` from 'metro' since TypeScript re-exporting doesn't work for default exports.
195da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/types/index.d.ts#L14
196da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/types/Server.d.ts#L89
197da5824c9SKudo Chien  export { default as Server } from 'metro/src/Server';
198aef260d6SEvan Bacon
199da5824c9SKudo Chien  // Exports `createConnectMiddleware` from 'metro' as a typo fix.
200da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/types/index.d.ts#L129
201da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/src/index.flow.js#L199
202da5824c9SKudo Chien  export { createConnectMiddleWare as createConnectMiddleware } from 'metro/src/index.d';
203aef260d6SEvan Bacon}
2046a750d06SEvan Bacon
2056a750d06SEvan Bacondeclare module 'metro/src/DeltaBundler/Serializers/baseJSBundle' {
206453a056bSEvan Bacon  import { ReadOnlyGraph, MixedOutput, Module, Graph, SerializerOptions } from 'metro';
2076a750d06SEvan Bacon
2086a750d06SEvan Bacon  type ModuleMap = readonly [number, string][];
2096a750d06SEvan Bacon
2106a750d06SEvan Bacon  type Bundle = {
2116a750d06SEvan Bacon    readonly modules: ModuleMap;
2126a750d06SEvan Bacon    readonly post: string;
2136a750d06SEvan Bacon    readonly pre: string;
2146a750d06SEvan Bacon  };
2156a750d06SEvan Bacon
2166a750d06SEvan Bacon  export default function baseJSBundle(
2176a750d06SEvan Bacon    entryPoint: string,
218453a056bSEvan Bacon    preModules: readonly Module<MixedOutput>[],
219453a056bSEvan Bacon    graph: ReadOnlyGraph,
2206a750d06SEvan Bacon    options: SerializerOptions
2216a750d06SEvan Bacon  ): Bundle;
2226a750d06SEvan Bacon}
2236a750d06SEvan Bacon
2246a750d06SEvan Bacondeclare module 'metro/src/lib/bundleToString' {
2256a750d06SEvan Bacon  type ModuleMap = readonly [number, string][];
2266a750d06SEvan Bacon
2276a750d06SEvan Bacon  type Bundle = {
2286a750d06SEvan Bacon    readonly modules: ModuleMap;
2296a750d06SEvan Bacon    readonly post: string;
2306a750d06SEvan Bacon    readonly pre: string;
2316a750d06SEvan Bacon  };
2326a750d06SEvan Bacon
2336a750d06SEvan Bacon  type BundleMetadata = {
2346a750d06SEvan Bacon    readonly pre: number;
2356a750d06SEvan Bacon    readonly post: number;
2366a750d06SEvan Bacon    readonly modules: readonly [number, number][];
2376a750d06SEvan Bacon  };
2386a750d06SEvan Bacon
2396a750d06SEvan Bacon  export default function bundleToString(bundle: Bundle): {
2406a750d06SEvan Bacon    readonly code: string;
2416a750d06SEvan Bacon    readonly metadata: BundleMetadata;
2426a750d06SEvan Bacon  };
2436a750d06SEvan Bacon}
244da5824c9SKudo Chien
245da5824c9SKudo Chiendeclare module 'metro/src/IncrementalBundler' {
246da5824c9SKudo Chien  import type OriginalIncrementalBundler from 'metro/src/IncrementalBundler.d';
247da5824c9SKudo Chien
248da5824c9SKudo Chien  // Overrides the `IncrementalBundler.getDependencies` returned type for inconsistent
249da5824c9SKudo Chien  // ReadOnlyDependencies<void> <-> ReadOnlyDependencies<> type.
250da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/src/IncrementalBundler.js#L159
251da5824c9SKudo Chien  // https://github.com/facebook/metro/blob/40f9f068109f27ccd80f45f861501a8839f36d85/packages/metro/types/IncrementalBundler.d.ts#L66
252da5824c9SKudo Chien  export default class IncrementalBundler extends OriginalIncrementalBundler {
253da5824c9SKudo Chien    getDependencies(
254da5824c9SKudo Chien      entryFiles: readonly string[],
255da5824c9SKudo Chien      transformOptions: TransformInputOptions,
256da5824c9SKudo Chien      resolverOptions: ResolverInputOptions,
257da5824c9SKudo Chien      otherOptions?: OtherOptions
258da5824c9SKudo Chien    ): Promise<ReadOnlyDependencies>;
259da5824c9SKudo Chien  }
260da5824c9SKudo Chien}
261