{"version":3,"file":"index.mjs","names":["getGlobalTagsStore"],"sources":["../src/tags-registry.ts"],"sourcesContent":["/**\n * Copyright © 2023-2026 Blockchain Commons, LLC\n * Copyright © 2025-2026 Parity Technologies\n *\n *\n * CBOR Tags Registry\n *\n * This is a 1:1 port of the Rust bc-tags-rust implementation.\n *\n * @see https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-006-urtypes.md\n *\n * As of August 13 2022, the [IANA registry of CBOR tags](https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml)\n * has the following low-numbered values available:\n *\n * One byte encoding: 6-15, 19-20\n * Two byte encoding: 48-51, 53, 55-60, 62, 88-95, 99, 102, 105-109, 113-119,\n * 128-255\n *\n * Tags in the range 0-23 require \"standards action\" for the IANA to recognize.\n * Tags in the range 24-32767 require a specification to reserve.\n * Tags in the range 24-255 only require two bytes to encode.\n * Higher numbered tags are first-come, first-served.\n */\n\nimport {\n  type Tag,\n  createTag,\n  type TagsStore,\n  getGlobalTagsStore,\n  registerTagsIn as registerDcborTagsIn,\n} from \"@bcts/dcbor\";\n\n// ============================================================================\n// Standard IANA Tags (re-used from dcbor but defined here for completeness)\n// ============================================================================\n\nexport const URI: Tag = createTag(32, \"url\");\nexport const UUID: Tag = createTag(37, \"uuid\");\n\n// A previous version of the Envelope spec used tag #6.24 (\"Encoded CBOR Item\")\n// as the header for the Envelope `leaf` case. Unfortunately, this was not a\n// correct use of the tag, as the contents of #6.24 (RFC8949 §3.4.5.1) MUST\n// always be a byte string, while we were simply using it as a wrapper/header\n// for any dCBOR data item.\n//\n// https://www.rfc-editor.org/rfc/rfc8949.html#name-encoded-cbor-data-item\n//\n// The new leaf tag is #6.201, but we will still recognize #6.24 for backwards\n// compatibility.\n\n// The only two tags that Blockchain Commons has registered in the\n// \"Specification Required\" range are the two tags for \"Gordian Envelope\"\n// (#6.200) and \"dCBOR/Envelope Leaf\" (#6.201).\n\n// ============================================================================\n// Core Envelope tags.\n// ============================================================================\n\nexport const ENCODED_CBOR: Tag = createTag(24, \"encoded-cbor\");\nexport const ENVELOPE: Tag = createTag(200, \"envelope\");\nexport const LEAF: Tag = createTag(201, \"leaf\"); // dCBOR data item\nexport const JSON: Tag = createTag(262, \"json\"); // bstr containing UTF-8 JSON text\n\n// ============================================================================\n// Envelope extension tags\n// ============================================================================\n\nexport const KNOWN_VALUE: Tag = createTag(40000, \"known-value\");\nexport const DIGEST: Tag = createTag(40001, \"digest\");\nexport const ENCRYPTED: Tag = createTag(40002, \"encrypted\");\nexport const COMPRESSED: Tag = createTag(40003, \"compressed\");\n\n// ============================================================================\n// Tags for subtypes specific to Distributed Function Calls.\n// ============================================================================\n\nexport const REQUEST: Tag = createTag(40004, \"request\");\nexport const RESPONSE: Tag = createTag(40005, \"response\");\nexport const FUNCTION: Tag = createTag(40006, \"function\");\nexport const PARAMETER: Tag = createTag(40007, \"parameter\");\nexport const PLACEHOLDER: Tag = createTag(40008, \"placeholder\");\nexport const REPLACEMENT: Tag = createTag(40009, \"replacement\");\n\nexport const X25519_PRIVATE_KEY: Tag = createTag(40010, \"agreement-private-key\");\nexport const X25519_PUBLIC_KEY: Tag = createTag(40011, \"agreement-public-key\");\nexport const ARID: Tag = createTag(40012, \"arid\");\nexport const PRIVATE_KEYS: Tag = createTag(40013, \"crypto-prvkeys\");\nexport const NONCE: Tag = createTag(40014, \"nonce\");\nexport const PASSWORD: Tag = createTag(40015, \"password\");\nexport const PRIVATE_KEY_BASE: Tag = createTag(40016, \"crypto-prvkey-base\");\n\nexport const PUBLIC_KEYS: Tag = createTag(40017, \"crypto-pubkeys\");\nexport const SALT: Tag = createTag(40018, \"salt\");\nexport const SEALED_MESSAGE: Tag = createTag(40019, \"crypto-sealed\");\nexport const SIGNATURE: Tag = createTag(40020, \"signature\");\nexport const SIGNING_PRIVATE_KEY: Tag = createTag(40021, \"signing-private-key\");\nexport const SIGNING_PUBLIC_KEY: Tag = createTag(40022, \"signing-public-key\");\nexport const SYMMETRIC_KEY: Tag = createTag(40023, \"crypto-key\");\nexport const XID: Tag = createTag(40024, \"xid\");\nexport const REFERENCE: Tag = createTag(40025, \"reference\");\nexport const EVENT: Tag = createTag(40026, \"event\");\n\nexport const ENCRYPTED_KEY: Tag = createTag(40027, \"encrypted-key\");\nexport const MLKEM_PRIVATE_KEY: Tag = createTag(40100, \"mlkem-private-key\");\nexport const MLKEM_PUBLIC_KEY: Tag = createTag(40101, \"mlkem-public-key\");\nexport const MLKEM_CIPHERTEXT: Tag = createTag(40102, \"mlkem-ciphertext\");\nexport const MLDSA_PRIVATE_KEY: Tag = createTag(40103, \"mldsa-private-key\");\nexport const MLDSA_PUBLIC_KEY: Tag = createTag(40104, \"mldsa-public-key\");\nexport const MLDSA_SIGNATURE: Tag = createTag(40105, \"mldsa-signature\");\nexport const SEED: Tag = createTag(40300, \"seed\");\nexport const HDKEY: Tag = createTag(40303, \"hdkey\");\nexport const DERIVATION_PATH: Tag = createTag(40304, \"keypath\");\n\nexport const USE_INFO: Tag = createTag(40305, \"coin-info\");\nexport const EC_KEY: Tag = createTag(40306, \"eckey\");\nexport const ADDRESS: Tag = createTag(40307, \"address\");\nexport const OUTPUT_DESCRIPTOR: Tag = createTag(40308, \"output-descriptor\");\nexport const SSKR_SHARE: Tag = createTag(40309, \"sskr\");\nexport const PSBT: Tag = createTag(40310, \"psbt\");\nexport const ACCOUNT_DESCRIPTOR: Tag = createTag(40311, \"account-descriptor\");\nexport const SSH_TEXT_PRIVATE_KEY: Tag = createTag(40800, \"ssh-private\");\nexport const SSH_TEXT_PUBLIC_KEY: Tag = createTag(40801, \"ssh-public\");\nexport const SSH_TEXT_SIGNATURE: Tag = createTag(40802, \"ssh-signature\");\nexport const SSH_TEXT_CERTIFICATE: Tag = createTag(40803, \"ssh-certificate\");\n\nexport const PROVENANCE_MARK: Tag = createTag(1347571542, \"provenance\");\n\n// ============================================================================\n// DEPRECATED TAGS\n// ============================================================================\n//\n// The following tags are deprecated and should not be used in new code.\n// Unfortunately, they are likely to be in active use by external developers,\n// but should never have been used as they are in the range of CBOR tags\n// requiring \"Specification\" action by IANA, which requires IANA experts to\n// review and approve the specification. These are harder to get approved than\n// \"First Come First Served\" tags, and we don't want to have to do that for\n// every new tag we create. Most of these tags have been replaced by \"First Come\n// First Served\" tags in the range of 40000+.\n\nexport const SEED_V1: Tag = createTag(300, \"crypto-seed\");\nexport const EC_KEY_V1: Tag = createTag(306, \"crypto-eckey\");\nexport const SSKR_SHARE_V1: Tag = createTag(309, \"crypto-sskr\");\n\nexport const HDKEY_V1: Tag = createTag(303, \"crypto-hdkey\");\nexport const DERIVATION_PATH_V1: Tag = createTag(304, \"crypto-keypath\");\nexport const USE_INFO_V1: Tag = createTag(305, \"crypto-coin-info\");\nexport const OUTPUT_DESCRIPTOR_V1: Tag = createTag(307, \"crypto-output\");\nexport const PSBT_V1: Tag = createTag(310, \"crypto-psbt\");\nexport const ACCOUNT_V1: Tag = createTag(311, \"crypto-account\");\n\n// ============================================================================\n// Tags for subtypes specific to AccountBundle (crypto-output).\n// ============================================================================\n\nexport const OUTPUT_SCRIPT_HASH: Tag = createTag(400, \"output-script-hash\");\nexport const OUTPUT_WITNESS_SCRIPT_HASH: Tag = createTag(401, \"output-witness-script-hash\");\nexport const OUTPUT_PUBLIC_KEY: Tag = createTag(402, \"output-public-key\");\nexport const OUTPUT_PUBLIC_KEY_HASH: Tag = createTag(403, \"output-public-key-hash\");\nexport const OUTPUT_WITNESS_PUBLIC_KEY_HASH: Tag = createTag(404, \"output-witness-public-key-hash\");\nexport const OUTPUT_COMBO: Tag = createTag(405, \"output-combo\");\nexport const OUTPUT_MULTISIG: Tag = createTag(406, \"output-multisig\");\nexport const OUTPUT_SORTED_MULTISIG: Tag = createTag(407, \"output-sorted-multisig\");\nexport const OUTPUT_RAW_SCRIPT: Tag = createTag(408, \"output-raw-script\");\nexport const OUTPUT_TAPROOT: Tag = createTag(409, \"output-taproot\");\nexport const OUTPUT_COSIGNER: Tag = createTag(410, \"output-cosigner\");\n\n// ============================================================================\n// Registration Functions\n// ============================================================================\n\n/**\n * Register all Blockchain Commons tags in a specific tags store.\n * This matches the Rust function `register_tags_in()`.\n *\n * @param tagsStore - The tags store to register tags into\n */\nexport function registerTagsIn(tagsStore: TagsStore): void {\n  // First register dcbor's tags\n  registerDcborTagsIn(tagsStore);\n\n  // Then register all Blockchain Commons tags\n  const tags: Tag[] = [\n    URI,\n    UUID,\n    ENCODED_CBOR,\n    ENVELOPE,\n    LEAF,\n    JSON,\n    KNOWN_VALUE,\n    DIGEST,\n    ENCRYPTED,\n    COMPRESSED,\n    REQUEST,\n    RESPONSE,\n    FUNCTION,\n    PARAMETER,\n    PLACEHOLDER,\n    REPLACEMENT,\n    EVENT,\n    SEED_V1,\n    EC_KEY_V1,\n    SSKR_SHARE_V1,\n    SEED,\n    EC_KEY,\n    SSKR_SHARE,\n    X25519_PRIVATE_KEY,\n    X25519_PUBLIC_KEY,\n    ARID,\n    PRIVATE_KEYS,\n    NONCE,\n    PASSWORD,\n    PRIVATE_KEY_BASE,\n    PUBLIC_KEYS,\n    SALT,\n    SEALED_MESSAGE,\n    SIGNATURE,\n    SIGNING_PRIVATE_KEY,\n    SIGNING_PUBLIC_KEY,\n    SYMMETRIC_KEY,\n    XID,\n    REFERENCE,\n    ENCRYPTED_KEY,\n    MLKEM_PRIVATE_KEY,\n    MLKEM_PUBLIC_KEY,\n    MLKEM_CIPHERTEXT,\n    MLDSA_PRIVATE_KEY,\n    MLDSA_PUBLIC_KEY,\n    MLDSA_SIGNATURE,\n    HDKEY_V1,\n    DERIVATION_PATH_V1,\n    USE_INFO_V1,\n    OUTPUT_DESCRIPTOR_V1,\n    PSBT_V1,\n    ACCOUNT_V1,\n    HDKEY,\n    DERIVATION_PATH,\n    USE_INFO,\n    ADDRESS,\n    OUTPUT_DESCRIPTOR,\n    PSBT,\n    ACCOUNT_DESCRIPTOR,\n    SSH_TEXT_PRIVATE_KEY,\n    SSH_TEXT_PUBLIC_KEY,\n    SSH_TEXT_SIGNATURE,\n    SSH_TEXT_CERTIFICATE,\n    OUTPUT_SCRIPT_HASH,\n    OUTPUT_WITNESS_SCRIPT_HASH,\n    OUTPUT_PUBLIC_KEY,\n    OUTPUT_PUBLIC_KEY_HASH,\n    OUTPUT_WITNESS_PUBLIC_KEY_HASH,\n    OUTPUT_COMBO,\n    OUTPUT_MULTISIG,\n    OUTPUT_SORTED_MULTISIG,\n    OUTPUT_RAW_SCRIPT,\n    OUTPUT_TAPROOT,\n    OUTPUT_COSIGNER,\n    PROVENANCE_MARK,\n  ];\n\n  tagsStore.insertAll(tags);\n}\n\n/**\n * Register all Blockchain Commons tags in the global tags store.\n * This matches the Rust function `register_tags()`.\n *\n * This function is idempotent - calling it multiple times is safe.\n */\nexport function registerTags(): void {\n  const globalStore = getGlobalTagsStore();\n  registerTagsIn(globalStore);\n}\n"],"mappings":"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F,MAAa,oBAAyB,UAAU,KAAK,mBAAmB;AACxE,MAAa,iBAAsB,UAAU,KAAK,gBAAgB;AAClE,MAAa,kBAAuB,UAAU,KAAK,iBAAiB;;;;;;;AAYpE,SAAgB,eAAe,WAA4B;CAEzD,iBAAoB,SAAS;CAG7B,MAAM,OAAc;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CAEA,UAAU,UAAU,IAAI;AAC1B;;;;;;;AAQA,SAAgB,eAAqB;CAEnC,eADoBA,qBACK,CAAC;AAC5B"}