@shapeshiftoss/unchained-client 5.2.0 → 6.0.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 (137) hide show
  1. package/README.md +32 -4
  2. package/dist/bitcoin/index.d.ts +3 -2
  3. package/dist/bitcoin/index.d.ts.map +1 -1
  4. package/dist/bitcoin/index.js +5 -14
  5. package/dist/bitcoin/index.js.map +1 -1
  6. package/dist/bitcoin/parser/index.d.ts +13 -0
  7. package/dist/bitcoin/parser/index.d.ts.map +1 -0
  8. package/dist/bitcoin/parser/index.js +74 -0
  9. package/dist/bitcoin/parser/index.js.map +1 -0
  10. package/dist/bitcoin/parser/utils.d.ts +4 -0
  11. package/dist/bitcoin/parser/utils.d.ts.map +1 -0
  12. package/dist/bitcoin/parser/utils.js +16 -0
  13. package/dist/bitcoin/parser/utils.js.map +1 -0
  14. package/dist/bitcoin/types.d.ts +2 -0
  15. package/dist/bitcoin/types.d.ts.map +1 -0
  16. package/dist/bitcoin/types.js +3 -0
  17. package/dist/bitcoin/types.js.map +1 -0
  18. package/dist/cosmos/index.d.ts +2 -1
  19. package/dist/cosmos/index.d.ts.map +1 -1
  20. package/dist/cosmos/index.js +4 -13
  21. package/dist/cosmos/index.js.map +1 -1
  22. package/dist/cosmos/parser/index.d.ts +13 -0
  23. package/dist/cosmos/parser/index.d.ts.map +1 -0
  24. package/dist/cosmos/parser/index.js +67 -0
  25. package/dist/cosmos/parser/index.js.map +1 -0
  26. package/dist/ethereum/index.d.ts +3 -2
  27. package/dist/ethereum/index.d.ts.map +1 -1
  28. package/dist/ethereum/index.js +5 -14
  29. package/dist/ethereum/index.js.map +1 -1
  30. package/dist/ethereum/parser/abi/erc20.d.ts +4 -0
  31. package/dist/ethereum/parser/abi/erc20.d.ts.map +1 -0
  32. package/dist/ethereum/parser/abi/erc20.js +292 -0
  33. package/dist/ethereum/parser/abi/erc20.js.map +1 -0
  34. package/dist/ethereum/parser/abi/multiSig.d.ts +4 -0
  35. package/dist/ethereum/parser/abi/multiSig.d.ts.map +1 -0
  36. package/dist/ethereum/parser/abi/multiSig.js +369 -0
  37. package/dist/ethereum/parser/abi/multiSig.js.map +1 -0
  38. package/dist/ethereum/parser/abi/shapeShiftRouter.d.ts +4 -0
  39. package/dist/ethereum/parser/abi/shapeShiftRouter.d.ts.map +1 -0
  40. package/dist/ethereum/parser/abi/shapeShiftRouter.js +495 -0
  41. package/dist/ethereum/parser/abi/shapeShiftRouter.js.map +1 -0
  42. package/dist/ethereum/parser/abi/thor.d.ts +4 -0
  43. package/dist/ethereum/parser/abi/thor.d.ts.map +1 -0
  44. package/dist/ethereum/parser/abi/thor.js +155 -0
  45. package/dist/ethereum/parser/abi/thor.js.map +1 -0
  46. package/dist/ethereum/parser/abi/uniV2.d.ts +4 -0
  47. package/dist/ethereum/parser/abi/uniV2.d.ts.map +1 -0
  48. package/dist/ethereum/parser/abi/uniV2.js +344 -0
  49. package/dist/ethereum/parser/abi/uniV2.js.map +1 -0
  50. package/dist/ethereum/parser/abi/yearnVault.d.ts +4 -0
  51. package/dist/ethereum/parser/abi/yearnVault.d.ts.map +1 -0
  52. package/dist/ethereum/parser/abi/yearnVault.js +648 -0
  53. package/dist/ethereum/parser/abi/yearnVault.js.map +1 -0
  54. package/dist/ethereum/parser/constants.d.ts +6 -0
  55. package/dist/ethereum/parser/constants.d.ts.map +1 -0
  56. package/dist/ethereum/parser/constants.js +9 -0
  57. package/dist/ethereum/parser/constants.js.map +1 -0
  58. package/dist/ethereum/parser/index.d.ts +21 -0
  59. package/dist/ethereum/parser/index.d.ts.map +1 -0
  60. package/dist/ethereum/parser/index.js +185 -0
  61. package/dist/ethereum/parser/index.js.map +1 -0
  62. package/dist/ethereum/parser/thor.d.ts +18 -0
  63. package/dist/ethereum/parser/thor.d.ts.map +1 -0
  64. package/dist/ethereum/parser/thor.js +81 -0
  65. package/dist/ethereum/parser/thor.js.map +1 -0
  66. package/dist/ethereum/parser/uniV2.d.ts +21 -0
  67. package/dist/ethereum/parser/uniV2.d.ts.map +1 -0
  68. package/dist/ethereum/parser/uniV2.js +130 -0
  69. package/dist/ethereum/parser/uniV2.js.map +1 -0
  70. package/dist/ethereum/parser/utils.d.ts +9 -0
  71. package/dist/ethereum/parser/utils.d.ts.map +1 -0
  72. package/dist/ethereum/parser/utils.js +47 -0
  73. package/dist/ethereum/parser/utils.js.map +1 -0
  74. package/dist/ethereum/parser/yearn.d.ts +24 -0
  75. package/dist/ethereum/parser/yearn.d.ts.map +1 -0
  76. package/dist/ethereum/parser/yearn.js +84 -0
  77. package/dist/ethereum/parser/yearn.js.map +1 -0
  78. package/dist/ethereum/parser/zrx.d.ts +7 -0
  79. package/dist/ethereum/parser/zrx.d.ts.map +1 -0
  80. package/dist/ethereum/parser/zrx.js +39 -0
  81. package/dist/ethereum/parser/zrx.js.map +1 -0
  82. package/dist/ethereum/types.d.ts +31 -0
  83. package/dist/ethereum/types.d.ts.map +1 -0
  84. package/dist/ethereum/types.js +3 -0
  85. package/dist/ethereum/types.js.map +1 -0
  86. package/dist/generated/bitcoin/api.d.ts +8 -8
  87. package/dist/generated/bitcoin/api.js +1 -1
  88. package/dist/generated/bitcoin/base.d.ts +1 -1
  89. package/dist/generated/bitcoin/base.js +1 -1
  90. package/dist/generated/bitcoin/common.d.ts +2 -2
  91. package/dist/generated/bitcoin/common.d.ts.map +1 -1
  92. package/dist/generated/bitcoin/common.js +1 -1
  93. package/dist/generated/bitcoin/configuration.d.ts +1 -1
  94. package/dist/generated/bitcoin/configuration.js +1 -1
  95. package/dist/generated/bitcoin/index.d.ts +1 -1
  96. package/dist/generated/bitcoin/index.js +1 -1
  97. package/dist/generated/cosmos/api.d.ts +43 -67
  98. package/dist/generated/cosmos/api.d.ts.map +1 -1
  99. package/dist/generated/cosmos/api.js +14 -14
  100. package/dist/generated/cosmos/api.js.map +1 -1
  101. package/dist/generated/cosmos/common.d.ts +1 -1
  102. package/dist/generated/cosmos/common.d.ts.map +1 -1
  103. package/dist/generated/ethereum/api.d.ts +7 -7
  104. package/dist/generated/ethereum/api.js +1 -1
  105. package/dist/generated/ethereum/base.d.ts +1 -1
  106. package/dist/generated/ethereum/base.js +1 -1
  107. package/dist/generated/ethereum/common.d.ts +2 -2
  108. package/dist/generated/ethereum/common.d.ts.map +1 -1
  109. package/dist/generated/ethereum/common.js +1 -1
  110. package/dist/generated/ethereum/configuration.d.ts +1 -1
  111. package/dist/generated/ethereum/configuration.js +1 -1
  112. package/dist/generated/ethereum/index.d.ts +1 -1
  113. package/dist/generated/ethereum/index.js +1 -1
  114. package/dist/index.d.ts +2 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +6 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +3150 -261
  119. package/dist/types.d.ts +74 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +26 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/utils.d.ts +4 -0
  124. package/dist/utils.d.ts.map +1 -0
  125. package/dist/utils.js +43 -0
  126. package/dist/utils.js.map +1 -0
  127. package/dist/{bitcoin/websocket.d.ts → websocket.d.ts} +8 -7
  128. package/dist/websocket.d.ts.map +1 -0
  129. package/dist/{ethereum/websocket.js → websocket.js} +9 -8
  130. package/dist/websocket.js.map +1 -0
  131. package/package.json +10 -6
  132. package/dist/bitcoin/websocket.d.ts.map +0 -1
  133. package/dist/bitcoin/websocket.js +0 -177
  134. package/dist/bitcoin/websocket.js.map +0 -1
  135. package/dist/ethereum/websocket.d.ts +0 -61
  136. package/dist/ethereum/websocket.d.ts.map +0 -1
  137. package/dist/ethereum/websocket.js.map +0 -1
