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

class VerificationRelationship extends 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);
  }
}

export { VerificationRelationship };
//# sourceMappingURL=verification-relationship.js.map
