/** * Cross-Repository Detection (Feature 8) * * Detect duplicate PRs across multiple repositories in an organization */ import type { PRInput, PRSenseConfig, CheckOptions } from './prsense.js'; import { PRSenseDetector } from './prsense.js'; /** * Repository configuration for cross-repo detection */ export interface RepoConfig { /** Unique repository identifier (e.g., 'org/repo-name') */ repoId: string; /** Human-readable repository name */ name: string; /** Optional: Repository URL */ url?: string; } /** * Cross-repo PR input includes repository information */ export interface CrossRepoPRInput extends PRInput { /** Repository this PR belongs to */ repoId: string; } /** * Cross-repo detection result includes source repository */ export interface CrossRepoDetectionResult { type: 'DUPLICATE' | 'POSSIBLE' | 'UNIQUE'; confidence: number; /** Original PR ID if duplicate/possible */ originalPr?: number; /** Repository of the original PR */ originalRepo?: string; /** Whether the duplicate is in a different repository */ isCrossRepo: boolean; } /** * Cross-Repository Detector * * Manages multiple repository indices for organization-wide duplicate detection */ export declare class CrossRepoDetector { private detectors; private repos; private sharedConfig; constructor(config: PRSenseConfig); /** * Register a repository for cross-repo detection */ addRepository(repo: RepoConfig): void; /** * Check PR for duplicates across ALL registered repositories */ check(pr: CrossRepoPRInput, options?: CheckOptions): Promise; /** * Get all registered repositories */ getRepositories(): RepoConfig[]; /** * Get statistics across all repositories */ getStats(): { repositories: number; totalPRs: number; totalDuplicatePairs: number; repoStats: Record; }; /** * Export all detector states for persistence */ exportState(): Record>; /** * Import detector states from persistence */ importState(state: Record>): void; } /** * Create cross-repo detector with common configuration */ export declare function createCrossRepoDetector(config: PRSenseConfig): CrossRepoDetector; //# sourceMappingURL=crossRepo.d.ts.map