@shapeshiftoss/caip 8.16.1 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.js +44 -0
  3. package/dist/cjs/accountId/accountId.test.js +109 -0
  4. package/dist/cjs/adapters/banxa/index.js +118 -0
  5. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  6. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  7. package/dist/cjs/adapters/coinbase/index.js +16 -0
  8. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  9. package/dist/cjs/adapters/coincap/generate.js +10 -0
  10. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  11. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  12. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  13. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  14. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  15. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  16. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  17. package/dist/{adapters → cjs/adapters}/coincap/generated/index.d.ts +11 -4
  18. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  19. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  20. package/dist/{adapters → cjs/adapters}/coincap/index.d.ts +1 -1
  21. package/dist/cjs/adapters/coincap/index.js +44 -0
  22. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  23. package/dist/{adapters → cjs/adapters}/coincap/utils.d.ts +3 -1
  24. package/dist/cjs/adapters/coincap/utils.js +146 -0
  25. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  26. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  27. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  28. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  29. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  30. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  31. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  32. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  33. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  34. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  35. package/dist/cjs/adapters/coingecko/generated/index.js +40 -0
  36. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  37. package/dist/cjs/adapters/coingecko/index.js +163 -0
  38. package/dist/cjs/adapters/coingecko/index.test.js +276 -0
  39. package/dist/cjs/adapters/coingecko/utils.js +190 -0
  40. package/dist/cjs/adapters/coingecko/utils.test.js +193 -0
  41. package/dist/cjs/adapters/index.js +22 -0
  42. package/dist/cjs/adapters/mtpelerin/index.js +142 -0
  43. package/dist/cjs/adapters/onramper/index.js +1505 -0
  44. package/dist/cjs/assetId/assetId.js +126 -0
  45. package/dist/cjs/assetId/assetId.test.js +324 -0
  46. package/dist/cjs/chainId/chainId.js +25 -0
  47. package/dist/cjs/chainId/chainId.test.js +90 -0
  48. package/dist/{constants.d.ts → cjs/constants.d.ts} +1 -1
  49. package/dist/cjs/constants.js +173 -0
  50. package/dist/cjs/index.js +36 -0
  51. package/dist/cjs/package.json +1 -0
  52. package/dist/cjs/typeGuards.js +56 -0
  53. package/dist/{utils.d.ts → cjs/utils.d.ts} +1 -1
  54. package/dist/cjs/utils.js +56 -0
  55. package/dist/cjs/utils.test.js +160 -0
  56. package/dist/esm/.tsbuildinfo +1 -0
  57. package/dist/esm/accountId/accountId.d.ts +29 -0
  58. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  59. package/dist/esm/adapters/banxa/index.d.ts +14 -0
  60. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  61. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  62. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  63. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  64. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  65. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  66. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  67. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  68. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  69. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  70. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  71. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  72. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  73. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  74. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  75. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  76. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  77. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  78. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  79. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  80. package/dist/{adapters → esm/adapters}/coincap/generated/index.js +11 -4
  81. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  82. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  83. package/dist/{adapters → esm/adapters}/coincap/index.js +3 -3
  84. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  85. package/dist/{adapters → esm/adapters}/coincap/index.test.js +8 -12
  86. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  87. package/dist/esm/adapters/coincap/utils.js +135 -0
  88. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  89. package/dist/{adapters → esm/adapters}/coincap/utils.test.js +5 -0
  90. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  91. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  92. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  93. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  94. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  95. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  96. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  97. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  98. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  99. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  100. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  101. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  102. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  103. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  104. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  105. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  106. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  107. package/dist/esm/adapters/coingecko/generated/index.js +18 -0
  108. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  109. package/dist/esm/adapters/coingecko/index.d.ts +26 -0
  110. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  111. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  112. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  113. package/dist/esm/adapters/index.js +6 -0
  114. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  115. package/dist/esm/adapters/onramper/index.d.ts +7 -0
  116. package/dist/esm/assetId/assetId.d.ts +36 -0
  117. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  118. package/dist/{assetId → esm/assetId}/assetId.test.js +0 -14
  119. package/dist/esm/chainId/chainId.d.ts +20 -0
  120. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  121. package/dist/esm/constants.d.ts +121 -0
  122. package/dist/{constants.js → esm/constants.js} +2 -2
  123. package/dist/esm/index.js +7 -0
  124. package/dist/esm/typeGuards.d.ts +16 -0
  125. package/dist/esm/utils.d.ts +33 -0
  126. package/dist/{utils.js → esm/utils.js} +11 -14
  127. package/dist/esm/utils.test.d.ts +1 -0
  128. package/dist/{utils.test.js → esm/utils.test.js} +15 -19
  129. package/package.json +17 -7
  130. package/CHANGELOG.md +0 -726
  131. package/dist/adapters/coincap/generated/eip155_1/adapter.json +0 -1
  132. package/dist/adapters/coincap/utils.js +0 -40
  133. package/dist/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
  134. package/dist/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
  135. package/dist/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
  136. package/dist/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
  137. package/dist/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
  138. package/dist/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
  139. package/dist/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
  140. package/dist/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
  141. package/dist/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
  142. /package/dist/{accountId → cjs/accountId}/accountId.d.ts +0 -0
  143. /package/dist/{accountId → cjs/accountId}/accountId.test.d.ts +0 -0
  144. /package/dist/{adapters → cjs/adapters}/banxa/index.d.ts +0 -0
  145. /package/dist/{adapters → cjs/adapters}/coinbase/generate.d.ts +0 -0
  146. /package/dist/{adapters → cjs/adapters}/coinbase/generated/adapter.json +0 -0
  147. /package/dist/{adapters → cjs/adapters}/coinbase/generated/index.d.ts +0 -0
  148. /package/dist/{adapters → cjs/adapters}/coinbase/index.d.ts +0 -0
  149. /package/dist/{adapters → cjs/adapters}/coinbase/utils.d.ts +0 -0
  150. /package/dist/{adapters → cjs/adapters}/coincap/generate.d.ts +0 -0
  151. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  152. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  153. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  154. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  155. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  156. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_thorchain-1/adapter.json +0 -0
  157. /package/dist/{adapters → cjs/adapters}/coincap/index.test.d.ts +0 -0
  158. /package/dist/{adapters → cjs/adapters}/coincap/utils.test.d.ts +0 -0
  159. /package/dist/{adapters → cjs/adapters}/coingecko/generate.d.ts +0 -0
  160. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  161. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  162. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  163. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  164. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  165. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -0
  166. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -0
  167. /package/dist/{adapters → cjs/adapters}/coingecko/generated/eip155_42170/adapter.json +0 -0
  168. /package/dist/{adapters → cjs/adapters}/coingecko/generated/index.d.ts +0 -0
  169. /package/dist/{adapters → cjs/adapters}/coingecko/index.d.ts +0 -0
  170. /package/dist/{adapters → cjs/adapters}/coingecko/index.test.d.ts +0 -0
  171. /package/dist/{adapters → cjs/adapters}/coingecko/utils.d.ts +0 -0
  172. /package/dist/{adapters → cjs/adapters}/coingecko/utils.test.d.ts +0 -0
  173. /package/dist/{adapters → cjs/adapters}/index.d.ts +0 -0
  174. /package/dist/{adapters → cjs/adapters}/mtpelerin/index.d.ts +0 -0
  175. /package/dist/{adapters → cjs/adapters}/onramper/index.d.ts +0 -0
  176. /package/dist/{assetId → cjs/assetId}/assetId.d.ts +0 -0
  177. /package/dist/{assetId → cjs/assetId}/assetId.test.d.ts +0 -0
  178. /package/dist/{chainId → cjs/chainId}/chainId.d.ts +0 -0
  179. /package/dist/{chainId → cjs/chainId}/chainId.test.d.ts +0 -0
  180. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  181. /package/dist/{typeGuards.d.ts → cjs/typeGuards.d.ts} +0 -0
  182. /package/dist/{utils.test.d.ts → cjs/utils.test.d.ts} +0 -0
  183. /package/dist/{accountId → esm/accountId}/accountId.js +0 -0
  184. /package/dist/{accountId → esm/accountId}/accountId.test.js +0 -0
  185. /package/dist/{adapters → esm/adapters}/banxa/index.js +0 -0
  186. /package/dist/{adapters → esm/adapters}/coinbase/generate.js +0 -0
  187. /package/dist/{adapters/coinbase/generated/index.js → esm/adapters/coinbase/generated/index.d.ts} +0 -0
  188. /package/dist/{adapters → esm/adapters}/coinbase/index.js +0 -0
  189. /package/dist/{adapters → esm/adapters}/coinbase/utils.js +0 -0
  190. /package/dist/{adapters → esm/adapters}/coincap/generate.js +0 -0
  191. /package/dist/{adapters → esm/adapters}/coingecko/generate.js +0 -0
  192. /package/dist/{adapters/coingecko/generated/index.js → esm/adapters/coingecko/generated/index.d.ts} +0 -0
  193. /package/dist/{adapters → esm/adapters}/coingecko/index.js +0 -0
  194. /package/dist/{adapters → esm/adapters}/coingecko/index.test.js +0 -0
  195. /package/dist/{adapters → esm/adapters}/coingecko/utils.js +0 -0
  196. /package/dist/{adapters → esm/adapters}/coingecko/utils.test.js +0 -0
  197. /package/dist/{adapters/index.js → esm/adapters/index.d.ts} +0 -0
  198. /package/dist/{adapters → esm/adapters}/mtpelerin/index.js +0 -0
  199. /package/dist/{adapters → esm/adapters}/onramper/index.js +0 -0
  200. /package/dist/{assetId → esm/assetId}/assetId.js +0 -0
  201. /package/dist/{chainId → esm/chainId}/chainId.js +0 -0
  202. /package/dist/{chainId → esm/chainId}/chainId.test.js +0 -0
  203. /package/dist/{index.js → esm/index.d.ts} +0 -0
  204. /package/dist/{typeGuards.js → esm/typeGuards.js} +0 -0
