'use strict';

require('../../generic/typed-enum.cjs');
require('../../generic/typed-bytes.cjs');
require('../../generic/typed-string.cjs');
require('../../generic/typed-array.cjs');
require('../../generic/typed-tuple.cjs');
require('../../generic/typed-null.cjs');
require('../../../utils/types/array.cjs');
require('crypto');
require('bs58');
require('multiformats/bases/base58');
require('varint');
require('../../../utils/encoding/ss-58.cjs');
var types_generic_typedNumber = require('../../generic/typed-number.cjs');
require('../../generic/typed-set.cjs');
require('../../generic/typed-map.cjs');
require('../../generic/typed-struct.cjs');
require('uuid');
require('js-sha256');
require('../../../utils/types/iterable.cjs');
require('../../../utils/types/object.cjs');
require('../../../utils/interfaces.cjs');
require('../../../utils/assert.cjs');
require('../../../utils/error.cjs');
require('../../../utils/inheritance.cjs');
require('../../../utils/types/set.cjs');
require('../../generic/with-base.cjs');
require('../../../utils/types/bytes.cjs');
require('../../../utils/types/string.cjs');
require('../../generic/with-catch-null.cjs');
require('../../generic/with-eq.cjs');
require('../../generic/any-of.cjs');
require('../../generic/with-from.cjs');
require('../../generic/with-from-json-bytes.cjs');
require('blake2b');
require('../../generic/create-placeholder.cjs');

class VerificationRelationship extends types_generic_typedNumber {
  constructor(value = 0) {
    super(value);
  }

  setAuthentication() {
    // eslint-disable-next-line no-bitwise
    this.value |= 0b0001;
    return this;
  }

  setAssertion() {
    // eslint-disable-next-line no-bitwise
    this.value |= 0b0010;
    return this;
  }

  setCapabilityInvocation() {
    // eslint-disable-next-line no-bitwise
    this.value |= 0b0100;
    return this;
  }

  setKeyAgreement() {
    // eslint-disable-next-line no-bitwise
    this.value |= 0b1000;
    return this;
  }

  setAllSigning() {
    // eslint-disable-next-line no-bitwise
    this.value |= 0b0111;
    return this;
  }

  isAuthentication() {
    // eslint-disable-next-line no-bitwise
    return !!(this.value & 0b0001);
  }

  isAssertion() {
    // eslint-disable-next-line no-bitwise
    return !!(this.value & 0b0010);
  }

  isCapabilityInvocation() {
    // eslint-disable-next-line no-bitwise
    return !!(this.value & 0b0100);
  }

  isKeyAgreement() {
    // eslint-disable-next-line no-bitwise
    return !!(this.value & 0b1000);
  }
}

exports.VerificationRelationship = VerificationRelationship;
//# sourceMappingURL=verification-relationship.cjs.map
