import type { ExtensionType } from '../../domain'; /** * Everything the pipeline needs to know about what already exists on disk for * one target. This is the only place the iOS pipeline reads the user's target * directory: planners take a `TargetWorkspace` and never touch the file system. */ export type TargetWorkspace = { projectRoot: string; /** Target directory relative to the project root, e.g. `targets/my-share`. */ directory: string; type: ExtensionType; /** Absolute path to `//ios`. */ targetDirectory: string; /** * Absolute path to sealed build output: * `ios//ExpoTargetsGenerated//`. */ targetBuildPath: string; /** Existing user Swift files, relative to `targetDirectory`. */ swiftFiles: string[]; /** * Extra files to Copy Bundle Resources (relative to `targetDirectory`). * Content blockers need `blockerList.json` in the appex root. */ bundleResourceFiles: string[]; /** Absolute path to the user's `Assets.xcassets` / `Stickers.xcassets`. */ userAssetsPath: string; hasUserAssets: boolean; /** * True when the user catalog contains `AppIcon.appiconset`. * Clip targets use this to compile the icon and set `CFBundleIconName`. */ hasAppIconCatalog: boolean; /** Absolute path to a user-provided Safari `Resources` folder. */ userSafariResourcesPath: string; hasCustomSafariResources: boolean; hasUserSafariSwiftHandler: boolean; hasUserReactNativeViewController: boolean; hasUserMessagesViewController: boolean; }; /** * Read the on-disk state of a target directory. */ export declare function buildTargetWorkspace({ projectRoot, platformProjectRoot, projectName, productName, directory, type, }: { projectRoot: string; platformProjectRoot: string; projectName: string; /** Already-sanitized Xcode product name. */ productName: string; directory: string; type: ExtensionType; }): TargetWorkspace; //# sourceMappingURL=workspace.d.ts.map