@@ -0,0 +1,26 @@
1
+ import type { AssetId } from '../../assetId/assetId';
2
+ import type { ChainId } from '../../chainId/chainId';
3
+ export { fetchData as fetchCoingeckoData, parseData as parseCoingeckoData } from './utils';
4
+ export declare enum CoingeckoAssetPlatform {
5
+ Ethereum = "ethereum",
6
+ Cosmos = "cosmos",
7
+ Polygon = "polygon-pos",
8
+ Gnosis = "xdai",
9
+ Avalanche = "avalanche",
10
+ Thorchain = "thorchain",
11
+ Mayachain = "cacao",
12
+ Optimism = "optimistic-ethereum",
13
+ BnbSmartChain = "binance-smart-chain",
14
+ Arbitrum = "arbitrum-one",
15
+ ArbitrumNova = "arbitrum-nova",
16
+ Base = "base",
17
+ Solana = "solana"
18
+ }
19
+ type CoinGeckoId = string;
20
+ export declare const coingeckoBaseUrl = "https://api.proxy.shapeshift.com/api/v1/markets";
21
+ export declare const coingeckoUrl = "https://api.proxy.shapeshift.com/api/v1/markets/coins/list?include_platform=true";
22
+ export declare const coingeckoToAssetIds: (id: CoinGeckoId) => AssetId[];
23
+ export declare const assetIdToCoingecko: (assetId: AssetId) => CoinGeckoId | undefined;
24
+ export declare const chainIdToCoingeckoAssetPlatform: (chainId: ChainId) => string;
25
+ export declare const coingeckoAssetPlatformToChainId: (platform: CoingeckoAssetPlatform) => ChainId | undefined;
26
+ export declare const makeCoingeckoAssetUrl: (assetId: AssetId) => string | undefined;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { AssetId } from '../../assetId/assetId';
2
+ import type { ChainId } from '../../chainId/chainId';
3
+ export type CoingeckoCoin = {
4
+ id: string;
5
+ platforms: Record<string, string>;
6
+ };
7
+ type AssetMap = Record<ChainId, Record<AssetId, string>>;
8
+ export declare const fetchData: (URL: string) => Promise<CoingeckoCoin[]>;
9
+ export declare const parseData: (coins: CoingeckoCoin[]) => AssetMap;
10
+ export declare const writeFiles: (data: AssetMap) => Promise<void>;
11
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export * from './coingecko';
2
+ export * from './coincap';
3
+ export * from './banxa';
4
+ export * from './coinbase';
5
+ export * from './mtpelerin';
6
+ export * from './onramper';
@@ -0,0 +1,10 @@
1
+ import type { AssetId } from '../../assetId/assetId';
2
+ export declare const mtPelerinSymbolToAssetIds: (id: string) => AssetId[];
3
+ export declare const assetIdToMtPelerinSymbol: (assetId: AssetId) => string | undefined;
4
+ /**
5
+ * Convert a mtPelerin asset identifier to a MtPelerin chain identifier for use in MtPelerin HTTP URLs
6
+ *
7
+ * @param {string} assetId - an assetId string referencing a specific asset; e.g., ethAssetId
8
+ * @returns {string} - a MtPelerin network identifier; e.g., 'mainnet'
9
+ */
10
+ export declare const getMtPelerinNetFromAssetId: (assetId: AssetId) => string | undefined;
@@ -0,0 +1,7 @@
1
+ import type { AssetId } from '../../assetId/assetId';
2
+ type OnRamperTokenId = string;
3
+ export declare const AssetIdToOnRamperIdMap: Record<AssetId, OnRamperTokenId[]>;
4
+ export declare const getOnRamperSupportedAssets: () => void;
5
+ export declare const onRamperTokenIdToAssetId: (tokenId: OnRamperTokenId) => AssetId | undefined;
6
+ export declare const assetIdToOnRamperTokenList: (assetId: AssetId) => OnRamperTokenId[] | undefined;
7
+ export {};
@@ -0,0 +1,36 @@
1
+ import type { ChainId, ChainNamespace, ChainReference } from '../chainId/chainId';
2
+ import type { ASSET_NAMESPACE, ASSET_REFERENCE } from '../constants';
3
+ import type { Nominal } from '../utils';
4
+ export type AssetId = Nominal<string, 'AssetId'>;
5
+ export type AssetNamespace = (typeof ASSET_NAMESPACE)[keyof typeof ASSET_NAMESPACE];
6
+ export type AssetReference = (typeof ASSET_REFERENCE)[keyof typeof ASSET_REFERENCE];
7
+ type ToAssetIdWithChainId = {
8
+ chainNamespace?: never;
9
+ chainReference?: never;
10
+ chainId: ChainId;
11
+ assetNamespace: AssetNamespace;
12
+ assetReference: AssetReference | string;
13
+ };
14
+ type ToAssetIdWithChainIdParts = {
15
+ chainNamespace: ChainNamespace;
16
+ chainReference: ChainReference;
17
+ chainId?: never;
18
+ assetNamespace: AssetNamespace;
19
+ assetReference: AssetReference | string;
20
+ };
21
+ export type ToAssetIdArgs = ToAssetIdWithChainId | ToAssetIdWithChainIdParts;
22
+ type ToAssetId = (args: ToAssetIdArgs) => AssetId;
23
+ export declare const toAssetId: ToAssetId;
24
+ type FromAssetIdReturn = {
25
+ chainNamespace: ChainNamespace;
26
+ chainReference: ChainReference;
27
+ chainId: ChainId;
28
+ assetNamespace: AssetNamespace;
29
+ assetReference: AssetReference;
30
+ };
31
+ export type FromAssetId = (assetId: AssetId) => FromAssetIdReturn;
32
+ export declare const fromAssetId: FromAssetId;
33
+ export declare const isNft: (assetId: AssetId) => boolean;
34
+ export declare const toCAIP19: ToAssetId;
35
+ export declare const fromCAIP19: FromAssetId;
36
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -76,20 +76,6 @@ describe('assetId', () => {
76
76
  expect(toAssetId(omit(assetIdArgSuperset, 'chainId'))).toEqual(expected);
77
77
  expect(toAssetId(omit(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
78
78
  });
79
- it('can make an IBC AssetId on CosmosHub', () => {
80
- const chainNamespace = CHAIN_NAMESPACE.CosmosSdk;
81
- const chainReference = CHAIN_REFERENCE.CosmosHubMainnet;
82
- const assetIdArgSuperset = {
83
- chainNamespace,
84
- chainReference,
85
- assetNamespace: 'ibc',
86
- assetReference: '14F9BC3E44B8A9C1BE1FB08980FAB87034C9905EF17CF2F5008FC085218811CC',
87
- chainId: toChainId({ chainNamespace, chainReference }),
88
- };
89
- const expected = 'cosmos:cosmoshub-4/ibc:14F9BC3E44B8A9C1BE1FB08980FAB87034C9905EF17CF2F5008FC085218811CC';
90
- expect(toAssetId(omit(assetIdArgSuperset, 'chainId'))).toEqual(expected);
91
- expect(toAssetId(omit(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
92
- });
93
79
  it('throws with invalid Cosmos network', () => {
94
80
  const chainNamespace = CHAIN_NAMESPACE.CosmosSdk;
95
81
  const chainReference = CHAIN_REFERENCE.BitcoinMainnet;
@@ -0,0 +1,20 @@
1
+ import type { CHAIN_NAMESPACE, CHAIN_REFERENCE } from '../constants';
2
+ import type { Nominal } from '../utils';
3
+ export type ChainId = Nominal<string, 'ChainId'>;
4
+ export type ChainNamespace = (typeof CHAIN_NAMESPACE)[keyof typeof CHAIN_NAMESPACE];
5
+ export type ChainReference = (typeof CHAIN_REFERENCE)[keyof typeof CHAIN_REFERENCE];
6
+ type ToChainIdArgs = {
7
+ chainNamespace: ChainNamespace;
8
+ chainReference: ChainReference;
9
+ };
10
+ export declare const toChainId: (args: ToChainIdArgs) => ChainId;
11
+ export declare const fromChainId: (chainId: ChainId) => {
12
+ chainNamespace: ChainNamespace;
13
+ chainReference: ChainReference;
14
+ };
15
+ export declare const toCAIP2: (args: ToChainIdArgs) => ChainId;
16
+ export declare const fromCAIP2: (chainId: ChainId) => {
17
+ chainNamespace: ChainNamespace;
18
+ chainReference: ChainReference;
19
+ };
20
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ import type { AssetId, AssetNamespace } from './assetId/assetId';
2
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId';
3
+ export declare const btcAssetId: AssetId;
4
+ export declare const bchAssetId: AssetId;
5
+ export declare const dogeAssetId: AssetId;
6
+ export declare const ltcAssetId: AssetId;
7
+ export declare const ethAssetId: AssetId;
8
+ export declare const avalancheAssetId: AssetId;
9
+ export declare const optimismAssetId: AssetId;
10
+ export declare const bscAssetId: AssetId;
11
+ export declare const polygonAssetId: AssetId;
12
+ export declare const gnosisAssetId: AssetId;
13
+ export declare const arbitrumAssetId: AssetId;
14
+ export declare const arbitrumNovaAssetId: AssetId;
15
+ export declare const baseAssetId: AssetId;
16
+ export declare const solAssetId: AssetId;
17
+ export declare const wrappedSolAssetId: AssetId;
18
+ export declare const uniV2EthFoxArbitrumAssetId: AssetId;
19
+ export declare const foxatarAssetId: AssetId;
20
+ export declare const foxyAssetId: AssetId;
21
+ export declare const foxOnGnosisAssetId: AssetId;
22
+ export declare const foxOnArbitrumOneAssetId: AssetId;
23
+ export declare const foxAssetId: AssetId;
24
+ export declare const foxOnOptimismAssetId: AssetId;
25
+ export declare const foxOnPolygonAssetId: AssetId;
26
+ export declare const usdtAssetId: AssetId;
27
+ export declare const usdcAssetId: AssetId;
28
+ export declare const usdcOnArbitrumOneAssetId: AssetId;
29
+ export declare const usdcOnSolanaAssetId: AssetId;
30
+ export declare const flipAssetId: AssetId;
31
+ export declare const foxWifHatAssetId: AssetId;
32
+ export declare const cosmosAssetId: AssetId;
33
+ export declare const thorchainAssetId: AssetId;
34
+ export declare const tcyAssetId: AssetId;
35
+ export declare const rujiAssetId: AssetId;
36
+ export declare const mayachainAssetId: AssetId;
37
+ export declare const binanceAssetId: AssetId;
38
+ export declare const btcChainId: ChainId;
39
+ export declare const bchChainId: ChainId;
40
+ export declare const dogeChainId: ChainId;
41
+ export declare const ltcChainId: ChainId;
42
+ export declare const ethChainId: ChainId;
43
+ export declare const avalancheChainId: ChainId;
44
+ export declare const optimismChainId: ChainId;
45
+ export declare const bscChainId: ChainId;
46
+ export declare const polygonChainId: ChainId;
47
+ export declare const gnosisChainId: ChainId;
48
+ export declare const arbitrumChainId: ChainId;
49
+ export declare const arbitrumNovaChainId: ChainId;
50
+ export declare const baseChainId: ChainId;
51
+ export declare const cosmosChainId: ChainId;
52
+ export declare const thorchainChainId: ChainId;
53
+ export declare const mayachainChainId: ChainId;
54
+ export declare const binanceChainId: ChainId;
55
+ export declare const solanaChainId: ChainId;
56
+ export declare const CHAIN_NAMESPACE: {
57
+ readonly Evm: "eip155";
58
+ readonly Utxo: "bip122";
59
+ readonly CosmosSdk: "cosmos";
60
+ readonly Solana: "solana";
61
+ };
62
+ type ValidChainMap = {
63
+ [k in ChainNamespace]: ChainReference[];
64
+ };
65
+ export declare const CHAIN_REFERENCE: {
66
+ readonly EthereumMainnet: "1";
67
+ readonly BitcoinMainnet: "000000000019d6689c085ae165831e93";
68
+ readonly BitcoinCashMainnet: "000000000000000000651ef99cb9fcbe";
69
+ readonly DogecoinMainnet: "00000000001a91e3dace36e2be3bf030";
70
+ readonly LitecoinMainnet: "12a765e31ffd4059bada1e25190f6e98";
71
+ readonly CosmosHubMainnet: "cosmoshub-4";
72
+ readonly ThorchainMainnet: "thorchain-1";
73
+ readonly MayachainMainnet: "mayachain-mainnet-v1";
74
+ readonly BinanceMainnet: "binance-chain-tigris";
75
+ readonly AvalancheCChain: "43114";
76
+ readonly OptimismMainnet: "10";
77
+ readonly BnbSmartChainMainnet: "56";
78
+ readonly PolygonMainnet: "137";
79
+ readonly GnosisMainnet: "100";
80
+ readonly ArbitrumMainnet: "42161";
81
+ readonly ArbitrumNovaMainnet: "42170";
82
+ readonly BaseMainnet: "8453";
83
+ readonly SolanaMainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
84
+ };
85
+ export declare const ASSET_NAMESPACE: {
86
+ readonly erc20: "erc20";
87
+ readonly erc721: "erc721";
88
+ readonly erc1155: "erc1155";
89
+ readonly bep20: "bep20";
90
+ readonly bep721: "bep721";
91
+ readonly bep1155: "bep1155";
92
+ readonly slip44: "slip44";
93
+ readonly splToken: "token";
94
+ };
95
+ export declare const ASSET_REFERENCE: {
96
+ readonly Bitcoin: "0";
97
+ readonly BitcoinCash: "145";
98
+ readonly Litecoin: "2";
99
+ readonly Dogecoin: "3";
100
+ readonly Cosmos: "118";
101
+ readonly Thorchain: "931";
102
+ readonly Mayachain: "931";
103
+ readonly Binance: "714";
104
+ readonly Ethereum: "60";
105
+ readonly AvalancheC: "60";
106
+ readonly Optimism: "60";
107
+ readonly BnbSmartChain: "60";
108
+ readonly Polygon: "60";
109
+ readonly Gnosis: "60";
110
+ readonly Arbitrum: "60";
111
+ readonly ArbitrumNova: "60";
112
+ readonly Base: "60";
113
+ readonly Solana: "501";
114
+ };
115
+ export declare const VALID_CHAIN_IDS: ValidChainMap;
116
+ type ValidAssetNamespace = {
117
+ [k in ChainNamespace]: AssetNamespace[];
118
+ };
119
+ export declare const VALID_ASSET_NAMESPACE: ValidAssetNamespace;
120
+ export declare const FEE_ASSET_IDS: AssetId[];
121
+ export {};
@@ -30,6 +30,7 @@ export const foxWifHatAssetId = 'eip155:8453/erc20:0xd14acd73ade7f3c652f05365115
30
30
  export const cosmosAssetId = 'cosmos:cosmoshub-4/slip44:118';
31
31
  export const thorchainAssetId = 'cosmos:thorchain-1/slip44:931';
32
32
  export const tcyAssetId = 'cosmos:thorchain-1/slip44:tcy';
33
+ export const rujiAssetId = 'cosmos:thorchain-1/slip44:ruji';
33
34
  export const mayachainAssetId = 'cosmos:mayachain-mainnet-v1/slip44:931';
34
35
  export const binanceAssetId = 'cosmos:binance-chain-tigris/slip44:714';
35
36
  export const btcChainId = 'bip122:000000000019d6689c085ae165831e93';
@@ -84,7 +85,6 @@ export const ASSET_NAMESPACE = {
84
85
  bep721: 'bep721',
85
86
  bep1155: 'bep1155',
86
87
  slip44: 'slip44',
87
- ibc: 'ibc',
88
88
  splToken: 'token',
89
89
  };
90
90
  export const ASSET_REFERENCE = {
@@ -144,7 +144,7 @@ export const VALID_ASSET_NAMESPACE = Object.freeze({
144
144
  ASSET_NAMESPACE.bep721,
145
145
  ASSET_NAMESPACE.bep1155,
146
146
  ],
147
- [CHAIN_NAMESPACE.CosmosSdk]: [ASSET_NAMESPACE.ibc, ASSET_NAMESPACE.slip44],
147
+ [CHAIN_NAMESPACE.CosmosSdk]: [ASSET_NAMESPACE.slip44],
148
148
  [CHAIN_NAMESPACE.Solana]: [ASSET_NAMESPACE.splToken, ASSET_NAMESPACE.slip44],
149
149
  });
150
150
  // We should prob change this once we add more chains
@@ -0,0 +1,7 @@
1
+ export * as adapters from './adapters';
2
+ export * from './chainId/chainId';
3
+ export * from './accountId/accountId';
4
+ export * from './assetId/assetId';
5
+ export * from './utils';
6
+ export * from './constants';
7
+ export * from './typeGuards';
@@ -0,0 +1,16 @@
1
+ import type { AssetId, AssetNamespace, AssetReference } from './assetId/assetId';
2
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId';
3
+ export declare const isChainNamespace: (maybeChainNamespace: ChainNamespace | string) => maybeChainNamespace is ChainNamespace;
4
+ export declare const isChainReference: (maybeChainReference: ChainReference | string) => maybeChainReference is ChainReference;
5
+ export declare const isAssetNamespace: (maybeAssetNamespace: AssetNamespace | string) => maybeAssetNamespace is AssetNamespace;
6
+ export declare const isAssetReference: (maybeAssetReference: AssetReference | string) => maybeAssetReference is AssetReference;
7
+ export declare const isAssetId: (maybeAssetId: AssetId | string) => maybeAssetId is AssetId;
8
+ export declare const isAssetIdParts: (maybeChainNamespace: string, maybeChainReference: string, maybeAssetNamespace: string) => boolean;
9
+ export declare const isChainId: (maybeChainId: ChainId | string) => maybeChainId is ChainId;
10
+ export declare const isChainIdParts: (chainNamespace: string, chainReference: string) => boolean;
11
+ export declare const assertIsChainId: (value: ChainId | string | undefined) => asserts value is ChainId;
12
+ export declare const assertIsChainNamespace: (value: ChainNamespace | string | undefined) => asserts value is ChainNamespace;
13
+ export declare const assertIsChainReference: (value: ChainReference | string | undefined) => asserts value is ChainReference;
14
+ export declare const assertIsAssetNamespace: (value: AssetNamespace | string | undefined) => asserts value is AssetNamespace;
15
+ export declare const assertIsAssetReference: (value: AssetReference | string | undefined) => asserts value is AssetReference;
16
+ export declare const assertValidChainPartsPair: (chainNamespace: ChainNamespace, chainReference: ChainReference) => void;
@@ -0,0 +1,33 @@
1
+ import type { AccountId } from './accountId/accountId';
2
+ import type { AssetId } from './assetId/assetId';
3
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId';
4
+ export declare const accountIdToChainId: (accountId: AccountId) => ChainId;
5
+ export declare const accountIdToSpecifier: (accountId: AccountId) => string;
6
+ export declare const isValidChainPartsPair: (chainNamespace: ChainNamespace, chainReference: ChainReference) => boolean;
7
+ export declare const generateAssetIdFromCosmosSdkDenom: (denom: string) => AssetId;
8
+ export declare const bitcoinAssetMap: {
9
+ [x: string]: string;
10
+ };
11
+ export declare const bitcoinCashAssetMap: {
12
+ [x: string]: string;
13
+ };
14
+ export declare const dogecoinAssetMap: {
15
+ [x: string]: string;
16
+ };
17
+ export declare const litecoinAssetMap: {
18
+ [x: string]: string;
19
+ };
20
+ export declare const cosmosAssetMap: {
21
+ [x: string]: string;
22
+ };
23
+ export declare const thorchainAssetMap: {
24
+ [x: string]: string;
25
+ };
26
+ export declare const mayachainAssetMap: {
27
+ [x: string]: string;
28
+ };
29
+ interface Flavoring<FlavorT> {
30
+ _type?: FlavorT;
31
+ }
32
+ export type Nominal<T, FlavorT> = T & Flavoring<FlavorT>;
33
+ export {};
@@ -1,24 +1,21 @@
1
1
  import { fromAccountId } from './accountId/accountId';
2
- import { fromAssetId, toAssetId } from './assetId/assetId';
3
2
  import * as constants from './constants';
4
- import { tcyAssetId } from './constants';
3
+ import { rujiAssetId, tcyAssetId } from './constants';
5
4
  const mayaTokenAssetId = 'cosmos:mayachain-mainnet-v1/slip44:maya';
6
5
  export const accountIdToChainId = (accountId) => fromAccountId(accountId).chainId;
7
6
  export const accountIdToSpecifier = (accountId) => fromAccountId(accountId).account;
8
7
  export const isValidChainPartsPair = (chainNamespace, chainReference) => constants.VALID_CHAIN_IDS[chainNamespace]?.includes(chainReference) || false;
9
- export const generateAssetIdFromCosmosSdkDenom = (denom, nativeAssetId) => {
10
- if (denom === 'tcy')
11
- return tcyAssetId;
12
- if (denom === 'maya')
13
- return mayaTokenAssetId;
14
- if (denom.startsWith('ibc')) {
15
- return toAssetId({
16
- assetNamespace: constants.ASSET_NAMESPACE.ibc,
17
- assetReference: denom.split('/')[1],
18
- chainId: fromAssetId(nativeAssetId).chainId,
19
- });
8
+ export const generateAssetIdFromCosmosSdkDenom = (denom) => {
9
+ switch (denom) {
10
+ case 'tcy':
11
+ return tcyAssetId;
12
+ case 'x/ruji':
13
+ return rujiAssetId;
14
+ case 'maya':
15
+ return mayaTokenAssetId;
16
+ default:
17
+ throw new Error(`Unsupported denom: ${denom}`);
20
18
  }
21
- return nativeAssetId;
22
19
  };
23
20
  export const bitcoinAssetMap = { [constants.btcAssetId]: 'bitcoin' };
24
21
  export const bitcoinCashAssetMap = { [constants.bchAssetId]: 'bitcoin-cash' };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { toAssetId } from './assetId/assetId';
3
- import { ASSET_NAMESPACE, ASSET_REFERENCE, btcAssetId, btcChainId, CHAIN_NAMESPACE, CHAIN_REFERENCE, cosmosAssetId, cosmosChainId, ethAssetId, ethChainId, } from './constants';
2
+ import { ASSET_NAMESPACE, ASSET_REFERENCE, btcAssetId, btcChainId, CHAIN_NAMESPACE, CHAIN_REFERENCE, cosmosAssetId, cosmosChainId, ethAssetId, ethChainId, rujiAssetId, tcyAssetId, } from './constants';
4
3
  import { assertIsAssetNamespace, assertIsAssetReference, assertIsChainId, assertIsChainNamespace, assertIsChainReference, assertValidChainPartsPair, isAssetId, isAssetNamespace, isAssetReference, isChainId, isChainNamespace, isChainReference, } from './typeGuards';
5
4
  import { accountIdToChainId, accountIdToSpecifier, generateAssetIdFromCosmosSdkDenom, isValidChainPartsPair, } from './utils';
6
5
  describe('accountIdToChainId', () => {
@@ -140,23 +139,20 @@ describe('type guard assertion', () => {
140
139
  });
141
140
  });
142
141
  describe('generateAssetIdFromCosmosDenom', () => {
143
- it('correctly generates ATOM native asset id', () => {
144
- const nativeAssetId = toAssetId({
145
- assetNamespace: ASSET_NAMESPACE.slip44,
146
- assetReference: ASSET_REFERENCE.Cosmos,
147
- chainId: cosmosChainId,
148
- });
149
- const result = generateAssetIdFromCosmosSdkDenom('uatom', cosmosAssetId);
150
- expect(result).toEqual(nativeAssetId);
151
- });
152
- it('correctly generates cosmoshub IBC asset id', () => {
153
- const ibcAssetId = toAssetId({
154
- assetNamespace: ASSET_NAMESPACE.ibc,
155
- assetReference: '14F9BC3E44B8A9C1BE1FB08980FAB87034C9905EF17CF2F5008FC085218811CC',
156
- chainId: cosmosChainId,
157
- });
158
- const result = generateAssetIdFromCosmosSdkDenom('ibc/14F9BC3E44B8A9C1BE1FB08980FAB87034C9905EF17CF2F5008FC085218811CC', cosmosAssetId);
159
- expect(result).toEqual(ibcAssetId);
142
+ it('correctly generates RUJI AssetId', () => {
143
+ const result = generateAssetIdFromCosmosSdkDenom('x/ruji');
144
+ expect(result).toEqual(rujiAssetId);
145
+ });
146
+ it('correctly generates TCY AssetId', () => {
147
+ const result = generateAssetIdFromCosmosSdkDenom('tcy');
148
+ expect(result).toEqual(tcyAssetId);
149
+ });
150
+ it('correctly generates MAYA AssetId', () => {
151
+ const result = generateAssetIdFromCosmosSdkDenom('maya');
152
+ expect(result).toEqual('cosmos:mayachain-mainnet-v1/slip44:maya');
153
+ });
154
+ it('throws on unsupported denom', () => {
155
+ expect(() => generateAssetIdFromCosmosSdkDenom('unsupported')).toThrow();
160
156
  });
161
157
  });
162
158
  });
package/package.json CHANGED
@@ -1,11 +1,20 @@
1
1
  {
2
2
  "name": "@shapeshiftoss/caip",
3
- "version": "8.16.1",
3
+ "version": "9.0.0-alpha.0",
4
4
  "description": "CAIP Implementation",
5
5
  "repository": "https://github.com/shapeshift/web",
6
6
  "license": "MIT",
7
- "main": "dist/index.js",
8
- "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "main": "dist/cjs/index.js",
9
+ "module": "dist/esm/index.js",
10
+ "types": "dist/esm/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/esm/index.js",
14
+ "require": "./dist/cjs/index.js",
15
+ "types": "./dist/esm/index.d.ts"
16
+ }
17
+ },
9
18
  "files": [
10
19
  "dist"
11
20
  ],
@@ -13,11 +22,12 @@
13
22
  "access": "public"
14
23
  },
15
24
  "scripts": {
16
- "build": "yarn clean && yarn run -T tsc --build",
17
- "clean": "rm -rf dist tsconfig.tsbuildinfo",
25
+ "build": "yarn clean && yarn run -T tsc --build && yarn postbuild",
26
+ "clean": "rm -rf dist",
18
27
  "dev": "yarn run -T tsc --build --watch",
19
28
  "generate": "yarn generate:coingecko && yarn generate:coincap",
20
29
  "generate:coingecko": "yarn build && yarn run -T tsx src/adapters/coingecko/generate.ts",
21
- "generate:coincap": "yarn build && yarn run -T tsx src/adapters/coincap/generate.ts"
30
+ "generate:coincap": "yarn build && yarn run -T tsx src/adapters/coincap/generate.ts",
31
+ "postbuild": "echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json"
22
32
  }
23
- }
33
+ }