import type { ThreatTable } from "./threat.js"; export interface AssistMember { id: string; groupId: string; table: ThreatTable; } export interface AssistNetworkConfig { radius?: number; shareFraction?: number; distanceBetween?: (a: string, b: string) => number; } /** Plain JSON membership of an {@link AssistNetwork}, in registration order; threat lives in each member's own table. */ export interface AssistNetworkState { members: { id: string; groupId: string; }[]; } export interface AssistNetwork { register(member: AssistMember): void; remove(memberId: string): void; memberIds(groupId?: string): string[]; assistersOf(memberId: string): string[]; addThreat(memberId: string, sourceId: string, amount: number): string[]; snapshot(): AssistNetworkState; /** Replaces the membership; `tableOf` supplies each member's (separately restored) threat table. */ restore(next: AssistNetworkState, tableOf: (memberId: string) => ThreatTable): void; } /** @internal */ export declare function createAssistNetwork(config?: AssistNetworkConfig): AssistNetwork;