/**
 * BlobValue — reference to an external blob in the Git object store.
 * No state effect in the reducer — recorded for provenance tracking.
 */
import Op from "./Op.js";
import { OP_SCOPE_BOTH } from "./OpScope.js";
import { assertNonEmptyString, assertNoReservedBytes } from "./validate.js";
import OpApplied from "./OpApplied.js";
export default class BlobValue extends Op {
    receiptName = 'BlobValue';
    node;
    oid;
    constructor(node, oid) {
        super('BlobValue', OP_SCOPE_BOTH);
        assertNonEmptyString(node, 'BlobValue', 'node');
        assertNonEmptyString(oid, 'BlobValue', 'oid');
        assertNoReservedBytes(node, 'BlobValue', 'node');
        this.node = node;
        this.oid = oid;
        Object.freeze(this);
    }
    validate() { }
    mutate() { }
    outcome() {
        const target = (this.oid.length > 0) ? this.oid : '*';
        return new OpApplied(target);
    }
    snapshot() { return {}; }
    accumulate() { }
}
