import type { InstallManifest, ManifestRegistrationEntry } from './manifest.js';
export interface RegistrationRemovalReport {
    filePath: string;
    jsonPath: string[];
    removed: boolean;
    reason?: string;
}
export interface RegistrationCleanupResult {
    reports: RegistrationRemovalReport[];
    /** Filepaths whose content was mutated. */
    mutated: string[];
}
export declare function removeManagedBlocksFromFile(filePath: string, options?: {
    dryRun?: boolean;
}): RegistrationRemovalReport[];
/**
 * Remove a single registration. Supports two shapes:
 *   - Claude Code: `{ hooks: { <event>: [ { hooks: [{ command: "nexus-prime hook ..." }] } ] } }`
 *     Removes only entries whose command starts with `nexus-prime hook`.
 *   - VS Code / Cursor: `{ mcpServers: { "nexus-prime": {...} } }`
 *     Removes only the `nexus-prime` key.
 */
export declare function removeRegistration(entry: ManifestRegistrationEntry | {
    target: string;
    filePath: string;
    jsonPath: string[];
    entryMarker?: string;
}, options?: {
    dryRun?: boolean;
}): RegistrationRemovalReport;
/** Remove all registrations recorded in the manifest. */
export declare function removeManifestRegistrations(manifest: InstallManifest, options?: {
    dryRun?: boolean;
}): RegistrationCleanupResult;
/**
 * Fallback heuristic: scan known IDE paths and remove nexus entries that the
 * manifest didn't know about. Used when manifest is empty/stale.
 */
export declare function removeHeuristicRegistrations(workspaceRoot: string, options?: {
    dryRun?: boolean;
}): RegistrationCleanupResult;
