export interface ChangeMeta { type: 'set' | 'delete'; existedBefore?: boolean; groupId?: string; collection?: 'map' | 'set'; key?: any; } export type ChangeListener = (path: string[], newValue: any, oldValue: any, meta?: ChangeMeta) => void; export type PathSelector = (object: T) => any; export type PathMode = 'exact' | 'up' | 'down'; export interface PathTrieNode { children: Map; modes: Map>; } export interface ListenerBucket { global: Set; trie: PathTrieNode; } export interface ListenerOptions { once?: boolean; debounceMs?: number; throttleMs?: number; schedule?: 'sync' | 'microtask'; } export type ChangeType = 'set' | 'delete'; export interface ChangeRecord { path: string[]; type: ChangeType; oldValue: any; newValue: any; timestamp: number; existedBefore?: boolean; groupId?: string; collection?: 'map' | 'set'; key?: any; } export type DiffKind = 'added' | 'removed' | 'changed'; export interface DiffRecord { path: string[]; kind: DiffKind; oldValue?: any; newValue?: any; } export interface MergeConflict { path: string[]; base: any; ours: any; theirs: any; } export type MergeStrategy = 'ours' | 'theirs' | 'custom'; export interface ConflictResolution { strategy: MergeStrategy; value?: any; } export interface ConflictResolutions { [pathKey: string]: ConflictResolution; } export interface MergeResult { success: boolean; conflicts: MergeConflict[]; applied: number; } export interface QueuedCall { listener: ChangeListener; args: [string[], any, any, ChangeMeta | undefined]; } //# sourceMappingURL=types.d.ts.map