import { CaseRegistry } from 'ppef/registry'; import { CaseDefinition } from 'ppef/types/case'; import { BenchmarkGraphExpander } from '../experiments/evaluation/__tests__/validation/common/benchmark-graph-expander.js'; import { ExpansionInputs } from './register-suts.js'; /** * Extended expander interface that includes methods for seed retrieval. */ export interface ExpanderWithNodeAccess { getAllNodeIds(): string[]; getDegree(nodeId: string): number; } /** * Create a typed case registry for expansion algorithms. * * The registry is parameterized with: * - TInput = BenchmarkGraphExpander (graph resource) * - TInputs = ExpansionInputs (domain-specific inputs with seeds) */ export type GraphCaseRegistry = CaseRegistry; /** * Benchmark case definitions. * * Small graphs (for quick testing): karate, lesmis * Medium graphs (with hubs): facebook, cora, citeseer, ca-astroph, ca-condmat, ca-hepph * Large graphs (significant hubs): cit-hepph, cit-hepth, dblp */ export declare const BENCHMARK_CASES: Array<{ id: string; name: string; caseClass: string; expectedNodes: number; tags: string[]; }>; /** * Seed count variants for testing. * N=1: ego-graph (single source) * N=2: bidirectional (first + last node) * N=3: multi-seed (distributed) */ export declare const SEED_VARIANTS: readonly [1, 2, 3]; export type SeedVariant = typeof SEED_VARIANTS[number]; /** * Synthetic graph case class types. */ export type SyntheticGraphType = "star" | "scale-free" | "complete" | "path" | "cycle"; /** * Create a synthetic graph case definition. * @param type * @param nodes * @param additionalParams * @param additionalParameters */ export declare const createSyntheticCaseDefinition: (type: SyntheticGraphType, nodes: number, additionalParameters?: Record) => CaseDefinition; /** * Register all cases with a registry (sync version, doesn't pre-load seeds). * Use this for backward compatibility when seeds aren't needed upfront. * * @param registry - Registry to populate (defaults to new instance) * @returns The populated registry */ export declare const registerCasesSync: (registry?: GraphCaseRegistry) => GraphCaseRegistry; /** * Register all cases with a registry (async version, pre-loads seeds). * This version loads benchmark data during registration to determine seed nodes. * * @param registry - Registry to populate (defaults to new instance) * @returns The populated registry */ export declare const registerCases: (registry?: GraphCaseRegistry) => Promise; /** * Global case registry with all cases registered (sync version). * For async version with pre-loaded seeds, use `await registerCases()` instead. */ export declare const graphCaseRegistry: GraphCaseRegistry; /** * Get seeds for a benchmark graph. * This is a utility function that returns first and last node IDs. * * @param expander - Graph expander with getAllNodeIds method * @returns Tuple of [first, last] node IDs */ export declare const getBenchmarkSeeds: (expander: ExpanderWithNodeAccess) => [string, string]; /** * Get N seeds from a benchmark graph. * * @param expander - Graph expander with getAllNodeIds method * @param n - Number of seeds * @returns Array of seed node IDs */ export declare const getNSeeds: (expander: ExpanderWithNodeAccess, n: number) => string[]; //# sourceMappingURL=register-cases.d.ts.map