@shapeshiftoss/caip 8.16.4-alpha.0 → 8.16.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.
- package/CHANGELOG.md +726 -0
- package/package.json +2 -2
- package/dist/cjs/.tsbuildinfo +0 -1
- package/dist/cjs/accountId/accountId.d.ts +0 -29
- package/dist/cjs/accountId/accountId.js +0 -44
- package/dist/cjs/accountId/accountId.test.d.ts +0 -1
- package/dist/cjs/accountId/accountId.test.js +0 -109
- package/dist/cjs/adapters/banxa/index.d.ts +0 -15
- package/dist/cjs/adapters/banxa/index.js +0 -153
- package/dist/cjs/adapters/coinbase/generate.d.ts +0 -1
- package/dist/cjs/adapters/coinbase/generate.js +0 -9
- package/dist/cjs/adapters/coinbase/generated/adapter.json +0 -153
- package/dist/cjs/adapters/coinbase/generated/index.d.ts +0 -2
- package/dist/cjs/adapters/coinbase/generated/index.js +0 -8
- package/dist/cjs/adapters/coinbase/index.d.ts +0 -3
- package/dist/cjs/adapters/coinbase/index.js +0 -16
- package/dist/cjs/adapters/coinbase/utils.d.ts +0 -12
- package/dist/cjs/adapters/coinbase/utils.js +0 -55
- package/dist/cjs/adapters/coincap/generate.d.ts +0 -1
- package/dist/cjs/adapters/coincap/generate.js +0 -10
- package/dist/cjs/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/generated/index.d.ts +0 -15
- package/dist/cjs/adapters/coincap/generated/index.js +0 -34
- package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
- package/dist/cjs/adapters/coincap/index.d.ts +0 -4
- package/dist/cjs/adapters/coincap/index.js +0 -44
- package/dist/cjs/adapters/coincap/index.test.d.ts +0 -1
- package/dist/cjs/adapters/coincap/index.test.js +0 -90
- package/dist/cjs/adapters/coincap/utils.d.ts +0 -24
- package/dist/cjs/adapters/coincap/utils.js +0 -146
- package/dist/cjs/adapters/coincap/utils.test.d.ts +0 -4
- package/dist/cjs/adapters/coincap/utils.test.js +0 -173
- package/dist/cjs/adapters/coingecko/generate.d.ts +0 -1
- package/dist/cjs/adapters/coingecko/generate.js +0 -10
- package/dist/cjs/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_42170/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/generated/index.d.ts +0 -18
- package/dist/cjs/adapters/coingecko/generated/index.js +0 -40
- package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
- package/dist/cjs/adapters/coingecko/index.d.ts +0 -26
- package/dist/cjs/adapters/coingecko/index.js +0 -163
- package/dist/cjs/adapters/coingecko/index.test.d.ts +0 -1
- package/dist/cjs/adapters/coingecko/index.test.js +0 -276
- package/dist/cjs/adapters/coingecko/utils.d.ts +0 -11
- package/dist/cjs/adapters/coingecko/utils.js +0 -190
- package/dist/cjs/adapters/coingecko/utils.test.d.ts +0 -1
- package/dist/cjs/adapters/coingecko/utils.test.js +0 -193
- package/dist/cjs/adapters/index.d.ts +0 -6
- package/dist/cjs/adapters/index.js +0 -22
- package/dist/cjs/adapters/mtpelerin/index.d.ts +0 -10
- package/dist/cjs/adapters/mtpelerin/index.js +0 -127
- package/dist/cjs/adapters/onramper/index.d.ts +0 -6
- package/dist/cjs/adapters/onramper/index.js +0 -39
- package/dist/cjs/assetId/assetId.d.ts +0 -36
- package/dist/cjs/assetId/assetId.js +0 -120
- package/dist/cjs/assetId/assetId.test.d.ts +0 -1
- package/dist/cjs/assetId/assetId.test.js +0 -324
- package/dist/cjs/chainId/chainId.d.ts +0 -20
- package/dist/cjs/chainId/chainId.js +0 -25
- package/dist/cjs/chainId/chainId.test.d.ts +0 -1
- package/dist/cjs/chainId/chainId.test.js +0 -90
- package/dist/cjs/constants.d.ts +0 -118
- package/dist/cjs/constants.js +0 -167
- package/dist/cjs/index.d.ts +0 -7
- package/dist/cjs/index.js +0 -36
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/typeGuards.d.ts +0 -16
- package/dist/cjs/typeGuards.js +0 -56
- package/dist/cjs/utils.d.ts +0 -33
- package/dist/cjs/utils.js +0 -56
- package/dist/cjs/utils.test.d.ts +0 -1
- package/dist/cjs/utils.test.js +0 -160
- package/dist/esm/.tsbuildinfo +0 -1
- package/dist/esm/accountId/accountId.d.ts +0 -29
- package/dist/esm/accountId/accountId.js +0 -39
- package/dist/esm/accountId/accountId.test.d.ts +0 -1
- package/dist/esm/accountId/accountId.test.js +0 -107
- package/dist/esm/adapters/banxa/index.d.ts +0 -15
- package/dist/esm/adapters/banxa/index.js +0 -143
- package/dist/esm/adapters/coinbase/generate.d.ts +0 -1
- package/dist/esm/adapters/coinbase/generate.js +0 -7
- package/dist/esm/adapters/coinbase/generated/adapter.json +0 -153
- package/dist/esm/adapters/coinbase/generated/index.d.ts +0 -2
- package/dist/esm/adapters/coinbase/generated/index.js +0 -2
- package/dist/esm/adapters/coinbase/index.d.ts +0 -3
- package/dist/esm/adapters/coinbase/index.js +0 -8
- package/dist/esm/adapters/coinbase/utils.d.ts +0 -12
- package/dist/esm/adapters/coinbase/utils.js +0 -46
- package/dist/esm/adapters/coincap/generate.d.ts +0 -1
- package/dist/esm/adapters/coincap/generate.js +0 -8
- package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +0 -1
- package/dist/esm/adapters/coincap/generated/index.d.ts +0 -15
- package/dist/esm/adapters/coincap/generated/index.js +0 -15
- package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
- package/dist/esm/adapters/coincap/index.d.ts +0 -4
- package/dist/esm/adapters/coincap/index.js +0 -13
- package/dist/esm/adapters/coincap/index.test.d.ts +0 -1
- package/dist/esm/adapters/coincap/index.test.js +0 -88
- package/dist/esm/adapters/coincap/utils.d.ts +0 -24
- package/dist/esm/adapters/coincap/utils.js +0 -135
- package/dist/esm/adapters/coincap/utils.test.d.ts +0 -4
- package/dist/esm/adapters/coincap/utils.test.js +0 -168
- package/dist/esm/adapters/coingecko/generate.d.ts +0 -1
- package/dist/esm/adapters/coingecko/generate.js +0 -8
- package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/generated/index.d.ts +0 -18
- package/dist/esm/adapters/coingecko/generated/index.js +0 -18
- package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
- package/dist/esm/adapters/coingecko/index.d.ts +0 -26
- package/dist/esm/adapters/coingecko/index.js +0 -127
- package/dist/esm/adapters/coingecko/index.test.d.ts +0 -1
- package/dist/esm/adapters/coingecko/index.test.js +0 -274
- package/dist/esm/adapters/coingecko/utils.d.ts +0 -11
- package/dist/esm/adapters/coingecko/utils.js +0 -181
- package/dist/esm/adapters/coingecko/utils.test.d.ts +0 -1
- package/dist/esm/adapters/coingecko/utils.test.js +0 -188
- package/dist/esm/adapters/index.d.ts +0 -6
- package/dist/esm/adapters/index.js +0 -6
- package/dist/esm/adapters/mtpelerin/index.d.ts +0 -10
- package/dist/esm/adapters/mtpelerin/index.js +0 -121
- package/dist/esm/adapters/onramper/index.d.ts +0 -6
- package/dist/esm/adapters/onramper/index.js +0 -31
- package/dist/esm/assetId/assetId.d.ts +0 -36
- package/dist/esm/assetId/assetId.js +0 -114
- package/dist/esm/assetId/assetId.test.d.ts +0 -1
- package/dist/esm/assetId/assetId.test.js +0 -322
- package/dist/esm/chainId/chainId.d.ts +0 -20
- package/dist/esm/chainId/chainId.js +0 -20
- package/dist/esm/chainId/chainId.test.d.ts +0 -1
- package/dist/esm/chainId/chainId.test.js +0 -88
- package/dist/esm/constants.d.ts +0 -118
- package/dist/esm/constants.js +0 -163
- package/dist/esm/index.d.ts +0 -7
- package/dist/esm/index.js +0 -7
- package/dist/esm/typeGuards.d.ts +0 -16
- package/dist/esm/typeGuards.js +0 -44
- package/dist/esm/utils.d.ts +0 -33
- package/dist/esm/utils.js +0 -26
- package/dist/esm/utils.test.d.ts +0 -1
- package/dist/esm/utils.test.js +0 -158
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import realFs from 'fs';
|
|
2
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
-
import { bitcoinAssetMap, cosmosAssetMap } from '../../utils.js';
|
|
4
|
-
import { parseData, writeFiles } from './utils.js';
|
|
5
|
-
const makeEthMockCoingeckoResponse = () => ({
|
|
6
|
-
id: 'ethereum',
|
|
7
|
-
symbol: 'eth',
|
|
8
|
-
platforms: {},
|
|
9
|
-
});
|
|
10
|
-
const makeWethMockCoingeckoResponse = () => ({
|
|
11
|
-
id: 'weth',
|
|
12
|
-
symbol: 'weth',
|
|
13
|
-
name: 'WETH',
|
|
14
|
-
platforms: {
|
|
15
|
-
ethereum: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
|
16
|
-
'optimistic-ethereum': '0x4200000000000000000000000000000000000006',
|
|
17
|
-
avalanche: '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab',
|
|
18
|
-
'binance-smart-chain': '0x2170ed0880ac9a755fd29b2688956bd959f933f8',
|
|
19
|
-
'polygon-pos': '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
|
|
20
|
-
xdai: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1',
|
|
21
|
-
'arbitrum-one': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
|
|
22
|
-
'arbitrum-nova': '0x722e8bdd2ce80a4422e880164f2079488e115365',
|
|
23
|
-
base: '0x4200000000000000000000000000000000000006',
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
const makeAvalancheMockCoingeckoResponse = () => ({
|
|
27
|
-
id: 'avalanche-2',
|
|
28
|
-
symbol: 'avax',
|
|
29
|
-
platforms: {},
|
|
30
|
-
});
|
|
31
|
-
const makeFoxMockCoingeckoResponse = () => ({
|
|
32
|
-
id: 'shapeshift-fox-token',
|
|
33
|
-
symbol: 'fox',
|
|
34
|
-
platforms: {
|
|
35
|
-
ethereum: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
const makeBtcMockCoingeckoResponse = () => ({
|
|
39
|
-
id: 'bitcoin',
|
|
40
|
-
symbol: 'btc',
|
|
41
|
-
platforms: {},
|
|
42
|
-
});
|
|
43
|
-
const makeCosmosMockCoingeckoResponse = () => ({
|
|
44
|
-
id: 'cosmos',
|
|
45
|
-
symbol: 'atom',
|
|
46
|
-
platforms: {},
|
|
47
|
-
});
|
|
48
|
-
const makePolygonMockCoingeckoResponse = () => ({
|
|
49
|
-
id: 'polygon-pos',
|
|
50
|
-
symbol: 'matic',
|
|
51
|
-
platforms: {},
|
|
52
|
-
});
|
|
53
|
-
const makeGnosisMockCoingeckoResponse = () => ({
|
|
54
|
-
id: 'gnosis',
|
|
55
|
-
symbol: 'xDai',
|
|
56
|
-
platforms: {},
|
|
57
|
-
});
|
|
58
|
-
const makeThorchainMockCoingeckoResponse = () => ({
|
|
59
|
-
id: 'thorchain',
|
|
60
|
-
symbol: 'rune',
|
|
61
|
-
platforms: {
|
|
62
|
-
thorchain: '',
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
vi.mock('fs', () => ({
|
|
66
|
-
default: {
|
|
67
|
-
promises: {
|
|
68
|
-
writeFile: vi.fn(() => undefined),
|
|
69
|
-
mkdir: vi.fn(() => undefined),
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
}));
|
|
73
|
-
describe('adapters:coingecko:utils', () => {
|
|
74
|
-
describe('makeData', () => {
|
|
75
|
-
it('can make btc data', () => {
|
|
76
|
-
const result = bitcoinAssetMap;
|
|
77
|
-
const expected = { 'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin' };
|
|
78
|
-
expect(result).toEqual(expected);
|
|
79
|
-
});
|
|
80
|
-
it('can make cosmos data', () => {
|
|
81
|
-
const result = cosmosAssetMap;
|
|
82
|
-
const expected = { 'cosmos:cosmoshub-4/slip44:118': 'cosmos' };
|
|
83
|
-
expect(result).toEqual(expected);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
describe('parseData', () => {
|
|
87
|
-
it('can parse all data', () => {
|
|
88
|
-
const result = parseData([
|
|
89
|
-
makeEthMockCoingeckoResponse(),
|
|
90
|
-
makeWethMockCoingeckoResponse(),
|
|
91
|
-
makeFoxMockCoingeckoResponse(),
|
|
92
|
-
makeBtcMockCoingeckoResponse(),
|
|
93
|
-
makeCosmosMockCoingeckoResponse(),
|
|
94
|
-
makeThorchainMockCoingeckoResponse(),
|
|
95
|
-
makeAvalancheMockCoingeckoResponse(),
|
|
96
|
-
makePolygonMockCoingeckoResponse(),
|
|
97
|
-
makeGnosisMockCoingeckoResponse(),
|
|
98
|
-
]);
|
|
99
|
-
const expected = {
|
|
100
|
-
'bip122:000000000019d6689c085ae165831e93': {
|
|
101
|
-
'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin',
|
|
102
|
-
},
|
|
103
|
-
'bip122:000000000000000000651ef99cb9fcbe': {
|
|
104
|
-
'bip122:000000000000000000651ef99cb9fcbe/slip44:145': 'bitcoin-cash',
|
|
105
|
-
},
|
|
106
|
-
'bip122:00000000001a91e3dace36e2be3bf030': {
|
|
107
|
-
'bip122:00000000001a91e3dace36e2be3bf030/slip44:3': 'dogecoin',
|
|
108
|
-
},
|
|
109
|
-
'bip122:12a765e31ffd4059bada1e25190f6e98': {
|
|
110
|
-
'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2': 'litecoin',
|
|
111
|
-
},
|
|
112
|
-
'cosmos:cosmoshub-4': {
|
|
113
|
-
'cosmos:cosmoshub-4/slip44:118': 'cosmos',
|
|
114
|
-
},
|
|
115
|
-
'cosmos:thorchain-1': {
|
|
116
|
-
'cosmos:thorchain-1/slip44:931': 'thorchain',
|
|
117
|
-
},
|
|
118
|
-
'cosmos:mayachain-mainnet-v1': {
|
|
119
|
-
'cosmos:mayachain-mainnet-v1/slip44:931': 'cacao',
|
|
120
|
-
},
|
|
121
|
-
'eip155:1': {
|
|
122
|
-
'eip155:1/slip44:60': 'ethereum',
|
|
123
|
-
'eip155:1/erc20:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': 'weth',
|
|
124
|
-
'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d': 'shapeshift-fox-token',
|
|
125
|
-
},
|
|
126
|
-
'eip155:43114': {
|
|
127
|
-
'eip155:43114/slip44:60': 'avalanche-2',
|
|
128
|
-
'eip155:43114/erc20:0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab': 'weth',
|
|
129
|
-
},
|
|
130
|
-
'eip155:56': {
|
|
131
|
-
'eip155:56/slip44:60': 'binancecoin',
|
|
132
|
-
'eip155:56/erc20:0x2170ed0880ac9a755fd29b2688956bd959f933f8': 'weth',
|
|
133
|
-
},
|
|
134
|
-
'eip155:10': {
|
|
135
|
-
'eip155:10/slip44:60': 'ethereum',
|
|
136
|
-
'eip155:10/erc20:0x4200000000000000000000000000000000000006': 'weth',
|
|
137
|
-
},
|
|
138
|
-
'eip155:137': {
|
|
139
|
-
'eip155:137/slip44:60': 'matic-network',
|
|
140
|
-
'eip155:137/erc20:0x7ceb23fd6bc0add59e62ac25578270cff1b9f619': 'weth',
|
|
141
|
-
},
|
|
142
|
-
'eip155:100': {
|
|
143
|
-
'eip155:100/slip44:60': 'xdai',
|
|
144
|
-
'eip155:100/erc20:0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1': 'weth',
|
|
145
|
-
},
|
|
146
|
-
'eip155:42161': {
|
|
147
|
-
'eip155:42161/slip44:60': 'ethereum',
|
|
148
|
-
'eip155:42161/erc20:0x82af49447d8a07e3bd95bd0d56f35241523fbab1': 'weth',
|
|
149
|
-
},
|
|
150
|
-
'eip155:42170': {
|
|
151
|
-
'eip155:42170/slip44:60': 'ethereum',
|
|
152
|
-
'eip155:42170/erc20:0x722e8bdd2ce80a4422e880164f2079488e115365': 'weth',
|
|
153
|
-
},
|
|
154
|
-
'eip155:8453': {
|
|
155
|
-
'eip155:8453/slip44:60': 'ethereum',
|
|
156
|
-
'eip155:8453/erc20:0x4200000000000000000000000000000000000006': 'weth',
|
|
157
|
-
},
|
|
158
|
-
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': {
|
|
159
|
-
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': 'solana',
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
expect(result).toEqual(expected);
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
describe('writeFiles', () => {
|
|
166
|
-
it('can writeFiles', async () => {
|
|
167
|
-
const data = {
|
|
168
|
-
foo: {
|
|
169
|
-
assetIdAbc: 'bitcorn',
|
|
170
|
-
assetIdDef: 'efferium',
|
|
171
|
-
},
|
|
172
|
-
bar: {
|
|
173
|
-
assetIdGhi: 'fox',
|
|
174
|
-
assetIdJkl: 'shib',
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
const fooAssetIds = JSON.stringify(data.foo);
|
|
178
|
-
const barAssetIds = JSON.stringify(data.bar);
|
|
179
|
-
console.info = vi.fn();
|
|
180
|
-
await writeFiles(data);
|
|
181
|
-
expect(realFs.promises.mkdir).toHaveBeenNthCalledWith(1, './src/adapters/coingecko/generated/foo', { recursive: true });
|
|
182
|
-
expect(realFs.promises.writeFile).toHaveBeenNthCalledWith(1, './src/adapters/coingecko/generated/foo/adapter.json', fooAssetIds);
|
|
183
|
-
expect(realFs.promises.mkdir).toHaveBeenNthCalledWith(2, './src/adapters/coingecko/generated/bar', { recursive: true });
|
|
184
|
-
expect(realFs.promises.writeFile).toHaveBeenNthCalledWith(2, './src/adapters/coingecko/generated/bar/adapter.json', barAssetIds);
|
|
185
|
-
expect(console.info).toBeCalledWith('Generated CoinGecko AssetId adapter data.');
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AssetId } from '../../assetId/assetId.js';
|
|
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;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { fromAssetId } from '../../assetId/assetId.js';
|
|
2
|
-
import { arbitrumAssetId, arbitrumChainId, avalancheAssetId, avalancheChainId, baseAssetId, baseChainId, bscAssetId, bscChainId, btcAssetId, btcChainId, ethAssetId, ethChainId, gnosisAssetId, gnosisChainId, optimismAssetId, optimismChainId, polygonAssetId, polygonChainId, } from '../../constants.js';
|
|
3
|
-
/**
|
|
4
|
-
* provided from https://api.mtPelerin.com/currencies/tokens
|
|
5
|
-
*/
|
|
6
|
-
const MtPelerinSymbolToAssetIds = {
|
|
7
|
-
ETH: [ethAssetId, optimismAssetId, arbitrumAssetId, baseAssetId],
|
|
8
|
-
POL: [polygonAssetId],
|
|
9
|
-
XDAI: [gnosisAssetId],
|
|
10
|
-
BTC: [btcAssetId],
|
|
11
|
-
BNB: [bscAssetId],
|
|
12
|
-
DAI: ['eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f'],
|
|
13
|
-
USDT: [
|
|
14
|
-
'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7',
|
|
15
|
-
'eip155:10/erc20:0x94b008aa00579c1307b0ef2c499ad98a8ce58e58',
|
|
16
|
-
'eip155:56/erc20:0x55d398326f99059ff775485246999027b3197955',
|
|
17
|
-
'eip155:100/erc20:0x4ecaba5870353805a9f068101a40e0f32ed605c6',
|
|
18
|
-
'eip155:137/erc20:0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
|
|
19
|
-
'eip155:42161/erc20:0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
|
|
20
|
-
],
|
|
21
|
-
USDC: [
|
|
22
|
-
'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
23
|
-
'eip155:10/erc20:0x0b2c639c533813f4aa9d7837caf62653d097ff85',
|
|
24
|
-
'eip155:56/erc20:0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',
|
|
25
|
-
'eip155:137/erc20:0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
|
|
26
|
-
'eip155:100/erc20:0xddafbb505ad214d7b80b1f830fccc89b60fb7a83',
|
|
27
|
-
'eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831',
|
|
28
|
-
'eip155:43114/erc20:0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',
|
|
29
|
-
'eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
|
|
30
|
-
],
|
|
31
|
-
'USDC.e': [
|
|
32
|
-
'eip155:10/erc20:0x7f5c764cbc14f9669b88837ca1490cca17c31607',
|
|
33
|
-
'eip155:137/erc20:0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
|
|
34
|
-
'eip155:42161/erc20:0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
|
|
35
|
-
'eip155:43114/erc20:0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664',
|
|
36
|
-
],
|
|
37
|
-
WBTC: [
|
|
38
|
-
'eip155:1/erc20:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
|
|
39
|
-
'eip155:10/erc20:0x68f180fcce6836688e9084f035309e29bf0a2095',
|
|
40
|
-
'eip155:100/erc20:0x8e5bbbb09ed1ebde8674cda39a0c169401db4252',
|
|
41
|
-
'eip155:137/erc20:0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6',
|
|
42
|
-
'eip155:42161/erc20:0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f',
|
|
43
|
-
],
|
|
44
|
-
AVAX: [avalancheAssetId],
|
|
45
|
-
'BTC.b': ['eip155:43114/erc20:0x152b9d0fdc40c096757f570a51e494bd4b943e50'],
|
|
46
|
-
cbBTC: [
|
|
47
|
-
'eip155:1/erc20:0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf',
|
|
48
|
-
'eip155:8453/erc20:0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf',
|
|
49
|
-
],
|
|
50
|
-
EURA: [
|
|
51
|
-
'eip155:42161/erc20:0xfa5ed56a203466cbbc2430a43c66b9d8723528e7',
|
|
52
|
-
'eip155:137/erc20:0xe0b52e49357fd4daf2c15e02058dce6bc0057db4',
|
|
53
|
-
],
|
|
54
|
-
EURC: [
|
|
55
|
-
'eip155:1/erc20:0x1abaea1f7c830bd89acc67ec4af516284b1bc33c',
|
|
56
|
-
'eip155:8453/erc20:0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42',
|
|
57
|
-
'eip155:43114/erc20:0xc891eb4cbdeff6e073e859e987815ed1505c2acd',
|
|
58
|
-
],
|
|
59
|
-
EURS: [
|
|
60
|
-
'eip155:1/erc20:0xdb25f211ab05b1c97d595516f45794528a807ad8',
|
|
61
|
-
'eip155:137/erc20:0xe111178a87a3bff0c8d18decba5798827539ae99',
|
|
62
|
-
],
|
|
63
|
-
FRAX: [
|
|
64
|
-
'eip155:1/erc20:0x853d955acef822db058eb8505911ed77f175b99e',
|
|
65
|
-
'eip155:137/erc20:0x45c32fa6df82ead1e2ef74d17b76547eddfaff89',
|
|
66
|
-
'eip155:43114/erc20:0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64',
|
|
67
|
-
],
|
|
68
|
-
GHO: ['eip155:1/erc20:0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f'],
|
|
69
|
-
LUSD: [
|
|
70
|
-
'eip155:1/erc20:0x5f98805a4e8be255a32880fdec7f6728c6568ba0',
|
|
71
|
-
'eip155:10/erc20:0xc40f949f8a4e094d1b49a23ea9241d289b7b2819',
|
|
72
|
-
],
|
|
73
|
-
PAXG: ['eip155:1/erc20:0x45804880de22913dafe09f4980848ece6ecbaf78'],
|
|
74
|
-
WETH: [
|
|
75
|
-
'eip155:56/erc20:0x2170ed0880ac9a755fd29b2688956bd959f933f8',
|
|
76
|
-
'eip155:100/erc20:0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1',
|
|
77
|
-
'eip155:137/erc20:0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
|
|
78
|
-
],
|
|
79
|
-
BTCB: ['eip155:56/erc20:0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c'],
|
|
80
|
-
crvUSD: ['eip155:1/erc20:0xf939e0a03fb07f59a73314e73794be0e57ac1b4e'],
|
|
81
|
-
XAUt: ['eip155:1/erc20:0x68749665ff8d2d112fa859aa293f07a622782f38'],
|
|
82
|
-
ZCHF: [
|
|
83
|
-
'eip155:1/erc20:0xb58e61c3098d85632df34eecfb899a1ed80921cb',
|
|
84
|
-
'eip155:100/erc20:0xd4dd9e2f021bb459d5a5f6c24c12fe09c5d45553',
|
|
85
|
-
],
|
|
86
|
-
};
|
|
87
|
-
export const mtPelerinSymbolToAssetIds = (id) => MtPelerinSymbolToAssetIds[id];
|
|
88
|
-
export const assetIdToMtPelerinSymbol = (assetId) => {
|
|
89
|
-
return Object.entries(MtPelerinSymbolToAssetIds)
|
|
90
|
-
.filter(([, assetIds]) => assetIds.includes(assetId))
|
|
91
|
-
.map(([key]) => key)[0];
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* map ChainIds to MtPelerin network,
|
|
95
|
-
* since some MtPelerin assets could be on multiple chains and their default
|
|
96
|
-
* chain won't be exactly the same as ours.
|
|
97
|
-
*
|
|
98
|
-
* https://developers.mtPelerin.com/integration-guides/options -> "net"
|
|
99
|
-
* source of truth per MtPelerin
|
|
100
|
-
*/
|
|
101
|
-
const chainIdToMtPelerinNetworkCodeMap = {
|
|
102
|
-
[ethChainId]: 'mainnet',
|
|
103
|
-
[btcChainId]: 'bitcoin_mainnet',
|
|
104
|
-
[avalancheChainId]: 'avalanche_mainnet',
|
|
105
|
-
[optimismChainId]: 'optimism_mainnet',
|
|
106
|
-
[polygonChainId]: 'matic_mainnet',
|
|
107
|
-
[gnosisChainId]: 'xdai_mainnet',
|
|
108
|
-
[bscChainId]: 'bsc_mainnet',
|
|
109
|
-
[arbitrumChainId]: 'arbitrum_mainnet',
|
|
110
|
-
[baseChainId]: 'base_mainnet',
|
|
111
|
-
};
|
|
112
|
-
/**
|
|
113
|
-
* Convert a mtPelerin asset identifier to a MtPelerin chain identifier for use in MtPelerin HTTP URLs
|
|
114
|
-
*
|
|
115
|
-
* @param {string} assetId - an assetId string referencing a specific asset; e.g., ethAssetId
|
|
116
|
-
* @returns {string} - a MtPelerin network identifier; e.g., 'mainnet'
|
|
117
|
-
*/
|
|
118
|
-
export const getMtPelerinNetFromAssetId = (assetId) => {
|
|
119
|
-
const { chainId } = fromAssetId(assetId);
|
|
120
|
-
return chainIdToMtPelerinNetworkCodeMap[chainId];
|
|
121
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AssetId } from '../../assetId/assetId.js';
|
|
2
|
-
type OnRamperTokenId = string;
|
|
3
|
-
export declare const NativeAssetIdToOnRamperIdMap: Record<AssetId, OnRamperTokenId[]>;
|
|
4
|
-
export declare const onRamperTokenIdToAssetId: (tokenId: OnRamperTokenId) => AssetId | undefined;
|
|
5
|
-
export declare const assetIdToOnRamperTokenList: (assetId: AssetId) => OnRamperTokenId[] | undefined;
|
|
6
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import entries from 'lodash/entries';
|
|
2
|
-
import { arbitrumAssetId, avalancheAssetId, baseAssetId, bchAssetId, bscAssetId, btcAssetId, cosmosAssetId, dogeAssetId, ethAssetId, gnosisAssetId, ltcAssetId, optimismAssetId, polygonAssetId, solAssetId, thorchainAssetId, } from '../../constants.js';
|
|
3
|
-
// Native assets only - tokens are fetched dynamically
|
|
4
|
-
export const NativeAssetIdToOnRamperIdMap = {
|
|
5
|
-
[bscAssetId]: ['bnb_bsc'],
|
|
6
|
-
[dogeAssetId]: ['doge_dogecoin'],
|
|
7
|
-
[ethAssetId]: ['eth'],
|
|
8
|
-
[arbitrumAssetId]: ['eth_arbitrum'],
|
|
9
|
-
[optimismAssetId]: ['eth_optimism'],
|
|
10
|
-
[baseAssetId]: ['eth_base'],
|
|
11
|
-
[ltcAssetId]: ['ltc_litecoin'],
|
|
12
|
-
[polygonAssetId]: ['matic_polygon'],
|
|
13
|
-
[thorchainAssetId]: ['rune_thorchain'],
|
|
14
|
-
[avalancheAssetId]: ['avax_avaxc'],
|
|
15
|
-
[btcAssetId]: ['btc'],
|
|
16
|
-
[bchAssetId]: ['bch_bitcoincash'],
|
|
17
|
-
[cosmosAssetId]: ['atom_cosmos'],
|
|
18
|
-
[gnosisAssetId]: ['xdai_gnosis'],
|
|
19
|
-
[solAssetId]: ['sol'],
|
|
20
|
-
};
|
|
21
|
-
// explodes and inverts the assetId => tokenId[] map by creating a 1to1 token => assetId mapping
|
|
22
|
-
const invertMap = () => {
|
|
23
|
-
const invertedMap = {};
|
|
24
|
-
entries(NativeAssetIdToOnRamperIdMap).flatMap(([assetId, idList]) => idList.forEach(id => {
|
|
25
|
-
invertedMap[id] = assetId;
|
|
26
|
-
}));
|
|
27
|
-
return invertedMap;
|
|
28
|
-
};
|
|
29
|
-
const OnRamperIdToAssetIdMap = invertMap();
|
|
30
|
-
export const onRamperTokenIdToAssetId = (tokenId) => OnRamperIdToAssetIdMap[tokenId];
|
|
31
|
-
export const assetIdToOnRamperTokenList = (assetId) => NativeAssetIdToOnRamperIdMap[assetId];
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { ChainId, ChainNamespace, ChainReference } from '../chainId/chainId.js';
|
|
2
|
-
import type { ASSET_NAMESPACE, ASSET_REFERENCE } from '../constants.js';
|
|
3
|
-
import type { Nominal } from '../utils.js';
|
|
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 {};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-19.md
|
|
2
|
-
import { fromChainId, toChainId } from '../chainId/chainId.js';
|
|
3
|
-
import { VALID_ASSET_NAMESPACE } from '../constants.js';
|
|
4
|
-
import { assertIsAssetNamespace, assertIsChainNamespace, assertIsChainReference, assertValidChainPartsPair, isAssetIdParts, isAssetNamespace, } from '../typeGuards.js';
|
|
5
|
-
/**
|
|
6
|
-
* validate that a value is a string slip44 value
|
|
7
|
-
* @see https://github.com/satoshilabs/slips/blob/master/slip-0044.md
|
|
8
|
-
* @param {string} value - possible slip44 value
|
|
9
|
-
*/
|
|
10
|
-
const isValidSlip44 = (value) => {
|
|
11
|
-
// TCY is a weird AssetId, its asset ref part is not a number
|
|
12
|
-
if (value === 'tcy')
|
|
13
|
-
return true;
|
|
14
|
-
const n = Number(value);
|
|
15
|
-
// slip44 has a max value of an unsigned 32-bit integer
|
|
16
|
-
return !isNaN(n) && n >= 0 && n < 4294967296;
|
|
17
|
-
};
|
|
18
|
-
const isToAssetIdWithChainIdArgs = (args) => !!args.chainId;
|
|
19
|
-
export const toAssetId = (args) => {
|
|
20
|
-
const { assetNamespace, assetReference } = args;
|
|
21
|
-
assertIsAssetNamespace(assetNamespace);
|
|
22
|
-
if (!assetReference)
|
|
23
|
-
throw new Error('toAssetId: No assetReference provided');
|
|
24
|
-
const { chainId, chainNamespace, chainReference } = (() => {
|
|
25
|
-
if (isToAssetIdWithChainIdArgs(args)) {
|
|
26
|
-
const fromChainIdResult = fromChainId(args.chainId);
|
|
27
|
-
return {
|
|
28
|
-
chainId: args.chainId,
|
|
29
|
-
chainNamespace: fromChainIdResult.chainNamespace,
|
|
30
|
-
chainReference: fromChainIdResult.chainReference,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
else
|
|
34
|
-
return {
|
|
35
|
-
chainId: toChainId({
|
|
36
|
-
chainNamespace: args.chainNamespace,
|
|
37
|
-
chainReference: args.chainReference,
|
|
38
|
-
}),
|
|
39
|
-
chainNamespace: args.chainNamespace,
|
|
40
|
-
chainReference: args.chainReference,
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
assertIsChainNamespace(chainNamespace);
|
|
44
|
-
assertIsChainReference(chainReference);
|
|
45
|
-
assertValidChainPartsPair(chainNamespace, chainReference);
|
|
46
|
-
if (!VALID_ASSET_NAMESPACE[chainNamespace].includes(assetNamespace) ||
|
|
47
|
-
!isAssetNamespace(assetNamespace))
|
|
48
|
-
throw new Error(`toAssetId: AssetNamespace ${assetNamespace} not supported for Chain Namespace ${chainNamespace}`);
|
|
49
|
-
if (assetNamespace === 'slip44' && !isValidSlip44(String(assetReference))) {
|
|
50
|
-
throw new Error(`Invalid reference for namespace slip44`);
|
|
51
|
-
}
|
|
52
|
-
const assetReferenceNormalized = (() => {
|
|
53
|
-
const assertContractAddress = (address) => {
|
|
54
|
-
if (!address.startsWith('0x'))
|
|
55
|
-
throw new Error(`toAssetId: assetReference must start with 0x: ${assetReference}`);
|
|
56
|
-
if (address.length !== 42)
|
|
57
|
-
throw new Error(`toAssetId: assetReference length must be 42, length: ${assetReference.length}, ${assetReference}`);
|
|
58
|
-
};
|
|
59
|
-
switch (assetNamespace) {
|
|
60
|
-
case 'erc20':
|
|
61
|
-
assertContractAddress(assetReference);
|
|
62
|
-
return assetReference.toLowerCase();
|
|
63
|
-
case 'erc721':
|
|
64
|
-
case 'erc1155':
|
|
65
|
-
// caip-22 (https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-22.md)
|
|
66
|
-
// caip-29 (https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-29.md)
|
|
67
|
-
const [address] = assetReference.split('/');
|
|
68
|
-
assertContractAddress(address);
|
|
69
|
-
return assetReference.toLowerCase();
|
|
70
|
-
default:
|
|
71
|
-
return assetReference;
|
|
72
|
-
}
|
|
73
|
-
})();
|
|
74
|
-
return `${chainId}/${assetNamespace}:${assetReferenceNormalized}`;
|
|
75
|
-
};
|
|
76
|
-
// NOTE: perf critical - benchmark any changes
|
|
77
|
-
export const fromAssetId = (assetId) => {
|
|
78
|
-
const slashIdx = assetId.indexOf('/');
|
|
79
|
-
const chainId = assetId.substring(0, slashIdx);
|
|
80
|
-
const assetParts = assetId.substring(slashIdx + 1);
|
|
81
|
-
const { chainNamespace, chainReference } = fromChainId(chainId);
|
|
82
|
-
const idx = assetParts.indexOf(':');
|
|
83
|
-
const assetNamespace = assetParts.substring(0, idx);
|
|
84
|
-
const assetReference = assetParts.substring(idx + 1);
|
|
85
|
-
if (!isAssetIdParts(chainNamespace, chainReference, assetNamespace))
|
|
86
|
-
throw new Error(`fromAssetId: invalid AssetId: ${assetId}`);
|
|
87
|
-
const assetReferenceNormalized = (() => {
|
|
88
|
-
switch (assetNamespace) {
|
|
89
|
-
case 'erc20':
|
|
90
|
-
case 'erc721':
|
|
91
|
-
case 'erc1155':
|
|
92
|
-
return assetReference.toLowerCase();
|
|
93
|
-
default:
|
|
94
|
-
return assetReference;
|
|
95
|
-
}
|
|
96
|
-
})();
|
|
97
|
-
return {
|
|
98
|
-
chainId,
|
|
99
|
-
chainNamespace: chainNamespace,
|
|
100
|
-
chainReference: chainReference,
|
|
101
|
-
assetNamespace: assetNamespace,
|
|
102
|
-
assetReference: assetReferenceNormalized,
|
|
103
|
-
};
|
|
104
|
-
};
|
|
105
|
-
// NOTE: perf critical - benchmark any changes
|
|
106
|
-
export const isNft = (assetId) => {
|
|
107
|
-
const slashIdx = assetId.indexOf('/');
|
|
108
|
-
const assetParts = assetId.substring(slashIdx + 1);
|
|
109
|
-
const idx = assetParts.indexOf(':');
|
|
110
|
-
const assetNamespace = assetParts.substring(0, idx);
|
|
111
|
-
return ['erc721', 'erc1155'].includes(assetNamespace);
|
|
112
|
-
};
|
|
113
|
-
export const toCAIP19 = toAssetId;
|
|
114
|
-
export const fromCAIP19 = fromAssetId;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|