Skip to content

Interfaces

NetworkSource (synthetic now, real crawler later) and Venue (simulated now, contract adapter later).

Both proof-of-concept programs keep their data behind an interface, so the real implementation replaces one class without touching the UI.

NetworkSource#

Used by FractalNets. Today SyntheticNetworkSource implements it; a real crawler will replace it.

ts
export interface NetworkSource {
  getNetwork(address: string, options: NetworkOptions): Promise<Network>;
}

export interface NetworkOptions {
  size: "small" | "medium" | "large" | "huge";
  reseed: number;
}

export interface Network {
  nodes: NetNode[];
  edges: NetEdge[];
  meta: NetMeta; // meta.synthetic is true for generated networks
}

export interface NetNode {
  id: string;
  address: string;
  age_days: number;
  funded_at: number;
  depth: number;
  connections: number;
  supply_share: number;
  role: "root" | "hub" | "chain" | "leaf" | "satellite";
}

export interface NetEdge {
  source: string;
  target: string;
  amount: number;
  block: number;
}

Venue#

Used by Pool. Today SimulatedVenue implements it; a contract adapter will replace it.

ts
export interface Venue {
  /** Counterparty orders for batch n. */
  simOrders(n: number, market: string, ref: number, batchMs: number): SealedOrder[];
  /** Clears a batch at the midpoint with the price guard. */
  settle(orders: SealedOrder[], mid: number, samples: number[], bandBps: number): BatchResult;
}

export interface BatchResult {
  voided: boolean;
  mid: number;
  sampleMean: number;
  deviationBps: number;
  fills: Fill[];
  crossed: number;
}

Last updated 2026-09-28