/** * @nahisaho/yata-scale - Conflict Resolver * * Resolves conflicts in distributed updates */ import type { Entity, Relationship, Conflict, ConflictResolution } from '../types.js'; /** * Conflict resolution strategy */ export type ResolutionStrategy = 'last-writer-wins' | 'first-writer-wins' | 'merge' | 'custom'; /** * Custom resolver function */ export type CustomResolver = (local: T, remote: T, conflict: Conflict) => T; /** * Conflict resolver for distributed updates */ export declare class ConflictResolver { private readonly defaultStrategy; private readonly customResolvers; constructor(defaultStrategy?: ResolutionStrategy); /** * Register custom resolver for entity type */ registerResolver(entityType: string, resolver: CustomResolver): void; /** * Detect conflict between two entities */ detectEntityConflict(local: Entity, remote: Entity): Conflict | null; /** * Find conflicting fields between two entities */ private findConflictingFields; /** * Resolve entity conflict */ resolveEntityConflict(local: Entity, remote: Entity, conflict: Conflict): ConflictResolution; /** * Last writer wins resolution */ private lastWriterWins; /** * First writer wins resolution */ private firstWriterWins; /** * Merge entities (field-level LWW) */ private mergeEntities; /** * Resolve relationship conflict */ resolveRelationshipConflict(local: Relationship, remote: Relationship): ConflictResolution; /** * Batch resolve conflicts */ resolveAll(conflicts: Array<{ local: Entity; remote: Entity; conflict: Conflict; }>): ConflictResolution[]; /** * Get default strategy */ getDefaultStrategy(): ResolutionStrategy; /** * Check if custom resolver exists */ hasCustomResolver(entityType: string): boolean; } //# sourceMappingURL=ConflictResolver.d.ts.map