/** * Updates-shaped host API for sideloading extension bundles after expo-updates. * Does not run inside the appex. Optional peer: expo-updates. */ export type ExtensionBundleManifest = { byteLength: number; sha256: string; installedAt: string; runtimeVersion: string; targetName: string; type: string; }; export type ExtensionUpdatesCheckResult = { isAvailable: boolean; manifest?: Record; reason?: string; }; export type ExtensionUpdatesFetchResult = { isNew: boolean; installed: ExtensionBundleManifest[]; reason?: string; }; type UpdatesLike = { checkForUpdateAsync: () => Promise<{ isAvailable: boolean; manifest?: Record; reason?: string; }>; fetchUpdateAsync: () => Promise<{ isNew: boolean; manifest?: Record; }>; reloadAsync: () => Promise; runtimeVersion?: string | null; }; export type ExtensionUpdatesSyncTarget = { targetName: string; type: string; runtimeVersion?: string; }; export type ExtensionUpdatesOptions = { /** App Group id for native install (required unless `install` is injected). */ appGroup?: string; /** * Metro asset module ids from `assets/expo-targets/extensionBundleModules.js` * (generated by `export-extension-bundles`). Used by default `resolveAssetPath`. */ assetModules?: Record; resolveAssetPath?: (targetName: string) => string | null | Promise; install?: (opts: { targetName: string; type: string; runtimeVersion: string; localPath: string; }) => Promise; getUpdates?: () => UpdatesLike | null; targets: ExtensionUpdatesSyncTarget[]; }; /** * Convert an expo-asset `localUri` into a filesystem path. * Must percent-decode: stripping only `file://` leaves `Application%20Support` * and native `fileExists` fails. */ export declare function fileUriToFsPath(uri: string): string; export declare function createExtensionUpdates(options: ExtensionUpdatesOptions): { checkForUpdateAsync: () => Promise; fetchUpdateAsync: () => Promise; reloadAsync: () => Promise; syncFromCurrentUpdate: () => Promise; }; export {}; //# sourceMappingURL=ExtensionUpdates.d.ts.map