/** * Domain Correlator (GAP-009) * * Tracks and correlates domains that share identity providers for SSO. * Enables cross-domain session sharing by learning which domains use the same IdP. * * Key capabilities: * - Learn domain relationships from observed SSO flows * - Identify related domains for session sharing * - Persist relationships for future use */ import type { SSOFlowInfo, DomainSSORelationship } from './sso-flow-detector.js'; /** * A group of domains that share the same identity provider */ export interface DomainGroup { /** The identity provider for this group */ providerId: string; providerName: string; /** Domains in this group */ domains: string[]; /** Overall confidence in this grouping */ confidence: number; /** When this group was last updated */ lastUpdated: number; } /** * Statistics about domain correlations */ export interface CorrelationStats { totalRelationships: number; totalProviders: number; totalDomains: number; largestGroup: number; averageGroupSize: number; } /** * Serialized state for persistence */ export interface CorrelatorState { version: number; relationships: DomainSSORelationship[]; providerInfo?: Array<{ id: string; name: string; }>; lastUpdated: number; } export declare class DomainCorrelator { /** Domain -> Relationship mapping */ private relationships; /** Provider ID -> Domains mapping (inverse index) */ private providerDomains; /** Provider ID -> Provider info */ private providerInfo; constructor(); /** * Learn a domain relationship from an observed SSO flow */ learnFromFlow(flow: SSOFlowInfo): DomainSSORelationship; /** * Learn a relationship directly (not from a flow) */ learnRelationship(domain: string, providerId: string, clientId?: string): DomainSSORelationship; /** * Get domains that share an identity provider with the given domain */ getRelatedDomains(domain: string, minConfidence?: number): string[]; /** * Get the identity providers used by a domain */ getProvidersForDomain(domain: string): Array<{ providerId: string; providerName: string; confidence: number; }>; /** * Get all domains using a specific identity provider */ getDomainsForProvider(providerId: string, minConfidence?: number): string[]; /** * Get domain groups organized by identity provider */ getDomainGroups(minConfidence?: number): DomainGroup[]; /** * Get the best provider match between two domains */ findSharedProvider(domain1: string, domain2: string): { providerId: string; confidence: number; } | null; /** * Apply confidence decay to old relationships */ applyDecay(): number; /** * Get statistics about domain correlations */ getStats(): CorrelationStats; /** * Export state for persistence */ exportState(): CorrelatorState; /** * Import state from persistence */ importState(state: CorrelatorState): void; /** * Clear all data */ clear(): void; } //# sourceMappingURL=domain-correlator.d.ts.map