@shapeshiftoss/utils 1.0.3 → 1.0.4

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 (136) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/assertUnreachable.d.ts +1 -0
  3. package/dist/cjs/assertUnreachable.js +7 -0
  4. package/dist/cjs/assetData/assetData.test.d.ts +1 -0
  5. package/dist/cjs/assetData/assetData.test.js +136 -0
  6. package/dist/cjs/assetData/baseAssets.d.ts +24 -0
  7. package/dist/cjs/assetData/baseAssets.js +365 -0
  8. package/dist/cjs/assetData/constants.d.ts +1 -0
  9. package/dist/cjs/assetData/constants.js +13 -0
  10. package/dist/cjs/assetData/decodeAssetData.d.ts +7 -0
  11. package/dist/cjs/assetData/decodeAssetData.js +106 -0
  12. package/dist/cjs/assetData/decodeRelatedAssetIndex.d.ts +3 -0
  13. package/dist/cjs/assetData/decodeRelatedAssetIndex.js +14 -0
  14. package/dist/cjs/assetData/encodeAssetData.d.ts +4 -0
  15. package/dist/cjs/assetData/encodeAssetData.js +72 -0
  16. package/dist/cjs/assetData/encodeRelatedAssetIndex.d.ts +3 -0
  17. package/dist/cjs/assetData/encodeRelatedAssetIndex.js +20 -0
  18. package/dist/cjs/assetData/getBaseAsset.d.ts +3 -0
  19. package/dist/cjs/assetData/getBaseAsset.js +54 -0
  20. package/dist/cjs/assetData/index.d.ts +7 -0
  21. package/dist/cjs/assetData/index.js +23 -0
  22. package/dist/cjs/assetData/relatedAssetIndex.test.d.ts +1 -0
  23. package/dist/cjs/assetData/relatedAssetIndex.test.js +32 -0
  24. package/dist/cjs/assetData/types.d.ts +28 -0
  25. package/dist/cjs/assetData/types.js +2 -0
  26. package/dist/cjs/baseUnits/baseUnits.d.ts +5 -0
  27. package/dist/cjs/baseUnits/baseUnits.js +32 -0
  28. package/dist/cjs/baseUnits/baseUnits.test.d.ts +1 -0
  29. package/dist/cjs/baseUnits/baseUnits.test.js +32 -0
  30. package/dist/cjs/basisPoints.d.ts +23 -0
  31. package/dist/cjs/basisPoints.js +48 -0
  32. package/dist/cjs/bignumber/bignumber.d.ts +11 -0
  33. package/dist/cjs/bignumber/bignumber.js +27 -0
  34. package/dist/cjs/bignumber/bignumber.test.d.ts +1 -0
  35. package/dist/cjs/bignumber/bignumber.test.js +52 -0
  36. package/dist/cjs/chainIdToFeeAsset.d.ts +3 -0
  37. package/dist/cjs/chainIdToFeeAsset.js +9 -0
  38. package/dist/cjs/chainIdToFeeAssetId.d.ts +2 -0
  39. package/dist/cjs/chainIdToFeeAssetId.js +54 -0
  40. package/dist/cjs/createThrottle.d.ts +9 -0
  41. package/dist/cjs/createThrottle.js +36 -0
  42. package/dist/cjs/getAssetNamespaceFromChainId.d.ts +3 -0
  43. package/dist/cjs/getAssetNamespaceFromChainId.js +37 -0
  44. package/dist/cjs/getChainShortName.d.ts +2 -0
  45. package/dist/cjs/getChainShortName.js +53 -0
  46. package/dist/cjs/getNativeFeeAssetReference.d.ts +2 -0
  47. package/dist/cjs/getNativeFeeAssetReference.js +83 -0
  48. package/dist/cjs/historyTimeframe.d.ts +6 -0
  49. package/dist/cjs/historyTimeframe.js +36 -0
  50. package/dist/cjs/index.d.ts +24 -0
  51. package/dist/cjs/index.js +60 -0
  52. package/dist/cjs/makeAsset/makeAsset.d.ts +10 -0
  53. package/dist/cjs/makeAsset/makeAsset.js +45 -0
  54. package/dist/cjs/makeAsset/makeAsset.test.d.ts +1 -0
  55. package/dist/cjs/makeAsset/makeAsset.test.js +47 -0
  56. package/dist/cjs/package.json +1 -0
  57. package/dist/cjs/promises.d.ts +4 -0
  58. package/dist/cjs/promises.js +9 -0
  59. package/dist/cjs/sha256.d.ts +1 -0
  60. package/dist/cjs/sha256.js +9 -0
  61. package/dist/cjs/timeout.d.ts +7 -0
  62. package/dist/cjs/timeout.js +34 -0
  63. package/dist/cjs/treasury.d.ts +16 -0
  64. package/dist/cjs/treasury.js +34 -0
  65. package/dist/cjs/unfreeze.d.ts +4 -0
  66. package/dist/cjs/unfreeze.js +10 -0
  67. package/dist/cjs/utxo.d.ts +2 -0
  68. package/dist/cjs/utxo.js +6 -0
  69. package/dist/esm/.tsbuildinfo +1 -0
  70. package/dist/esm/assertUnreachable.d.ts +1 -0
  71. package/dist/esm/assertUnreachable.js +3 -0
  72. package/dist/esm/assetData/assetData.test.d.ts +1 -0
  73. package/dist/esm/assetData/assetData.test.js +134 -0
  74. package/dist/esm/assetData/baseAssets.d.ts +24 -0
  75. package/dist/esm/assetData/baseAssets.js +339 -0
  76. package/dist/esm/assetData/constants.d.ts +1 -0
  77. package/dist/esm/assetData/constants.js +10 -0
  78. package/dist/esm/assetData/decodeAssetData.d.ts +7 -0
  79. package/dist/esm/assetData/decodeAssetData.js +102 -0
  80. package/dist/esm/assetData/decodeRelatedAssetIndex.d.ts +3 -0
  81. package/dist/esm/assetData/decodeRelatedAssetIndex.js +10 -0
  82. package/dist/esm/assetData/encodeAssetData.d.ts +4 -0
  83. package/dist/esm/assetData/encodeAssetData.js +68 -0
  84. package/dist/esm/assetData/encodeRelatedAssetIndex.d.ts +3 -0
  85. package/dist/esm/assetData/encodeRelatedAssetIndex.js +16 -0
  86. package/dist/esm/assetData/getBaseAsset.d.ts +3 -0
  87. package/dist/esm/assetData/getBaseAsset.js +50 -0
  88. package/dist/esm/assetData/index.d.ts +7 -0
  89. package/dist/esm/assetData/index.js +7 -0
  90. package/dist/esm/assetData/relatedAssetIndex.test.d.ts +1 -0
  91. package/dist/esm/assetData/relatedAssetIndex.test.js +30 -0
  92. package/dist/esm/assetData/types.d.ts +28 -0
  93. package/dist/esm/assetData/types.js +1 -0
  94. package/dist/esm/baseUnits/baseUnits.d.ts +5 -0
  95. package/dist/esm/baseUnits/baseUnits.js +23 -0
  96. package/dist/esm/baseUnits/baseUnits.test.d.ts +1 -0
  97. package/dist/esm/baseUnits/baseUnits.test.js +30 -0
  98. package/dist/esm/basisPoints.d.ts +23 -0
  99. package/dist/esm/basisPoints.js +39 -0
  100. package/dist/esm/bignumber/bignumber.d.ts +11 -0
  101. package/dist/esm/bignumber/bignumber.js +16 -0
  102. package/dist/esm/bignumber/bignumber.test.d.ts +1 -0
  103. package/dist/esm/bignumber/bignumber.test.js +50 -0
  104. package/dist/esm/chainIdToFeeAsset.d.ts +3 -0
  105. package/dist/esm/chainIdToFeeAsset.js +5 -0
  106. package/dist/esm/chainIdToFeeAssetId.d.ts +2 -0
  107. package/dist/esm/chainIdToFeeAssetId.js +50 -0
  108. package/dist/esm/createThrottle.d.ts +9 -0
  109. package/dist/esm/createThrottle.js +32 -0
  110. package/dist/esm/getAssetNamespaceFromChainId.d.ts +3 -0
  111. package/dist/esm/getAssetNamespaceFromChainId.js +33 -0
  112. package/dist/esm/getChainShortName.d.ts +2 -0
  113. package/dist/esm/getChainShortName.js +49 -0
  114. package/dist/esm/getNativeFeeAssetReference.d.ts +2 -0
  115. package/dist/esm/getNativeFeeAssetReference.js +79 -0
  116. package/dist/esm/historyTimeframe.d.ts +6 -0
  117. package/dist/esm/historyTimeframe.js +29 -0
  118. package/dist/esm/index.d.ts +24 -0
  119. package/dist/esm/index.js +39 -0
  120. package/dist/esm/makeAsset/makeAsset.d.ts +10 -0
  121. package/dist/esm/makeAsset/makeAsset.js +41 -0
  122. package/dist/esm/makeAsset/makeAsset.test.d.ts +1 -0
  123. package/dist/esm/makeAsset/makeAsset.test.js +45 -0
  124. package/dist/esm/promises.d.ts +4 -0
  125. package/dist/esm/promises.js +3 -0
  126. package/dist/esm/sha256.d.ts +1 -0
  127. package/dist/esm/sha256.js +2 -0
  128. package/dist/esm/timeout.d.ts +7 -0
  129. package/dist/esm/timeout.js +28 -0
  130. package/dist/esm/treasury.d.ts +16 -0
  131. package/dist/esm/treasury.js +30 -0
  132. package/dist/esm/unfreeze.d.ts +4 -0
  133. package/dist/esm/unfreeze.js +6 -0
  134. package/dist/esm/utxo.d.ts +2 -0
  135. package/dist/esm/utxo.js +2 -0
  136. package/package.json +3 -3
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createThrottle = void 0;
4
+ const createThrottle = ({ capacity, costPerReq, drainPerInterval, intervalMs, }) => {
5
+ let currentLevel = 0;
6
+ let pendingResolves = [];
7
+ const drain = () => {
8
+ const drainAmount = Math.min(currentLevel, drainPerInterval);
9
+ currentLevel -= drainAmount;
10
+ // Resolve pending promises if there's enough capacity
11
+ while (pendingResolves.length > 0 && currentLevel + costPerReq <= capacity) {
12
+ const resolve = pendingResolves.shift();
13
+ if (resolve) {
14
+ currentLevel += costPerReq;
15
+ resolve();
16
+ }
17
+ }
18
+ };
19
+ // Start the interval to drain the capacity
20
+ const intervalId = setInterval(drain, intervalMs);
21
+ const throttle = async () => {
22
+ if (currentLevel + costPerReq <= capacity) {
23
+ // If adding another request doesn't exceed capacity, proceed immediately
24
+ currentLevel += costPerReq;
25
+ }
26
+ else {
27
+ // Otherwise, wait until there's enough capacity
28
+ await new Promise(resolve => {
29
+ pendingResolves.push(resolve);
30
+ });
31
+ }
32
+ };
33
+ const clear = () => clearInterval(intervalId);
34
+ return { throttle, clear };
35
+ };
36
+ exports.createThrottle = createThrottle;
@@ -0,0 +1,3 @@
1
+ import type { AssetNamespace } from '@shapeshiftoss/caip';
2
+ import { KnownChainIds } from '@shapeshiftoss/types';
3
+ export declare const getAssetNamespaceFromChainId: (chainId: KnownChainIds) => AssetNamespace;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAssetNamespaceFromChainId = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const types_1 = require("@shapeshiftoss/types");
6
+ const assertUnreachable_1 = require("./assertUnreachable");
7
+ const getAssetNamespaceFromChainId = (chainId) => {
8
+ switch (chainId) {
9
+ case types_1.KnownChainIds.SolanaMainnet:
10
+ return caip_1.ASSET_NAMESPACE.splToken;
11
+ case types_1.KnownChainIds.SuiMainnet:
12
+ return caip_1.ASSET_NAMESPACE.slip44;
13
+ case types_1.KnownChainIds.EthereumMainnet:
14
+ case types_1.KnownChainIds.AvalancheMainnet:
15
+ case types_1.KnownChainIds.OptimismMainnet:
16
+ case types_1.KnownChainIds.PolygonMainnet:
17
+ case types_1.KnownChainIds.GnosisMainnet:
18
+ case types_1.KnownChainIds.ArbitrumMainnet:
19
+ case types_1.KnownChainIds.ArbitrumNovaMainnet:
20
+ case types_1.KnownChainIds.BaseMainnet:
21
+ case types_1.KnownChainIds.BnbSmartChainMainnet:
22
+ case types_1.KnownChainIds.MonadMainnet:
23
+ return caip_1.ASSET_NAMESPACE.erc20;
24
+ case types_1.KnownChainIds.CosmosMainnet:
25
+ case types_1.KnownChainIds.BitcoinMainnet:
26
+ case types_1.KnownChainIds.BitcoinCashMainnet:
27
+ case types_1.KnownChainIds.DogecoinMainnet:
28
+ case types_1.KnownChainIds.LitecoinMainnet:
29
+ case types_1.KnownChainIds.ThorchainMainnet:
30
+ case types_1.KnownChainIds.MayachainMainnet:
31
+ case types_1.KnownChainIds.TronMainnet:
32
+ throw Error(`Unhandled case '${chainId}'`);
33
+ default:
34
+ return (0, assertUnreachable_1.assertUnreachable)(chainId);
35
+ }
36
+ };
37
+ exports.getAssetNamespaceFromChainId = getAssetNamespaceFromChainId;
@@ -0,0 +1,2 @@
1
+ import { KnownChainIds } from '@shapeshiftoss/types';
2
+ export declare const getChainShortName: (chainId: KnownChainIds) => "AVA" | "OP" | "ETH" | "POLY" | "GNO" | "BNB" | "ARB" | "ARB-Nova" | "BAS" | "BTC" | "BCH" | "COSM" | "THOR" | "MAYA" | "DOGE" | "LTC" | "SOL" | "TRX" | "SUI" | "MON" | undefined;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChainShortName = void 0;
4
+ const types_1 = require("@shapeshiftoss/types");
5
+ const assertUnreachable_1 = require("./assertUnreachable");
6
+ const getChainShortName = (chainId) => {
7
+ switch (chainId) {
8
+ case types_1.KnownChainIds.AvalancheMainnet:
9
+ return 'AVA';
10
+ case types_1.KnownChainIds.OptimismMainnet:
11
+ return 'OP';
12
+ case types_1.KnownChainIds.EthereumMainnet:
13
+ return 'ETH';
14
+ case types_1.KnownChainIds.PolygonMainnet:
15
+ return 'POLY';
16
+ case types_1.KnownChainIds.GnosisMainnet:
17
+ return 'GNO';
18
+ case types_1.KnownChainIds.BnbSmartChainMainnet:
19
+ return 'BNB';
20
+ case types_1.KnownChainIds.ArbitrumMainnet:
21
+ return 'ARB';
22
+ case types_1.KnownChainIds.ArbitrumNovaMainnet:
23
+ return 'ARB-Nova';
24
+ case types_1.KnownChainIds.BaseMainnet:
25
+ return 'BAS';
26
+ case types_1.KnownChainIds.BitcoinMainnet:
27
+ return 'BTC';
28
+ case types_1.KnownChainIds.BitcoinCashMainnet:
29
+ return 'BCH';
30
+ case types_1.KnownChainIds.CosmosMainnet:
31
+ return 'COSM';
32
+ case types_1.KnownChainIds.ThorchainMainnet:
33
+ return 'THOR';
34
+ case types_1.KnownChainIds.MayachainMainnet:
35
+ return 'MAYA';
36
+ case types_1.KnownChainIds.DogecoinMainnet:
37
+ return 'DOGE';
38
+ case types_1.KnownChainIds.LitecoinMainnet:
39
+ return 'LTC';
40
+ case types_1.KnownChainIds.SolanaMainnet:
41
+ return 'SOL';
42
+ case types_1.KnownChainIds.TronMainnet:
43
+ return 'TRX';
44
+ case types_1.KnownChainIds.SuiMainnet:
45
+ return 'SUI';
46
+ case types_1.KnownChainIds.MonadMainnet:
47
+ return 'MON';
48
+ default: {
49
+ (0, assertUnreachable_1.assertUnreachable)(chainId);
50
+ }
51
+ }
52
+ };
53
+ exports.getChainShortName = getChainShortName;
@@ -0,0 +1,2 @@
1
+ import type { AssetReference, ChainNamespace, ChainReference } from '@shapeshiftoss/caip';
2
+ export declare const getNativeFeeAssetReference: (chainNamespace: ChainNamespace, chainReference: ChainReference) => AssetReference;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNativeFeeAssetReference = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const getNativeFeeAssetReference = (chainNamespace, chainReference) => {
6
+ return (() => {
7
+ switch (chainNamespace) {
8
+ case caip_1.CHAIN_NAMESPACE.Utxo:
9
+ switch (chainReference) {
10
+ case caip_1.CHAIN_REFERENCE.BitcoinMainnet:
11
+ return caip_1.ASSET_REFERENCE.Bitcoin;
12
+ case caip_1.CHAIN_REFERENCE.BitcoinCashMainnet:
13
+ return caip_1.ASSET_REFERENCE.BitcoinCash;
14
+ case caip_1.CHAIN_REFERENCE.DogecoinMainnet:
15
+ return caip_1.ASSET_REFERENCE.Dogecoin;
16
+ case caip_1.CHAIN_REFERENCE.LitecoinMainnet:
17
+ return caip_1.ASSET_REFERENCE.Litecoin;
18
+ default:
19
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
20
+ }
21
+ case caip_1.CHAIN_NAMESPACE.Evm:
22
+ switch (chainReference) {
23
+ case caip_1.CHAIN_REFERENCE.AvalancheCChain:
24
+ return caip_1.ASSET_REFERENCE.AvalancheC;
25
+ case caip_1.CHAIN_REFERENCE.EthereumMainnet:
26
+ return caip_1.ASSET_REFERENCE.Ethereum;
27
+ case caip_1.CHAIN_REFERENCE.OptimismMainnet:
28
+ return caip_1.ASSET_REFERENCE.Optimism;
29
+ case caip_1.CHAIN_REFERENCE.BnbSmartChainMainnet:
30
+ return caip_1.ASSET_REFERENCE.BnbSmartChain;
31
+ case caip_1.CHAIN_REFERENCE.PolygonMainnet:
32
+ return caip_1.ASSET_REFERENCE.Polygon;
33
+ case caip_1.CHAIN_REFERENCE.GnosisMainnet:
34
+ return caip_1.ASSET_REFERENCE.Gnosis;
35
+ case caip_1.CHAIN_REFERENCE.ArbitrumMainnet:
36
+ return caip_1.ASSET_REFERENCE.Arbitrum;
37
+ case caip_1.CHAIN_REFERENCE.ArbitrumNovaMainnet:
38
+ return caip_1.ASSET_REFERENCE.ArbitrumNova;
39
+ case caip_1.CHAIN_REFERENCE.BaseMainnet:
40
+ return caip_1.ASSET_REFERENCE.Base;
41
+ case caip_1.CHAIN_REFERENCE.MonadMainnet:
42
+ return caip_1.ASSET_REFERENCE.Monad;
43
+ default:
44
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
45
+ }
46
+ case caip_1.CHAIN_NAMESPACE.CosmosSdk:
47
+ switch (chainReference) {
48
+ case caip_1.CHAIN_REFERENCE.CosmosHubMainnet:
49
+ return caip_1.ASSET_REFERENCE.Cosmos;
50
+ case caip_1.CHAIN_REFERENCE.ThorchainMainnet:
51
+ return caip_1.ASSET_REFERENCE.Thorchain;
52
+ case caip_1.CHAIN_REFERENCE.MayachainMainnet:
53
+ return caip_1.ASSET_REFERENCE.Mayachain;
54
+ default:
55
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
56
+ }
57
+ case caip_1.CHAIN_NAMESPACE.Solana:
58
+ switch (chainReference) {
59
+ case caip_1.CHAIN_REFERENCE.SolanaMainnet:
60
+ return caip_1.ASSET_REFERENCE.Solana;
61
+ default:
62
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
63
+ }
64
+ case caip_1.CHAIN_NAMESPACE.Tron:
65
+ switch (chainReference) {
66
+ case caip_1.CHAIN_REFERENCE.TronMainnet:
67
+ return caip_1.ASSET_REFERENCE.Tron;
68
+ default:
69
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
70
+ }
71
+ case caip_1.CHAIN_NAMESPACE.Sui:
72
+ switch (chainReference) {
73
+ case caip_1.CHAIN_REFERENCE.SuiMainnet:
74
+ return caip_1.ASSET_REFERENCE.Sui;
75
+ default:
76
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
77
+ }
78
+ default:
79
+ throw new Error(`Chain namespace ${chainNamespace} on ${chainReference} not supported.`);
80
+ }
81
+ })();
82
+ };
83
+ exports.getNativeFeeAssetReference = getNativeFeeAssetReference;
@@ -0,0 +1,6 @@
1
+ import { HistoryTimeframe } from '@shapeshiftoss/types';
2
+ import dayjs from 'dayjs';
3
+ export declare const getHistoryTimeframeBounds: (timeframe: HistoryTimeframe, end?: dayjs.Dayjs) => {
4
+ start: dayjs.Dayjs;
5
+ end: dayjs.Dayjs;
6
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getHistoryTimeframeBounds = void 0;
7
+ const types_1 = require("@shapeshiftoss/types");
8
+ const dayjs_1 = __importDefault(require("dayjs"));
9
+ const assertUnreachable_1 = require("./assertUnreachable");
10
+ const getHistoryTimeframeBounds = (timeframe, end = (0, dayjs_1.default)().endOf('day')) => {
11
+ let start = end; // Shut up typescript.
12
+ switch (timeframe) {
13
+ case types_1.HistoryTimeframe.HOUR:
14
+ start = end.subtract(1, 'day');
15
+ break;
16
+ case types_1.HistoryTimeframe.DAY:
17
+ start = end.subtract(1, 'day');
18
+ break;
19
+ case types_1.HistoryTimeframe.WEEK:
20
+ start = end.subtract(1, 'week');
21
+ break;
22
+ case types_1.HistoryTimeframe.MONTH:
23
+ start = end.subtract(1, 'month');
24
+ break;
25
+ case types_1.HistoryTimeframe.YEAR:
26
+ start = end.subtract(1, 'year');
27
+ break;
28
+ case types_1.HistoryTimeframe.ALL:
29
+ start = end.subtract(5, 'years');
30
+ break;
31
+ default:
32
+ (0, assertUnreachable_1.assertUnreachable)(timeframe);
33
+ }
34
+ return { start, end };
35
+ };
36
+ exports.getHistoryTimeframeBounds = getHistoryTimeframeBounds;
@@ -0,0 +1,24 @@
1
+ import type { AssetId } from '@shapeshiftoss/caip';
2
+ export * from './makeAsset/makeAsset';
3
+ export * from './assertUnreachable';
4
+ export * from './sha256';
5
+ export * from './chainIdToFeeAsset';
6
+ export * from './chainIdToFeeAssetId';
7
+ export * from './utxo';
8
+ export * from './bignumber/bignumber';
9
+ export * from './basisPoints';
10
+ export * from './baseUnits/baseUnits';
11
+ export * from './promises';
12
+ export * from './treasury';
13
+ export * from './timeout';
14
+ export * from './createThrottle';
15
+ export * from './historyTimeframe';
16
+ export * from './getNativeFeeAssetReference';
17
+ export * from './assetData';
18
+ export * from './unfreeze';
19
+ export * from './getAssetNamespaceFromChainId';
20
+ export * from './getChainShortName';
21
+ export declare const isSome: <T>(option: T | null | undefined) => option is T;
22
+ export declare const isToken: (assetId: AssetId) => boolean;
23
+ export declare const isSplToken: (assetId: AssetId) => boolean;
24
+ export declare const contractAddressOrUndefined: (assetId: AssetId) => import("@shapeshiftoss/caip").AssetReference | undefined;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.contractAddressOrUndefined = exports.isSplToken = exports.isToken = exports.isSome = void 0;
18
+ const caip_1 = require("@shapeshiftoss/caip");
19
+ const lodash_1 = require("lodash");
20
+ __exportStar(require("./makeAsset/makeAsset"), exports);
21
+ __exportStar(require("./assertUnreachable"), exports);
22
+ __exportStar(require("./sha256"), exports);
23
+ __exportStar(require("./chainIdToFeeAsset"), exports);
24
+ __exportStar(require("./chainIdToFeeAssetId"), exports);
25
+ __exportStar(require("./utxo"), exports);
26
+ __exportStar(require("./bignumber/bignumber"), exports);
27
+ __exportStar(require("./basisPoints"), exports);
28
+ __exportStar(require("./baseUnits/baseUnits"), exports);
29
+ __exportStar(require("./promises"), exports);
30
+ __exportStar(require("./treasury"), exports);
31
+ __exportStar(require("./timeout"), exports);
32
+ __exportStar(require("./createThrottle"), exports);
33
+ __exportStar(require("./historyTimeframe"), exports);
34
+ __exportStar(require("./getNativeFeeAssetReference"), exports);
35
+ __exportStar(require("./assetData"), exports);
36
+ __exportStar(require("./unfreeze"), exports);
37
+ __exportStar(require("./getAssetNamespaceFromChainId"), exports);
38
+ __exportStar(require("./getChainShortName"), exports);
39
+ const isSome = (option) => !(0, lodash_1.isUndefined)(option) && !(0, lodash_1.isNull)(option);
40
+ exports.isSome = isSome;
41
+ const isToken = (assetId) => {
42
+ switch ((0, caip_1.fromAssetId)(assetId).assetNamespace) {
43
+ case caip_1.ASSET_NAMESPACE.erc20:
44
+ case caip_1.ASSET_NAMESPACE.erc721:
45
+ case caip_1.ASSET_NAMESPACE.erc1155:
46
+ case caip_1.ASSET_NAMESPACE.splToken:
47
+ case caip_1.ASSET_NAMESPACE.trc20:
48
+ case caip_1.ASSET_NAMESPACE.suiCoin:
49
+ return true;
50
+ default:
51
+ return false;
52
+ }
53
+ };
54
+ exports.isToken = isToken;
55
+ const isSplToken = (assetId) => {
56
+ return (0, caip_1.fromAssetId)(assetId).assetNamespace === caip_1.ASSET_NAMESPACE.splToken;
57
+ };
58
+ exports.isSplToken = isSplToken;
59
+ const contractAddressOrUndefined = (assetId) => (0, exports.isToken)(assetId) || (0, exports.isSplToken)(assetId) ? (0, caip_1.fromAssetId)(assetId).assetReference : undefined;
60
+ exports.contractAddressOrUndefined = contractAddressOrUndefined;
@@ -0,0 +1,10 @@
1
+ import type { AssetId } from '@shapeshiftoss/caip';
2
+ import type { Asset } from '@shapeshiftoss/types';
3
+ export type MinimalAsset = Partial<Asset> & Pick<Asset, 'assetId' | 'symbol' | 'name' | 'precision'>;
4
+ /**
5
+ * utility to create an asset from minimal asset data from external sources at runtime
6
+ * e.g. zapper/zerion/etherscan
7
+ * required fields are assetId, symbol, name, precision
8
+ * the rest can be inferred from existing data
9
+ */
10
+ export declare const makeAsset: (assetsById: Partial<Record<AssetId, Asset>>, minimalAsset: MinimalAsset) => Asset;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeAsset = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const chainIdToFeeAsset_1 = require("../chainIdToFeeAsset");
6
+ const sha256_1 = require("../sha256");
7
+ /**
8
+ * utility to create an asset from minimal asset data from external sources at runtime
9
+ * e.g. zapper/zerion/etherscan
10
+ * required fields are assetId, symbol, name, precision
11
+ * the rest can be inferred from existing data
12
+ */
13
+ const makeAsset = (assetsById, minimalAsset) => {
14
+ const { assetId } = minimalAsset;
15
+ const color = (() => {
16
+ if (minimalAsset.color)
17
+ return minimalAsset.color;
18
+ const shaAssetId = (0, sha256_1.sha256)(assetId);
19
+ return `#${shaAssetId.slice(0, 6)}`;
20
+ })();
21
+ const chainId = (() => {
22
+ if (minimalAsset.chainId)
23
+ return minimalAsset.chainId;
24
+ return (0, caip_1.fromAssetId)(assetId).chainId;
25
+ })();
26
+ // currently, dynamic assets are LP pairs, and they have two icon urls and are rendered differently
27
+ const icon = minimalAsset?.icon ?? '';
28
+ const explorerLinks = (() => {
29
+ const feeAsset = (0, chainIdToFeeAsset_1.chainIdToFeeAsset)(assetsById, chainId);
30
+ return {
31
+ explorer: feeAsset?.explorer ?? '',
32
+ explorerTxLink: feeAsset?.explorerTxLink ?? '',
33
+ explorerAddressLink: feeAsset?.explorerAddressLink ?? '',
34
+ };
35
+ })();
36
+ return Object.assign({}, minimalAsset, explorerLinks, {
37
+ chainId,
38
+ color,
39
+ icon,
40
+ relatedAssetKey: null,
41
+ isPrimary: true,
42
+ isChainSpecific: true,
43
+ });
44
+ };
45
+ exports.makeAsset = makeAsset;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const caip_1 = require("@shapeshiftoss/caip");
4
+ const vitest_1 = require("vitest");
5
+ const makeAsset_1 = require("./makeAsset");
6
+ const ETH = {
7
+ assetId: caip_1.ethAssetId,
8
+ chainId: caip_1.ethChainId,
9
+ symbol: 'ETH',
10
+ name: 'Ethereum',
11
+ precision: 18,
12
+ color: '#FFFFFF',
13
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
14
+ explorer: 'https://etherscan.io',
15
+ explorerTxLink: 'https://etherscan.io/tx/',
16
+ explorerAddressLink: 'https://etherscan.io/address/',
17
+ relatedAssetKey: null,
18
+ };
19
+ (0, vitest_1.describe)('makeAsset', () => {
20
+ (0, vitest_1.it)('can make erc20 shitcoins', () => {
21
+ const assetReference = '0xfoobar0000000000000000000000000000000000';
22
+ const assetNamespace = caip_1.ASSET_NAMESPACE.erc20;
23
+ const symbol = 'FOOO';
24
+ const name = 'Humble Panda';
25
+ const precision = 18;
26
+ const chainId = caip_1.ethChainId;
27
+ const assetId = (0, caip_1.toAssetId)({ chainId, assetNamespace, assetReference });
28
+ const minimalAsset = { assetId, symbol, precision, name };
29
+ const assetsById = { [ETH.assetId]: ETH };
30
+ const asset = (0, makeAsset_1.makeAsset)(assetsById, minimalAsset);
31
+ const asset2 = (0, makeAsset_1.makeAsset)(assetsById, minimalAsset);
32
+ // doesn't molest asset id, precision, symbol, name
33
+ (0, vitest_1.expect)(asset?.assetId).toEqual(assetId);
34
+ (0, vitest_1.expect)(asset?.name).toEqual(name);
35
+ (0, vitest_1.expect)(asset?.symbol).toEqual(symbol);
36
+ (0, vitest_1.expect)(asset?.precision).toEqual(precision);
37
+ // belongs to correct chain
38
+ (0, vitest_1.expect)(asset?.chainId).toEqual(chainId);
39
+ // inherits fee asset explorer links
40
+ (0, vitest_1.expect)(asset?.explorer).toEqual(ETH.explorer);
41
+ (0, vitest_1.expect)(asset?.explorerTxLink).toEqual(ETH.explorerTxLink);
42
+ (0, vitest_1.expect)(asset?.explorerAddressLink).toEqual(ETH.explorerAddressLink);
43
+ // is deterministic on color and icon
44
+ (0, vitest_1.expect)(asset?.color).toEqual(asset2?.color);
45
+ (0, vitest_1.expect)(asset?.icon).toEqual(asset2?.icon);
46
+ });
47
+ });
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,4 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ export declare const isFulfilled: <T>(promise: PromiseSettledResult<T>) => promise is PromiseFulfilledResult<T>;
3
+ export declare const isRejected: <T>(promise: PromiseSettledResult<T>) => promise is PromiseRejectedResult;
4
+ export declare const isResolvedErr: <U, V, T extends Result<U, V>>(promise: PromiseSettledResult<T>) => promise is PromiseRejectedResult;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResolvedErr = exports.isRejected = exports.isFulfilled = void 0;
4
+ const isFulfilled = (promise) => promise.status === 'fulfilled';
5
+ exports.isFulfilled = isFulfilled;
6
+ const isRejected = (promise) => promise.status === 'rejected';
7
+ exports.isRejected = isRejected;
8
+ const isResolvedErr = (promise) => 'value' in promise && promise.value.isErr();
9
+ exports.isResolvedErr = isResolvedErr;
@@ -0,0 +1 @@
1
+ export declare const sha256: (input: string) => string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sha256 = void 0;
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
8
+ const sha256 = (input) => node_crypto_1.default.createHash('sha256').update(input).digest('hex');
9
+ exports.sha256 = sha256;
@@ -0,0 +1,7 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ export declare const timeout: <SuccessType, FallbackType>(promise: Promise<SuccessType>, timeoutMs: number, fallbackValue: FallbackType) => Promise<SuccessType | FallbackType>;
3
+ export declare const timeoutMonadic: <Left, Right>(promise: Promise<Result<Left, Right>>, timeoutMs: number, timeoutRight: Right) => Promise<Result<Left, Right>>;
4
+ export declare const timeoutMonadicWithOriginal: <Ok, ErrType>(promise: Promise<Result<Ok, ErrType>>, timeoutMs: number, timeoutErr: ErrType) => {
5
+ timed: Promise<Result<Ok, ErrType>>;
6
+ original: Promise<Result<Ok, ErrType>>;
7
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.timeoutMonadicWithOriginal = exports.timeoutMonadic = exports.timeout = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const timeout = (promise, timeoutMs, fallbackValue) => {
6
+ return Promise.race([
7
+ promise,
8
+ new Promise(resolve => setTimeout(() => {
9
+ resolve(fallbackValue);
10
+ }, timeoutMs)),
11
+ ]);
12
+ };
13
+ exports.timeout = timeout;
14
+ const timeoutMonadic = (promise, timeoutMs, timeoutRight) => {
15
+ return Promise.race([
16
+ promise,
17
+ new Promise(resolve => setTimeout(() => {
18
+ resolve((0, monads_1.Err)(timeoutRight));
19
+ }, timeoutMs)),
20
+ ]);
21
+ };
22
+ exports.timeoutMonadic = timeoutMonadic;
23
+ const timeoutMonadicWithOriginal = (promise, timeoutMs, timeoutErr) => {
24
+ return {
25
+ timed: Promise.race([
26
+ promise,
27
+ new Promise(resolve => setTimeout(() => {
28
+ resolve((0, monads_1.Err)(timeoutErr));
29
+ }, timeoutMs)),
30
+ ]),
31
+ original: promise,
32
+ };
33
+ };
34
+ exports.timeoutMonadicWithOriginal = timeoutMonadicWithOriginal;
@@ -0,0 +1,16 @@
1
+ import type { ChainId } from '@shapeshiftoss/caip';
2
+ import { KnownChainIds } from '@shapeshiftoss/types';
3
+ export declare const treasuryChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.BitcoinMainnet];
4
+ export type TreasuryChainId = (typeof treasuryChainIds)[number];
5
+ export declare const isTreasuryChainId: (chainId: ChainId) => chainId is KnownChainIds.EthereumMainnet | KnownChainIds.AvalancheMainnet | KnownChainIds.OptimismMainnet | KnownChainIds.BnbSmartChainMainnet | KnownChainIds.PolygonMainnet | KnownChainIds.GnosisMainnet | KnownChainIds.ArbitrumMainnet | KnownChainIds.BaseMainnet | KnownChainIds.BitcoinMainnet | KnownChainIds.SolanaMainnet;
6
+ export declare const DAO_TREASURY_ETHEREUM_MAINNET = "0x90a48d5cf7343b08da12e067680b4c6dbfe551be";
7
+ export declare const DAO_TREASURY_OPTIMISM = "0x6268d07327f4fb7380732dc6d63d95F88c0E083b";
8
+ export declare const DAO_TREASURY_AVALANCHE = "0x74d63F31C2335b5b3BA7ad2812357672b2624cEd";
9
+ export declare const DAO_TREASURY_POLYGON = "0xB5F944600785724e31Edb90F9DFa16dBF01Af000";
10
+ export declare const DAO_TREASURY_GNOSIS = "0xb0E3175341794D1dc8E5F02a02F9D26989EbedB3";
11
+ export declare const DAO_TREASURY_BSC = "0x8b92b1698b57bEDF2142297e9397875ADBb2297E";
12
+ export declare const DAO_TREASURY_ARBITRUM = "0x38276553F8fbf2A027D901F8be45f00373d8Dd48";
13
+ export declare const DAO_TREASURY_BASE = "0x9c9aA90363630d4ab1D9dbF416cc3BBC8d3Ed502";
14
+ export declare const DAO_TREASURY_SOLANA = "Bh7R3MeJ98D7Ersxh7TgVQVQUSmDMqwrFVHH9DLfb4u3";
15
+ export declare const DAO_TREASURY_BITCOIN = "bc1qr2whxtd0gvqnctcxlynwejp6fvntv0mtxkv0dlv02vyale8h69ysm6l32n";
16
+ export declare const DAO_TREASURY_NEAR = "f471d0b0f90593d85125f38aaf5458748d6f23fd5b437b844d293d8e87557070";
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // Wallets relating to the ShapeShift DAO Treasury
3
+ // https://forum.shapeshift.com/thread/dao-treasuries-and-multisigs-43646
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.DAO_TREASURY_NEAR = exports.DAO_TREASURY_BITCOIN = exports.DAO_TREASURY_SOLANA = exports.DAO_TREASURY_BASE = exports.DAO_TREASURY_ARBITRUM = exports.DAO_TREASURY_BSC = exports.DAO_TREASURY_GNOSIS = exports.DAO_TREASURY_POLYGON = exports.DAO_TREASURY_AVALANCHE = exports.DAO_TREASURY_OPTIMISM = exports.DAO_TREASURY_ETHEREUM_MAINNET = exports.isTreasuryChainId = exports.treasuryChainIds = void 0;
6
+ const types_1 = require("@shapeshiftoss/types");
7
+ exports.treasuryChainIds = [
8
+ types_1.KnownChainIds.EthereumMainnet,
9
+ types_1.KnownChainIds.AvalancheMainnet,
10
+ types_1.KnownChainIds.OptimismMainnet,
11
+ types_1.KnownChainIds.BnbSmartChainMainnet,
12
+ types_1.KnownChainIds.PolygonMainnet,
13
+ types_1.KnownChainIds.GnosisMainnet,
14
+ types_1.KnownChainIds.ArbitrumMainnet,
15
+ types_1.KnownChainIds.BaseMainnet,
16
+ types_1.KnownChainIds.SolanaMainnet,
17
+ types_1.KnownChainIds.BitcoinMainnet,
18
+ ];
19
+ const isTreasuryChainId = (chainId) => {
20
+ return exports.treasuryChainIds.includes(chainId);
21
+ };
22
+ exports.isTreasuryChainId = isTreasuryChainId;
23
+ // Safes
24
+ exports.DAO_TREASURY_ETHEREUM_MAINNET = '0x90a48d5cf7343b08da12e067680b4c6dbfe551be';
25
+ exports.DAO_TREASURY_OPTIMISM = '0x6268d07327f4fb7380732dc6d63d95F88c0E083b';
26
+ exports.DAO_TREASURY_AVALANCHE = '0x74d63F31C2335b5b3BA7ad2812357672b2624cEd';
27
+ exports.DAO_TREASURY_POLYGON = '0xB5F944600785724e31Edb90F9DFa16dBF01Af000';
28
+ exports.DAO_TREASURY_GNOSIS = '0xb0E3175341794D1dc8E5F02a02F9D26989EbedB3';
29
+ exports.DAO_TREASURY_BSC = '0x8b92b1698b57bEDF2142297e9397875ADBb2297E';
30
+ exports.DAO_TREASURY_ARBITRUM = '0x38276553F8fbf2A027D901F8be45f00373d8Dd48';
31
+ exports.DAO_TREASURY_BASE = '0x9c9aA90363630d4ab1D9dbF416cc3BBC8d3Ed502';
32
+ exports.DAO_TREASURY_SOLANA = 'Bh7R3MeJ98D7Ersxh7TgVQVQUSmDMqwrFVHH9DLfb4u3';
33
+ exports.DAO_TREASURY_BITCOIN = 'bc1qr2whxtd0gvqnctcxlynwejp6fvntv0mtxkv0dlv02vyale8h69ysm6l32n';
34
+ exports.DAO_TREASURY_NEAR = 'f471d0b0f90593d85125f38aaf5458748d6f23fd5b437b844d293d8e87557070';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Creates a shallow clone to allow mutation of a readonly object
3
+ */
4
+ export declare const unfreeze: <T>(obj: Readonly<T>) => T;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unfreeze = void 0;
4
+ /**
5
+ * Creates a shallow clone to allow mutation of a readonly object
6
+ */
7
+ const unfreeze = (obj) => {
8
+ return { ...obj };
9
+ };
10
+ exports.unfreeze = unfreeze;
@@ -0,0 +1,2 @@
1
+ import type { ChainId } from '@shapeshiftoss/caip';
2
+ export declare const isUtxoChainId: (chainId: ChainId) => boolean;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUtxoChainId = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const isUtxoChainId = (chainId) => (0, caip_1.fromChainId)(chainId).chainNamespace === caip_1.CHAIN_NAMESPACE.Utxo;
6
+ exports.isUtxoChainId = isUtxoChainId;