import type { MurasakiConfig } from '../config.js'; export declare const SERVER_DEPENDENCIES_MANIFEST = "runtime-dependencies.json"; export interface ServerDependenciesManifest { version: 1; dependencies: string[]; } export interface RuntimeBundleTarget { platform: 'darwin' | 'win32' | 'linux'; arch: 'arm64' | 'x64'; } /** Returns the npm package part of a bare import, or null for local/virtual ids. */ export declare function packageNameFromImport(id: string): string | null; export declare function readServerDependenciesManifest(serverDir: string): Promise; /** * Copy statically detected and explicitly configured Node runtime packages * into /node_modules. Packages are copied as real directories (no * pnpm/workspace symlinks), and conflicting transitive versions remain nested * below their parent package so Node's normal resolution semantics survive. */ export declare function stageServerDependencies(projectRoot: string, serverDir: string, resourcesDir: string, config: MurasakiConfig, target?: RuntimeBundleTarget): Promise; /** Copy config.bundle.resources after validating they cannot overwrite runtime files. */ export declare function stageBundleResources(projectRoot: string, resourcesDir: string, config: MurasakiConfig): Promise; /** * Resolve the already-staged, app-owned executable resources that packaging * must sign before sealing the outer app/installer. Paths are derived from * the same validated destinations used by `stageBundleResources`; callers * must invoke this only after staging succeeded. */ export declare function executableBundleResourcePaths(resourcesDir: string, config: MurasakiConfig): string[]; /** * Fail closed before signing when app-owned code was staged as ordinary data. * Otherwise nested Mach-O/PE helpers bypass the inner-to-outer signing pass and * produce a Gatekeeper/Authenticode failure only after distribution. */ export declare function assertExecutableBundleResourcesDeclared(resourcesDir: string, config: MurasakiConfig): Promise; //# sourceMappingURL=server-dependencies.d.ts.map