/** * Install-time deployer for plugin-supplied native UE modules. * * A plugin declares `nativeModule:` in ue-mcp.plugin.yml with a `source:` * directory inside its npm tarball. On install we copy that directory to * `/Plugins//` and record every copied file so * uninstall can clean up without nuking user edits. * * The tracking file lives at `/.ue-mcp/native-modules.json`: * * { * "": { * "uePluginName": "PIE_Studio", * "pluginVersion": "0.0.2", * "installedAt": "2026-05-26T00:00:00.000Z", * "files": ["Plugins/PIE_Studio/...", ...] // relative to projectDir * } * } */ export interface NativeModuleRecord { uePluginName: string; pluginVersion: string; installedAt: string; files: string[]; } export interface NativeModulesState { [npmPackageName: string]: NativeModuleRecord; } export declare function readNativeModulesState(projectDir: string): NativeModulesState; export declare function writeNativeModulesState(projectDir: string, state: NativeModulesState): void; export interface DeployNativeResult { destDir: string; filesCopied: number; fileList: string[]; } /** * Recursive directory copy that tracks every written file path. Returns * paths relative to projectDir so the state file is portable across * machines and the entries match the user's checkout layout. */ export declare function deployNativeModule(pkgDir: string, sourceRel: string, uePluginName: string, projectDir: string): DeployNativeResult; /** * Delete the files recorded for `npmName` and prune the state entry. * Returns the count of files actually removed (missing files are tolerated * silently — they may have been moved/deleted by the user). * * Caller is responsible for refusing the operation when the editor still * has the plugin DLL loaded (Windows refuses to delete locked files). */ export declare function undeployNativeModule(projectDir: string, npmName: string): number;