import { SUTRegistry } from 'ppef/registry'; import { SutRegistration } from 'ppef/types/sut'; import { BenchmarkGraphExpander } from '../experiments/evaluation/__tests__/validation/common/benchmark-graph-expander.js'; import { PathSalienceResult } from '../experiments/suts/path-salience-sut.js'; import { RandomRankingResult } from '../experiments/suts/random-ranking-sut.js'; import { ShortestRankingResult } from '../experiments/suts/shortest-ranking-sut.js'; /** * Domain-specific input type for ranking algorithms. * * This type lives in the domain-specific registration file, not in the core framework. * The core framework remains universal - it doesn't need to know what "source" or "target" mean. * * Note: 'input' is the field name used by the executor when spreading { input, ...inputs } */ export interface RankingInputs { /** Graph expander for path discovery (named 'input' to match executor pattern) */ input: BenchmarkGraphExpander; /** Source node ID */ source: string; /** Target node ID */ target: string; } /** * Union type for all ranking SUT results. * Each SUT returns its own specific result type. */ export type RankingResult = PathSalienceResult | RandomRankingResult | ShortestRankingResult; /** * Common fields shared by all ranking results. * Use this type guard to safely access common properties. */ export interface RankingResultBase { pathsFound: number; meanMI: number; stdMI: number; pathDiversity: number; hubAvoidance: number; nodeCoverage: number; meanScore: number; stdScore: number; } /** * Type guard to check if a result is a ranking result. * @param result */ export declare const isRankingResult: (result: unknown) => result is RankingResult; /** * Type guard for PathSalienceResult. * @param result */ export declare const isPathSalienceResult: (result: RankingResult) => result is PathSalienceResult; /** * Type guard for ShortestRankingResult. * @param result */ export declare const isShortestRankingResult: (result: RankingResult) => result is ShortestRankingResult; /** * Create a typed SUT registry for ranking algorithms. * * The registry is parameterized with: * - TInputs = RankingInputs (domain-specific type) * - TResult = RankingResult (union of all algorithm outputs) */ export type RankingSutRegistry = SUTRegistry; /** * SUT registrations for ranking algorithms. */ export declare const RANKING_SUT_REGISTRATIONS: Record; /** * Register all ranking SUTs with a registry. * * Each SUT is registered with its specific result type. * The registry's TResult parameter is the union type RankingResult. * * @param registry - Registry to populate (defaults to new instance) * @returns The populated registry */ export declare const registerRankingSuts: (registry?: SUTRegistry) => SUTRegistry; /** * Global ranking SUT registry with all algorithms registered. */ export declare const rankingSutRegistry: SUTRegistry; //# sourceMappingURL=register-ranking-suts.d.ts.map