@shapeshiftoss/caip 1.10.2 → 1.11.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.
@@ -1,13 +1,16 @@
1
1
  import { ChainTypes, ContractTypes, NetworkTypes } from '@shapeshiftoss/types';
2
2
  export declare type CAIP19 = string;
3
3
  export declare enum AssetNamespace {
4
+ CW20 = "cw20",
5
+ CW721 = "cw721",
4
6
  ERC20 = "erc20",
5
7
  ERC721 = "erc721",
6
8
  Slip44 = "slip44"
7
9
  }
8
10
  export declare enum AssetReference {
9
11
  Bitcoin = 0,
10
- Ethereum = 60
12
+ Ethereum = 60,
13
+ Cosmos = 118
11
14
  }
12
15
  declare type ToCAIP19Args = {
13
16
  chain: ChainTypes;
@@ -6,6 +6,8 @@ const types_1 = require("@shapeshiftoss/types");
6
6
  const caip2_1 = require("./../caip2/caip2");
7
7
  var AssetNamespace;
8
8
  (function (AssetNamespace) {
9
+ AssetNamespace["CW20"] = "cw20";
10
+ AssetNamespace["CW721"] = "cw721";
9
11
  AssetNamespace["ERC20"] = "erc20";
10
12
  AssetNamespace["ERC721"] = "erc721";
11
13
  AssetNamespace["Slip44"] = "slip44";
@@ -14,10 +16,16 @@ var AssetReference;
14
16
  (function (AssetReference) {
15
17
  AssetReference[AssetReference["Bitcoin"] = 0] = "Bitcoin";
16
18
  AssetReference[AssetReference["Ethereum"] = 60] = "Ethereum";
19
+ AssetReference[AssetReference["Cosmos"] = 118] = "Cosmos";
17
20
  })(AssetReference = exports.AssetReference || (exports.AssetReference = {}));
18
21
  const toCAIP19 = ({ chain, network, contractType, tokenId }) => {
19
22
  const caip2 = (0, caip2_1.toCAIP2)({ chain, network });
20
23
  switch (chain) {
24
+ // TODO: There is no chain-level fungible token standard in Cosmos SDK, but CosmWasm chains have CW20/CW721
25
+ // This should be implemented when we want to support tokens for Cosmos SDK chains
26
+ case types_1.ChainTypes.Cosmos: {
27
+ return `${caip2}/${AssetNamespace.Slip44}:${AssetReference.Cosmos}`;
28
+ }
21
29
  case types_1.ChainTypes.Ethereum: {
22
30
  tokenId = tokenId === null || tokenId === void 0 ? void 0 : tokenId.toLowerCase();
23
31
  if (contractType) {
@@ -87,6 +95,8 @@ const fromCAIP19 = (caip19) => {
87
95
  }
88
96
  case AssetNamespace.ERC20:
89
97
  case AssetNamespace.ERC721:
98
+ case AssetNamespace.CW20:
99
+ case AssetNamespace.CW721:
90
100
  default: {
91
101
  throw new Error(`fromCAIP19: invalid asset reference ${reference} on chain ${chain}`);
92
102
  }
@@ -115,6 +125,11 @@ const fromCAIP19 = (caip19) => {
115
125
  const tokenId = referenceString.toLowerCase();
116
126
  return { chain, network, contractType, tokenId };
117
127
  }
128
+ case AssetNamespace.CW20:
129
+ case AssetNamespace.CW721:
130
+ default: {
131
+ throw new Error(`fromCAIP19: invalid asset reference ${reference} on chain ${chain}`);
132
+ }
118
133
  }
119
134
  }
120
135
  }
@@ -2,14 +2,19 @@ import { ChainTypes, NetworkTypes } from '@shapeshiftoss/types';
2
2
  export declare type CAIP2 = string;
3
3
  export declare enum ChainNamespace {
4
4
  Ethereum = "eip155",
5
- Bitcoin = "bip122"
5
+ Bitcoin = "bip122",
6
+ Cosmos = "cosmos"
6
7
  }
7
8
  export declare enum ChainReference {
8
9
  EthereumMainnet = "1",
9
10
  EthereumRopsten = "3",
10
11
  EthereumRinkeby = "4",
11
12
  BitcoinMainnet = "000000000019d6689c085ae165831e93",
12
- BitcoinTestnet = "000000000933ea01ad0ee984209779ba"
13
+ BitcoinTestnet = "000000000933ea01ad0ee984209779ba",
14
+ CosmosHubMainnet = "cosmoshub-4",
15
+ CosmosHubVega = "vega-testnet",
16
+ OsmosisMainnet = "osmosis-1",
17
+ OsmosisTestnet = "osmo-testnet-1"
13
18
  }
14
19
  declare type ToCAIP2Args = {
15
20
  chain: ChainTypes;
@@ -7,6 +7,7 @@ var ChainNamespace;
7
7
  (function (ChainNamespace) {
8
8
  ChainNamespace["Ethereum"] = "eip155";
9
9
  ChainNamespace["Bitcoin"] = "bip122";
10
+ ChainNamespace["Cosmos"] = "cosmos";
10
11
  })(ChainNamespace = exports.ChainNamespace || (exports.ChainNamespace = {}));
11
12
  var ChainReference;
12
13
  (function (ChainReference) {
@@ -18,6 +19,10 @@ var ChainReference;
18
19
  // caip2 uses max length of 32 chars of the genesis block
19
20
  ChainReference["BitcoinMainnet"] = "000000000019d6689c085ae165831e93";
20
21
  ChainReference["BitcoinTestnet"] = "000000000933ea01ad0ee984209779ba";
22
+ ChainReference["CosmosHubMainnet"] = "cosmoshub-4";
23
+ ChainReference["CosmosHubVega"] = "vega-testnet";
24
+ ChainReference["OsmosisMainnet"] = "osmosis-1";
25
+ ChainReference["OsmosisTestnet"] = "osmo-testnet-1";
21
26
  })(ChainReference = exports.ChainReference || (exports.ChainReference = {}));
22
27
  const toCAIP2 = ({ chain, network }) => {
23
28
  const shapeShiftToCAIP2 = {
@@ -35,10 +40,33 @@ const toCAIP2 = ({ chain, network }) => {
35
40
  [types_1.NetworkTypes.MAINNET]: ChainReference.BitcoinMainnet,
36
41
  [types_1.NetworkTypes.TESTNET]: ChainReference.BitcoinTestnet
37
42
  }
43
+ },
44
+ [types_1.ChainTypes.Cosmos]: {
45
+ namespace: ChainNamespace.Cosmos,
46
+ reference: {
47
+ [types_1.NetworkTypes.COSMOSHUB_MAINNET]: ChainReference.CosmosHubMainnet,
48
+ [types_1.NetworkTypes.COSMOSHUB_VEGA]: ChainReference.CosmosHubVega,
49
+ [types_1.NetworkTypes.OSMOSIS_MAINNET]: ChainReference.OsmosisMainnet,
50
+ [types_1.NetworkTypes.OSMOSIS_TESTNET]: ChainReference.OsmosisTestnet
51
+ }
38
52
  }
39
53
  };
40
54
  const namespace = shapeShiftToCAIP2[chain].namespace;
41
55
  switch (chain) {
56
+ case types_1.ChainTypes.Cosmos: {
57
+ const referenceMap = shapeShiftToCAIP2[chain].reference;
58
+ switch (network) {
59
+ case types_1.NetworkTypes.COSMOSHUB_MAINNET:
60
+ case types_1.NetworkTypes.COSMOSHUB_VEGA:
61
+ case types_1.NetworkTypes.OSMOSIS_MAINNET:
62
+ case types_1.NetworkTypes.OSMOSIS_TESTNET: {
63
+ const reference = referenceMap[network];
64
+ const caip2 = `${namespace}:${reference}`;
65
+ return caip2;
66
+ }
67
+ }
68
+ break;
69
+ }
42
70
  case types_1.ChainTypes.Ethereum: {
43
71
  const referenceMap = shapeShiftToCAIP2[chain].reference;
44
72
  switch (network) {
@@ -73,6 +101,30 @@ const fromCAIP2 = (caip2) => {
73
101
  throw new Error(`fromCAIP19: error parsing caip19, chain: ${c}, network: ${n}`);
74
102
  }
75
103
  switch (c) {
104
+ case ChainNamespace.Cosmos: {
105
+ const chain = types_1.ChainTypes.Cosmos;
106
+ switch (n) {
107
+ case ChainReference.CosmosHubMainnet: {
108
+ const network = types_1.NetworkTypes.MAINNET;
109
+ return { chain, network };
110
+ }
111
+ case ChainReference.CosmosHubVega: {
112
+ const network = types_1.NetworkTypes.COSMOSHUB_VEGA;
113
+ return { chain, network };
114
+ }
115
+ case ChainReference.OsmosisMainnet: {
116
+ const network = types_1.NetworkTypes.OSMOSIS_MAINNET;
117
+ return { chain, network };
118
+ }
119
+ case ChainReference.OsmosisTestnet: {
120
+ const network = types_1.NetworkTypes.OSMOSIS_TESTNET;
121
+ return { chain, network };
122
+ }
123
+ default: {
124
+ throw new Error(`fromCAIP19: unsupported ${c} network: ${n}`);
125
+ }
126
+ }
127
+ }
76
128
  case ChainNamespace.Ethereum: {
77
129
  const chain = types_1.ChainTypes.Ethereum;
78
130
  switch (n) {
@@ -119,6 +171,14 @@ const isCAIP2 = (caip2) => {
119
171
  throw new Error(`isCAIP2: error parsing caip19, chain: ${c}, network: ${n}`);
120
172
  }
121
173
  switch (c) {
174
+ case ChainNamespace.Cosmos: {
175
+ switch (n) {
176
+ case ChainReference.CosmosHubMainnet:
177
+ case ChainReference.CosmosHubVega:
178
+ return true;
179
+ }
180
+ break;
181
+ }
122
182
  case ChainNamespace.Ethereum: {
123
183
  switch (n) {
124
184
  case ChainReference.EthereumMainnet:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshiftoss/caip",
3
- "version": "1.10.2",
3
+ "version": "1.11.0",
4
4
  "description": "CAIP Implementation",
5
5
  "homepage": "",
6
6
  "license": "MIT",