interface SourceRef { sourceDocumentId: string; excerpt?: string; } interface SourceDocument { id: string; jurisdiction: string; authority: string; title: string; fetchedAt: Date; hash: string; fileId: string; } interface Rule { id: string; jurisdiction: string; topicKey: string; } interface RuleVersion { id: string; ruleId: string; jurisdiction: string; topicKey: string; version: string; content: string; sourceRefs: SourceRef[]; status: 'draft' | 'approved' | 'rejected'; approvedBy?: string; approvedAt?: Date; createdAt: Date; } interface KBSnapshot { id: string; jurisdiction: string; asOfDate: Date; includedRuleVersionIds: string[]; publishedAt: Date; } export interface MemoryKbStore { sources: Map; rules: Map; ruleVersions: Map; snapshots: Map; nextRuleVersionNumberByRuleId: Map; } export declare function createMemoryKbStore(): MemoryKbStore; export interface MemoryKbHandlers { createRule(rule: Rule): Promise; ingestSource(input: Omit): Promise; upsertRuleVersion(input: { ruleId: string; content: string; sourceRefs: SourceRef[]; }): Promise; approveRuleVersion(input: { ruleVersionId: string; approver: string; }): Promise; publishSnapshot(input: { jurisdiction: string; asOfDate: Date; }): Promise; search(input: { snapshotId: string; jurisdiction: string; query: string; }): Promise<{ items: { ruleVersionId: string; excerpt?: string; }[]; }>; } export declare function createMemoryKbHandlers(store: MemoryKbStore): MemoryKbHandlers; export {};