package/README.md CHANGED
@@ -14,13 +14,41 @@ Using yarn:
14
14
  yarn add @shapeshiftoss/unchained-client
15
15
  ```
16
16
 
17
+ ## Resources
18
+
19
+ - [CAIP-2](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md) naming conventions used for `chainId`
20
+ - [CAIP-19](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-19.md) naming conventions used for `assetId`
21
+
17
22
  ## Usage
18
23
 
19
24
  ```
20
- import { Ethereum } from '@shapeshiftoss/unchained-client'
25
+ import * as unchained from '@shapeshiftoss/unchained-client'
26
+
27
+ const address = 'cosmos1t5u0jfg3ljsjrh2m9e47d4ny2hea7eehxrzdgd'
28
+
29
+ // configuration for the api client
30
+ const config = new unchained.cosmos.Configuration({ basePath: 'https://dev-api.cosmos.shapeshift.com' })
31
+
32
+ // create new instance of the api client
33
+ const apiClient = new unchained.cosmos.V1Api(config)
34
+
35
+ // create new instance of the ws client
36
+ const wsClient = new unchained.ws.Client<unchained.cosmos.Tx>('wss://dev-api.cosmos.shapeshift.com')
37
+
38
+ // create new instance of the transaction parser
39
+ // chainId is in the format of [Caip2](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md)
40
+ const parser = new unchained.cosmos.TransactionParser({ chainId: 'cosmos:cosmoshub-4' })
21
41
 
