/** * Decides whether a tenant has moved to Sophos Fusion. For a migrated tenant * the Classic Cases and Detections REST tools are wrong, not merely * deprecated: those APIs answer from the pre-migration Sophos Central * objects, which are no longer the live ones (AJ, 22/09/2026; Sophos upgrade * centre, https://community.sophos.com/sophos-xdr/sophos-xdr-mdr-expansion/upgrade-center). * The Classic tools refuse such a tenant and name the Fusion tool to use. * For a tenant that has not moved they stay correct, so there is no blanket * deprecation label. * * The signal is the Fusion case reference data: a tenant that has not moved * gets HTTP 200 with an empty caseTypes list and no error (measured on 148 * unmigrated tenants and one migrated one, 22/09/2026). The lookup shares the * 15 minute per-tenant cache, so a Classic call costs at most one extra * GraphQL round trip per tenant per cache window. * * A tenant Fusion does not hold gets HTTP 503 "tenant not found or not * accessible" instead (FusionTenantNotOnFusionError, the same answer every * time, 29/10/2026). That is a definite "not migrated". The reference data * cache keeps only successes, so the guard holds this answer itself for the * same 15 minutes. Any other failure is not held and yields a warning. */ import { type CaseReferenceDataCache } from "./case-reference-data.js"; export declare const UPGRADE_CENTRE_URL = "https://community.sophos.com/sophos-xdr/sophos-xdr-mdr-expansion/upgrade-center"; export interface MigrationStatus { tenantId: string; /** true migrated, false not migrated (including a tenant Fusion does not hold), null when the check was skipped or Fusion could not be reached. */ migrated: boolean | null; /** Fusion case type names the tenant exposes (empty when not migrated). */ caseTypes: string[]; detail: string; } export declare class FusionMigrationGuard { private referenceData; private enabled; private notOnFusionTtlMs; /** Tenants Fusion answered "not found or not accessible" for, and until when that answer holds. */ private notOnFusion; constructor(referenceData: Pick, enabled?: boolean, notOnFusionTtlMs?: number); status(tenantId: string): Promise; /** * Gate for a Classic tool. Throws with a pointer to the Fusion replacement * when the tenant has migrated. Returns warnings to attach to the Classic * result otherwise: one when the check could not run, none when the tenant * is known not to have migrated or the check is disabled. */ assertClassic(tenantId: string, classicTool: string, useInstead: string): Promise; } //# sourceMappingURL=migration.d.ts.map