/**
 * ConflictParticipant — runtime-backed loser in a conflict trace.
 *
 * @module domain/types/conflict/ConflictParticipant
 */
import ConflictAnchor from './ConflictAnchor.ts';
/**
 * A runtime-backed loser participant within a conflict trace.
 *
 * Instances are frozen on construction.
 */
export default class ConflictParticipant {
    readonly anchor: ConflictAnchor;
    readonly effectDigest: string;
    readonly causalRelationToWinner: string | undefined;
    readonly structurallyDistinctAlternative: boolean;
    readonly replayableFromAnchors: boolean;
    readonly notes: readonly string[] | undefined;
    /**
     * Creates a frozen ConflictParticipant.
     */
    constructor({ anchor, effectDigest, causalRelationToWinner, structurallyDistinctAlternative, replayableFromAnchors, notes }: {
        anchor: ConflictAnchor;
        effectDigest: string;
        causalRelationToWinner?: string | undefined;
        structurallyDistinctAlternative: boolean;
        replayableFromAnchors: boolean;
        notes?: string[] | undefined;
    });
    /**
     * Creates a ConflictParticipant from an OpRecord pair with causal analysis.
     */
    static fromRecord({ winner, loser, kind, evidence, inferCausalRelation }: {
        winner: {
            effectDigest: string;
            writerId: string;
            context: Map<string, number>;
            lamport: number;
            patchSha: string;
            opIndex: number;
            receiptOpIndex: number;
        };
        loser: {
            effectDigest: string;
            writerId: string;
            context: Map<string, number>;
            lamport: number;
            patchSha: string;
            opIndex: number;
            receiptOpIndex: number;
        };
        kind: 'supersession' | 'eventual_override' | 'redundancy';
        evidence: 'summary' | 'standard' | 'full';
        inferCausalRelation: (winner: {
            context: Map<string, number>;
            lamport: number;
        }, loser: {
            context: Map<string, number>;
            lamport: number;
        }) => string | undefined;
    }): ConflictParticipant;
}
