'use strict';

var types_generic_typedEnum = require('../../generic/typed-enum.cjs');
var types_generic_typedBytes = 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');
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('blake2b');
require('../../generic/with-from-json-bytes.cjs');
require('../../generic/create-placeholder.cjs');

/**
 * An off-chain DID Doc reference stored on-chain. The reference may be
 *  - a CID, https://docs.ipfs.io/concepts/content-addressing/#identifier-formats
 *  - a URL
 *  - any other format
 */
class OffChainDidDocRef extends types_generic_typedEnum {}

class DocValue extends types_generic_typedBytes {}

class CIDOffchainDocRef extends OffChainDidDocRef {
  static Type = 'cid';

  static Class = DocValue;
}
class URLOffchainDocRef extends OffChainDidDocRef {
  static Type = 'url';

  static Class = DocValue;
}
class CustomOffchainDocRef extends OffChainDidDocRef {
  static Type = 'custom';

  static Class = DocValue;
}

OffChainDidDocRef.bindVariants(
  CIDOffchainDocRef,
  URLOffchainDocRef,
  CustomOffchainDocRef,
);

exports.CIDOffchainDocRef = CIDOffchainDocRef;
exports.CustomOffchainDocRef = CustomOffchainDocRef;
exports.OffChainDidDocRef = OffChainDidDocRef;
exports.URLOffchainDocRef = URLOffchainDocRef;
//# sourceMappingURL=doc-ref.cjs.map
