export interface ReferenceState {
readonly tick: LogicalTick;
/** Registered agents, keyed by `agentId`. */
readonly agents: ReadonlyMap<AgentId, Agent>;
/** Conversations, keyed by `conversationId`. */
readonly conversations: ReadonlyMap<ConversationId, Conversation>;
/** Messages per conversation, append-only, ordered. */
readonly messages: ReadonlyMap<ConversationId, ReadonlyArray<Message>>;
/** Per-agent outbox of events the model predicts the server will emit. */
readonly pendingEvents: ReadonlyMap<
AgentId,
ReadonlyArray<NotificationFrame>
>;
/** Authorization table — (agentId, conversationId) → role. */
readonly authz: ReadonlyMap<
AgentId,
ReadonlyMap<ConversationId, "owner" | "participant" | "denied">
>;
/** Request-ids the model has observed, for uniqueness assertions (B4). */
readonly seenRequestIds: ReadonlySet<string>;
}