/**
 * OpOutcomeResult — abstract base for CRDT operation outcomes.
 *
 * Subclasses carry outcome-specific data (winner EventId, reason, etc.)
 * instead of fragile tag strings. Downstream code uses `instanceof`
 * (or the narrow literal `result` discriminator) to branch.
 *
 * @module domain/types/ops/OpOutcomeResult
 */
/**
 * Abstract base: every outcome knows its target identifier and which
 * state it ended in. Concrete subclasses (OpApplied, OpSuperseded,
 * OpRedundant) live in their own files and freeze themselves after
 * construction; this abstract base carries shared fields only.
 */
export default class OpOutcomeResult {
    /** The entity ID or encoded key the op targeted. */
    target;
    /** The literal outcome discriminator. */
    result;
    constructor(target, result) {
        this.target = target;
        this.result = result;
    }
}
