{"version":3,"file":"caip.mjs","sourceRoot":"","sources":["../../src/types/caip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B;AACtD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAGjB,wBAAwB;AAyBzB;;GAEG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,MAAM,CAC7E,KAAK,CAAC,mBAAmB,CAAC,EAC1B,gDAAgD,EAChD,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC/C,kBAAkB,CAAC,SAAS,CAAC,CAC9B,CAAC;IAEF,IACE,CAAC,gBAAgB,CAAC,KAAK,CACrB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CACpC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO;QACvC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CACpD,EACD,CAAC;QACD,OAAO,2DAA2D,CAAC;IACrE,CAAC;IAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QACxE,OAAO,SAAS,KAAK,kBAAkB,CAAC,MAAM,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAC1C,iBAAiB,EACjB,sBAAsB,EACtB,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,SAAS,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,2CAA2C,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAC5C,mBAAmB,EACnB,wBAAwB,EACxB,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,EACJ,KAAK,EAAE,EAAE,SAAS,EAAE,GACrB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,SAAS,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,+CAA+C,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC","sourcesContent":["import { array, refine } from '@metamask/superstruct';\nimport {\n  CaipAccountIdStruct,\n  CaipAssetTypeStruct,\n  CaipChainIdStruct,\n  KnownCaipNamespace,\n  parseCaipAccountId,\n  parseCaipAssetType,\n  parseCaipChainId,\n  type CaipAccountId,\n  type CaipChainId,\n} from '@metamask/utils';\n\nexport type {\n  CaipAccountId,\n  CaipAssetType,\n  CaipChainId,\n  CaipNamespace,\n} from '@metamask/utils';\n\n/**\n * A CAIP-2 chain ID, i.e., a human-readable namespace and reference.\n *\n * @see https://chainagnostic.org/CAIPs/caip-2\n * @deprecated Use {@link CaipChainId} instead.\n */\nexport type ChainId = CaipChainId;\n\n/**\n * A CAIP-10 account ID, i.e., a chain ID and an account address.\n *\n * @see https://chainagnostic.org/CAIPs/caip-10\n * @deprecated Use {@link CaipAccountId} instead.\n */\nexport type AccountId = CaipAccountId;\n\n/**\n * A struct representing a list of non-EIP-155 CAIP-10 account IDs where the account addresses are the same.\n */\nexport const NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct = refine(\n  array(CaipAccountIdStruct),\n  'Non-EIP-155 Matching Addresses Account ID List',\n  (value) => {\n    const parsedAccountIds = value.map((accountId) =>\n      parseCaipAccountId(accountId),\n    );\n\n    if (\n      !parsedAccountIds.every(\n        ({ address, chain: { namespace } }) =>\n          address === parsedAccountIds[0].address &&\n          namespace === parsedAccountIds[0].chain.namespace,\n      )\n    ) {\n      return 'All account IDs must have the same address and namespace.';\n    }\n\n    const containsEip155 = parsedAccountIds.some(({ chain: { namespace } }) => {\n      return namespace === KnownCaipNamespace.Eip155;\n    });\n\n    if (containsEip155) {\n      return 'All account IDs must have non-EIP-155 namespaces.';\n    }\n\n    return true;\n  },\n);\n\n/**\n * A struct representing a non-EIP-155 chain ID.\n */\nexport const NonEip155ChainIdStruct = refine(\n  CaipChainIdStruct,\n  'Non-EIP-155 Chain ID',\n  (value) => {\n    const { namespace } = parseCaipChainId(value);\n\n    if (namespace === KnownCaipNamespace.Eip155) {\n      return 'Chain ID must not be an EIP-155 chain ID.';\n    }\n\n    return true;\n  },\n);\n\n/**\n * A struct representing a non-EIP-155 asset type.\n */\nexport const NonEip155AssetTypeStruct = refine(\n  CaipAssetTypeStruct,\n  'Non-EIP-155 Asset Type',\n  (value) => {\n    const {\n      chain: { namespace },\n    } = parseCaipAssetType(value);\n\n    if (namespace === KnownCaipNamespace.Eip155) {\n      return 'Asset type must not be an EIP-155 asset type.';\n    }\n\n    return true;\n  },\n);\n"]}