22
- const config = new Ethereum.Configuration({ basePath: 'https://api.ethereum.shapeshift.com' })
23
- const ethClient = new Ethereum.V1Api(config)
42
+ // example api client request
43
+ const { data } = await apiClient.getBalance({ pubkey: address })
24
44
 
25
- const { data } = await ethClient.getBalance({ pubkey: '0xB3DD70991aF983Cf82d95c46C24979ee98348ffa' })
45
+ // example websocket subscription for new transaction and transaction parsing
46
+ await this.providers.ws.subscribeTxs(
47
+ 'test',
48
+ { topic: 'txs', addresses: [address] },
49
+ async (msg) => {
50
+ const tx = await parser.parse(msg.data, msg.address)
51
+ },
52
+ (err) => console.warn(err)
53
+ )
26
54
  ```
@@ -1,3 +1,4 @@
1
- export * as api from '../generated/bitcoin';
2
- export * as ws from './websocket';
1
+ export * from '../generated/bitcoin';
2
+ export * from './parser';
3
+ export * from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bitcoin/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bitcoin/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
@@ -6,20 +6,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
11
  };
21
12
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.ws = exports.api = void 0;
23
- exports.api = __importStar(require("../generated/bitcoin"));
24
- exports.ws = __importStar(require("./websocket"));
13
+ __exportStar(require("../generated/bitcoin"), exports);
14
+ __exportStar(require("./parser"), exports);
15
+ __exportStar(require("./types"), exports);
25
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bitcoin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2C;AAC3C,kDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bitcoin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAoC;AACpC,2CAAwB;AACxB,0CAAuB"}
@@ -0,0 +1,13 @@
1
+ import { Tx as BlockbookTx } from '@shapeshiftoss/blockbook';
2
+ import { Tx as ParsedTx } from '../../types';
3
+ import { Network } from '../types';
4
+ export interface TransactionParserArgs {
5
+ network?: Network;
6
+ rpcUrl: string;
7
+ }
8
+ export declare class TransactionParser {
9
+ network: Network;
10
+ constructor(args: TransactionParserArgs);
11
+ parse(tx: BlockbookTx, address: string): Promise<ParsedTx>;
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitcoin/parser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAwB,MAAM,aAAa,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGlC,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,iBAAiB;IAC5B,OAAO,EAAE,OAAO,CAAA;gBAEJ,IAAI,EAAE,qBAAqB;IAIjC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CA+DjE"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TransactionParser = void 0;
13
+ const bignumber_js_1 = require("bignumber.js");
14
+ const caip_1 = require("@shapeshiftoss/caip");
15
+ const types_1 = require("@shapeshiftoss/types");
16
+ const types_2 = require("../../types");
17
+ const utils_1 = require("../../utils");
18
+ const utils_2 = require("./utils");
19
+ class TransactionParser {
20
+ constructor(args) {
21
+ var _a;
22
+ this.network = (_a = args.network) !== null && _a !== void 0 ? _a : 'mainnet';
23
+ }
24
+ parse(tx, address) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const caip19Bitcoin = caip_1.caip19.toCAIP19({
27
+ chain: types_1.ChainTypes.Bitcoin,
28
+ network: utils_2.toNetworkType(this.network),
29
+ assetNamespace: caip_1.AssetNamespace.Slip44,
30
+ assetReference: caip_1.AssetReference.Bitcoin,
31
+ });
32
+ const parsedTx = {
33
+ address,
34
+ blockHash: tx.blockHash,
35
+ blockHeight: tx.blockHeight,
36
+ blockTime: tx.blockTime,
37
+ caip2: caip_1.caip2.toCAIP2({ chain: types_1.ChainTypes.Bitcoin, network: utils_2.toNetworkType(this.network) }),
38
+ confirmations: tx.confirmations,
39
+ status: tx.confirmations > 0 ? types_2.Status.Confirmed : types_2.Status.Pending,
40
+ transfers: [],
41
+ txid: tx.txid,
42
+ value: tx.value,
43
+ };
44
+ tx.vin.forEach((vin) => {
45
+ var _a, _b, _c, _d, _e, _f, _g;
46
+ if (vin.isAddress === true && ((_a = vin.addresses) === null || _a === void 0 ? void 0 : _a.includes(address))) {
47
+ // send amount
48
+ const sendValue = new bignumber_js_1.BigNumber((_b = vin.value) !== null && _b !== void 0 ? _b : 0);
49
+ if (sendValue.gt(0)) {
50
+ parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Send, caip19Bitcoin, (_d = (_c = vin.addresses) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : '', (_f = (_e = tx.vout[0].addresses) === null || _e === void 0 ? void 0 : _e[0]) !== null && _f !== void 0 ? _f : '', sendValue.toString(10));
51
+ }
52
+ // network fee
53
+ const fees = new bignumber_js_1.BigNumber((_g = tx.fees) !== null && _g !== void 0 ? _g : 0);
54
+ if (fees.gt(0)) {
55
+ parsedTx.fee = { caip19: caip19Bitcoin, value: fees.toString(10) };
56
+ }
57
+ }
58
+ });
59
+ tx.vout.forEach((vout) => {
60
+ var _a, _b, _c, _d, _e, _f;
61
+ if (vout.isAddress === true && ((_a = vout.addresses) === null || _a === void 0 ? void 0 : _a.includes(address))) {
62
+ // receive amount
63
+ const receiveValue = new bignumber_js_1.BigNumber((_b = vout.value) !== null && _b !== void 0 ? _b : 0);
64
+ if (receiveValue.gt(0)) {
65
+ parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Receive, caip19Bitcoin, (_d = (_c = tx.vin[0].addresses) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : '', (_f = (_e = vout.addresses) === null || _e === void 0 ? void 0 : _e[0]) !== null && _f !== void 0 ? _f : '', receiveValue.toString(10));
66
+ }
67
+ }
68
+ });
69
+ return parsedTx;
70
+ });
71
+ }
72
+ }
73
+ exports.TransactionParser = TransactionParser;
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bitcoin/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAwC;AAExC,8CAAmF;AACnF,gDAAiD;AACjD,uCAAkE;AAClE,uCAA+C;AAE/C,mCAAuC;AAOvC,MAAa,iBAAiB;IAG5B,YAAY,IAA2B;;QACrC,IAAI,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,OAAO,mCAAI,SAAS,CAAA;IAC1C,CAAC;IAEK,KAAK,CAAC,EAAe,EAAE,OAAe;;YAC1C,MAAM,aAAa,GAAG,aAAM,CAAC,QAAQ,CAAC;gBACpC,KAAK,EAAE,kBAAU,CAAC,OAAO;gBACzB,OAAO,EAAE,qBAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpC,cAAc,EAAE,qBAAc,CAAC,MAAM;gBACrC,cAAc,EAAE,qBAAc,CAAC,OAAO;aACvC,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAa;gBACzB,OAAO;gBACP,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,kBAAU,CAAC,OAAO,EAAE,OAAO,EAAE,qBAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzF,aAAa,EAAE,EAAE,CAAC,aAAa;gBAC/B,MAAM,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,cAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAM,CAAC,OAAO;gBAChE,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,EAAE,CAAC,KAAK;aAChB,CAAA;YAED,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;;gBACrB,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,KAAI,MAAA,GAAG,CAAC,SAAS,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA,EAAE;oBAC9D,cAAc;oBACd,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAA;oBAC/C,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wBACnB,QAAQ,CAAC,SAAS,GAAG,yBAAiB,CACpC,QAAQ,CAAC,SAAS,EAClB,oBAAY,CAAC,IAAI,EACjB,aAAa,EACb,MAAA,MAAA,GAAG,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,EAAE,EACxB,MAAA,MAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,EAAE,EAC/B,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvB,CAAA;qBACF;oBAED,cAAc;oBACd,MAAM,IAAI,GAAG,IAAI,wBAAS,CAAC,MAAA,EAAE,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAA;oBACxC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wBACd,QAAQ,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;qBACnE;iBACF;YACH,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;gBACvB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,KAAI,MAAA,IAAI,CAAC,SAAS,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA,EAAE;oBAChE,iBAAiB;oBACjB,MAAM,YAAY,GAAG,IAAI,wBAAS,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAA;oBACnD,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wBACtB,QAAQ,CAAC,SAAS,GAAG,yBAAiB,CACpC,QAAQ,CAAC,SAAS,EAClB,oBAAY,CAAC,OAAO,EACpB,aAAa,EACb,MAAA,MAAA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,EAAE,EAC9B,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,EAAE,EACzB,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC1B,CAAA;qBACF;iBACF;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;KAAA;CACF;AAtED,8CAsEC"}
@@ -0,0 +1,4 @@
1
+ import { NetworkTypes } from '@shapeshiftoss/types';
2
+ import { Network } from '../types';
3
+ export declare const toNetworkType: (network: Network) => NetworkTypes;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/bitcoin/parser/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,YAShD,CAAA"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toNetworkType = void 0;
4
+ const types_1 = require("@shapeshiftoss/types");
5
+ const toNetworkType = (network) => {
6
+ switch (network) {
7
+ case 'mainnet':
8
+ return types_1.NetworkTypes.MAINNET;
9
+ case 'testnet':
10
+ return types_1.NetworkTypes.TESTNET;
11
+ default:
12
+ throw new Error('unsupported network');
13
+ }
14
+ };
15
+ exports.toNetworkType = toNetworkType;
16
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/bitcoin/parser/utils.ts"],"names":[],"mappings":";;;AAAA,gDAAmD;AAG5C,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAgB,EAAE;IAC9D,QAAQ,OAAO,EAAE;QACf,KAAK,SAAS;YACZ,OAAO,oBAAY,CAAC,OAAO,CAAA;QAC7B,KAAK,SAAS;YACZ,OAAO,oBAAY,CAAC,OAAO,CAAA;QAC7B;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACzC;AACH,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB"}
@@ -0,0 +1,2 @@
1
+ export declare type Network = 'mainnet' | 'testnet';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bitcoin/types.ts"],"names":[],"mappings":"AAAA,oBAAY,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bitcoin/types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
- export * as api from '../generated/cosmos';
1
+ export * from '../generated/cosmos';
2
+ export * from './parser';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cosmos/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cosmos/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA"}
@@ -6,19 +6,10 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
11
  };
21
12
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.api = void 0;
23
- exports.api = __importStar(require("../generated/cosmos"));
13
+ __exportStar(require("../generated/cosmos"), exports);
14
+ __exportStar(require("./parser"), exports);
24
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cosmos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cosmos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAmC;AACnC,2CAAwB"}
@@ -0,0 +1,13 @@
1
+ import { CAIP2, CAIP19 } from '@shapeshiftoss/caip';
2
+ import { Tx as ParsedTx } from '../../types';
3
+ import { Tx as CosmosTx } from '../index';
4
+ export interface TransactionParserArgs {
5
+ chainId: CAIP2;
6
+ }
7
+ export declare class TransactionParser {
8
+ chainId: CAIP2;
9
+ assetId: CAIP19;
10
+ constructor(args: TransactionParserArgs);
11
+ parse(tx: CosmosTx, address: string): Promise<ParsedTx>;
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cosmos/parser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAiD,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAClG,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAwB,MAAM,aAAa,CAAA;AAElE,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,KAAK,CAAA;CACf;AAED,qBAAa,iBAAiB;IAC5B,OAAO,EAAE,KAAK,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;gBAEH,IAAI,EAAE,qBAAqB;IAUjC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CA2D9D"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TransactionParser = void 0;
13
+ const bignumber_js_1 = require("bignumber.js");
14
+ const caip_1 = require("@shapeshiftoss/caip");
15
+ const types_1 = require("../../types");
16
+ const utils_1 = require("../../utils");
17
+ class TransactionParser {
18
+ constructor(args) {
19
+ this.chainId = args.chainId;
20
+ this.assetId = caip_1.caip19.toCAIP19(Object.assign(Object.assign({}, caip_1.caip2.fromCAIP2(this.chainId)), { assetNamespace: caip_1.AssetNamespace.Slip44, assetReference: caip_1.AssetReference.Cosmos }));
21
+ }
22
+ parse(tx, address) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const blockHeight = Number(tx.blockHeight);
25
+ const blockTime = Number(tx.timestamp);
26
+ const parsedTx = {
27
+ address,
28
+ blockHash: tx.blockHash,
29
+ blockHeight: isNaN(blockHeight) ? -1 : blockHeight,
30
+ blockTime: isNaN(blockTime) ? -1 : blockTime,
31
+ caip2: this.chainId,
32
+ confirmations: -1,
33
+ status: types_1.Status.Confirmed,
34
+ transfers: [],
35
+ txid: tx.txid,
36
+ value: tx.value,
37
+ };
38
+ // messages make best attempt to track where value is transferring to for a variety of tx types
39
+ // logs provide more specific information if needed as more complex tx types are added
40
+ tx.messages.forEach((msg) => {
41
+ var _a, _b, _c, _d, _e, _f, _g, _h;
42
+ if (msg.from === address) {
43
+ // send amount
44
+ const sendValue = new bignumber_js_1.BigNumber((_b = (_a = msg.value) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : 0);
45
+ if (sendValue.gt(0)) {
46
+ parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_1.TransferType.Send, this.assetId, (_c = msg.from) !== null && _c !== void 0 ? _c : '', (_d = msg.to) !== null && _d !== void 0 ? _d : '', sendValue.toString(10));
47
+ }
48
+ // network fee
49
+ const fees = new bignumber_js_1.BigNumber(tx.fee.amount);
50
+ if (fees.gt(0)) {
51
+ parsedTx.fee = { caip19: this.assetId, value: fees.toString(10) };
52
+ }
53
+ }
54
+ if (msg.to === address) {
55
+ // receive amount
56
+ const receiveValue = new bignumber_js_1.BigNumber((_f = (_e = msg.value) === null || _e === void 0 ? void 0 : _e.amount) !== null && _f !== void 0 ? _f : 0);
57
+ if (receiveValue.gt(0)) {
58
+ parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_1.TransferType.Receive, this.assetId, (_g = msg.from) !== null && _g !== void 0 ? _g : '', (_h = msg.to) !== null && _h !== void 0 ? _h : '', receiveValue.toString(10));
59
+ }
60
+ }
61
+ });
62
+ return parsedTx;
63
+ });
64
+ }
65
+ }
66
+ exports.TransactionParser = TransactionParser;
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cosmos/parser/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export * as api from '../generated/ethereum';
2
- export * as ws from './websocket';
1
+ export * from '../generated/ethereum';
2
+ export * from './parser';
3
+ export * from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ethereum/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ethereum/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
@@ -6,20 +6,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
11
  };
21
12
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.ws = exports.api = void 0;
23
- exports.api = __importStar(require("../generated/ethereum"));
24
- exports.ws = __importStar(require("./websocket"));
13
+ __exportStar(require("../generated/ethereum"), exports);
14
+ __exportStar(require("./parser"), exports);
15
+ __exportStar(require("./types"), exports);
25
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ethereum/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA4C;AAC5C,kDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ethereum/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAAqC;AACrC,2CAAwB;AACxB,0CAAuB"}
@@ -0,0 +1,4 @@
1
+ import { JsonFragment } from '@ethersproject/abi/lib/fragments';
2
+ declare const erc20: Array<JsonFragment>;
3
+ export default erc20;
4
+ //# sourceMappingURL=erc20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../../src/ethereum/parser/abi/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE/D,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,YAAY,CA+R9B,CAAA;AAED,eAAe,KAAK,CAAA"}