/** * @medicine-wheel/relational-query — types * * Query builder types for context-aware relational traversal * with Indigenous protocol awareness. */ import type { DirectionName, NodeType, RelationalNode, RelationalEdge } from '@medicine-wheel/ontology-core'; import type { ProtocolGuard, TraversalContext, GuardEscalation } from './guards.js'; export interface NodeFilter { type?: NodeType | NodeType[]; direction?: DirectionName | DirectionName[]; nameContains?: string; hasRelationsTo?: string; minRelations?: number; createdAfter?: string; createdBefore?: string; } export interface EdgeFilter { relationshipType?: string | string[]; minStrength?: number; ceremonyHonored?: boolean; fromNode?: string; toNode?: string; } export interface RelationFilter { direction?: DirectionName; ceremonied?: boolean; ocapCompliant?: boolean; minWilsonAlignment?: number; hasObligations?: boolean; } export type SortField = 'name' | 'created_at' | 'updated_at' | 'type' | 'direction'; export type SortOrder = 'asc' | 'desc'; export interface QuerySort { field: SortField; order: SortOrder; } export interface QueryPagination { offset: number; limit: number; } export interface QueryOptions { filter?: NodeFilter; sort?: QuerySort; pagination?: QueryPagination; includeEdges?: boolean; includeRelations?: boolean; } export interface QueryResult { items: T[]; total: number; offset: number; limit: number; hasMore: boolean; } export type TraversalDirection = 'outgoing' | 'incoming' | 'both'; export interface TraversalOptions { maxDepth: number; direction: TraversalDirection; edgeFilter?: EdgeFilter; nodeFilter?: NodeFilter; /** Stop traversal at nodes without ceremony-honored edges (built-in guard) */ respectCeremonyBoundaries?: boolean; /** Only follow OCAP-compliant relations (built-in guard) */ ocapOnly?: boolean; /** Additional protocol guards evaluated before each edge crossing */ guards?: ProtocolGuard[]; /** Runtime context (identity, ceremony state) supplied to the guards */ context?: TraversalContext; } export interface TraversalPath { nodes: RelationalNode[]; edges: RelationalEdge[]; depth: number; } export interface TraversalResult { root: RelationalNode; paths: TraversalPath[]; visitedNodes: Set; maxDepthReached: boolean; /** Edge crossings a protocol guard refused, surfaced for delegation. */ escalations: GuardEscalation[]; } export interface AccountabilityReport { totalRelations: number; ocapCompliant: number; ocapNonCompliant: number; averageWilsonAlignment: number; directionCoverage: Record; ceremoniedRelations: number; unceremoniedRelations: number; obligationsOutstanding: number; recommendations: string[]; } //# sourceMappingURL=types.d.ts.map