{"version":3,"file":"derivation-paths.mjs","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport slip44 from '@metamask/slip44';\n\nimport { isEqual } from './array';\n\nexport type SnapsDerivationPath = {\n  path: ['m', ...string[]];\n  curve: SupportedCurve;\n  name: string;\n};\n\nexport const SNAPS_DERIVATION_PATHS: SnapsDerivationPath[] = [\n  {\n    path: ['m', `44'`, `0'`],\n    curve: 'ed25519',\n    name: 'Test BIP-32 Path (ed25519)',\n  },\n  {\n    path: ['m', `44'`, `1'`],\n    curve: 'secp256k1',\n    name: 'Testnet',\n  },\n  {\n    path: ['m', `44'`, `0'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Legacy',\n  },\n  {\n    path: ['m', `49'`, `0'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Nested SegWit',\n  },\n  {\n    path: ['m', `49'`, `1'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Testnet Nested SegWit',\n  },\n  {\n    path: ['m', `84'`, `0'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Native SegWit',\n  },\n  {\n    path: ['m', `84'`, `1'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Testnet Native SegWit',\n  },\n  {\n    path: ['m', `86'`, `0'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Taproot',\n  },\n  {\n    path: ['m', `86'`, `1'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Testnet Taproot',\n  },\n  {\n    path: ['m', `44'`, `501'`],\n    curve: 'ed25519',\n    name: 'Solana',\n  },\n  {\n    path: ['m', `44'`, `501'`, \"0'\", \"0'\"],\n    curve: 'ed25519',\n    name: 'Solana',\n  },\n  {\n    path: ['m', `44'`, `2'`],\n    curve: 'secp256k1',\n    name: 'Litecoin',\n  },\n  {\n    path: ['m', `44'`, `3'`],\n    curve: 'secp256k1',\n    name: 'Dogecoin',\n  },\n  {\n    path: ['m', `44'`, `60'`],\n    curve: 'secp256k1',\n    name: 'Ethereum',\n  },\n  {\n    path: ['m', `44'`, `118'`],\n    curve: 'secp256k1',\n    name: 'Atom',\n  },\n  {\n    path: ['m', `44'`, `145'`],\n    curve: 'secp256k1',\n    name: 'Bitcoin Cash',\n  },\n  {\n    path: ['m', `44'`, `637'`],\n    curve: 'ed25519',\n    name: 'Aptos',\n  },\n  {\n    path: ['m', `44'`, `714'`],\n    curve: 'secp256k1',\n    name: 'Binance (BNB)',\n  },\n  {\n    path: ['m', `44'`, `784'`],\n    curve: 'ed25519',\n    name: 'Sui',\n  },\n  {\n    path: ['m', `44'`, `931'`],\n    curve: 'secp256k1',\n    name: 'THORChain (RUNE)',\n  },\n  {\n    path: ['m', `44'`, `330'`],\n    curve: 'secp256k1',\n    name: 'Terra (LUNA)',\n  },\n  {\n    path: ['m', `44'`, `459'`],\n    curve: 'secp256k1',\n    name: 'Kava',\n  },\n  {\n    path: ['m', `44'`, `529'`],\n    curve: 'secp256k1',\n    name: 'Secret Network',\n  },\n  {\n    path: ['m', `44'`, `397'`, `0'`],\n    curve: 'ed25519',\n    name: 'NEAR Protocol',\n  },\n  {\n    path: ['m', `44'`, `1'`, `0'`],\n    curve: 'ed25519',\n    name: 'Testnet',\n  },\n  {\n    path: ['m', `44'`, `472'`],\n    curve: 'ed25519',\n    name: 'Arweave',\n  },\n  {\n    path: ['m', `44'`, `12586'`],\n    curve: 'secp256k1',\n    name: 'Mina',\n  },\n  {\n    path: ['m', `44'`, `242'`],\n    curve: 'ed25519',\n    name: 'Nimiq',\n  },\n  {\n    path: ['m', `44'`, `1729'`, `0'`, `0'`],\n    curve: 'ed25519',\n    name: 'Tezos',\n  },\n  {\n    path: ['m', `1789'`, `0'`],\n    curve: 'ed25519',\n    name: 'Vega',\n  },\n  {\n    path: ['m', `1852'`, `1815'`],\n    curve: 'ed25519Bip32',\n    name: 'Cardano',\n  },\n  {\n    path: ['m', `44'`, `508'`, `0'`, `0'`, `0'`],\n    curve: 'ed25519',\n    name: 'MultiversX',\n  },\n  {\n    path: ['m', `44'`, `709'`],\n    curve: 'secp256k1',\n    name: 'Avail',\n  },\n  {\n    path: ['m', `44'`, `626'`],\n    curve: 'ed25519',\n    name: 'Kadena',\n  },\n  {\n    path: ['m', `44'`, `632'`],\n    curve: 'ed25519',\n    name: 'Massa',\n  },\n  {\n    path: ['m', `44'`, `4218'`],\n    curve: 'ed25519',\n    name: 'IOTA',\n  },\n  {\n    path: ['m', `44'`, `6767'`],\n    curve: 'ed25519',\n    name: 'Canton',\n  },\n];\n\n/**\n * Gets the name of a derivation path supported by snaps.\n *\n * @param path - The derivation path.\n * @param curve - The curve used to derive the keys.\n * @returns The name of the derivation path, otherwise null.\n */\nexport function getSnapDerivationPathName(\n  path: SnapsDerivationPath['path'],\n  curve: SupportedCurve,\n): string | null {\n  const pathMetadata = SNAPS_DERIVATION_PATHS.find(\n    (derivationPath) =>\n      derivationPath.curve === curve && isEqual(derivationPath.path, path),\n  );\n\n  if (pathMetadata) {\n    return pathMetadata.name;\n  }\n\n  // If the curve is secp256k1 and the path is a valid BIP44 path\n  // we try looking for the network/protocol name in SLIP44\n  if (\n    curve === 'secp256k1' &&\n    path[0] === 'm' &&\n    path[1] === `44'` &&\n    path[2].endsWith(`'`)\n  ) {\n    const coinType = path[2].slice(0, -1);\n    return getSlip44ProtocolName(coinType) ?? null;\n  }\n\n  return null;\n}\n\n/**\n * Gets the name of the SLIP-44 protocol corresponding to the specified\n * `coin_type`.\n *\n * @param coinType - The SLIP-44 `coin_type` value whose name\n * to retrieve.\n * @returns The name of the protocol, otherwise null.\n */\nexport function getSlip44ProtocolName(coinType: number | string) {\n  if (String(coinType) === '1') {\n    return 'Test Networks';\n  }\n\n  return slip44[coinType as keyof typeof slip44]?.name ?? null;\n}\n"]}