@shapeshiftoss/unchained-client 6.9.0 → 6.11.1
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/README.md +3 -1
- package/dist/bitcoin/index.d.ts +0 -1
- package/dist/bitcoin/index.js +5 -2
- package/dist/bitcoin/parser/index.d.ts +0 -1
- package/dist/bitcoin/parser/index.js +43 -54
- package/dist/bitcoin/parser/utils.d.ts +0 -1
- package/dist/bitcoin/parser/utils.js +0 -1
- package/dist/bitcoin/types.d.ts +0 -1
- package/dist/bitcoin/types.js +0 -1
- package/dist/cosmos/index.d.ts +0 -1
- package/dist/cosmos/index.js +5 -2
- package/dist/cosmos/parser/index.d.ts +4 -5
- package/dist/cosmos/parser/index.js +55 -50
- package/dist/cosmos/parser/utils.d.ts +3 -4
- package/dist/cosmos/parser/utils.js +28 -25
- package/dist/cosmos/types.d.ts +4 -1
- package/dist/cosmos/types.js +0 -1
- package/dist/ethereum/index.d.ts +0 -1
- package/dist/ethereum/index.js +5 -2
- package/dist/ethereum/parser/abi/erc20.d.ts +0 -1
- package/dist/ethereum/parser/abi/erc20.js +69 -70
- package/dist/ethereum/parser/abi/foxyStaking.d.ts +0 -1
- package/dist/ethereum/parser/abi/foxyStaking.js +161 -162
- package/dist/ethereum/parser/abi/multiSig.d.ts +0 -1
- package/dist/ethereum/parser/abi/multiSig.js +79 -80
- package/dist/ethereum/parser/abi/shapeShiftRouter.d.ts +0 -1
- package/dist/ethereum/parser/abi/shapeShiftRouter.js +119 -120
- package/dist/ethereum/parser/abi/thor.d.ts +0 -1
- package/dist/ethereum/parser/abi/thor.js +28 -29
- package/dist/ethereum/parser/abi/uniV2.d.ts +0 -1
- package/dist/ethereum/parser/abi/uniV2.js +55 -56
- package/dist/ethereum/parser/abi/weth.d.ts +3 -0
- package/dist/ethereum/parser/abi/weth.js +282 -0
- package/dist/ethereum/parser/abi/yearnVault.d.ts +0 -1
- package/dist/ethereum/parser/abi/yearnVault.js +95 -96
- package/dist/ethereum/parser/constants.d.ts +2 -1
- package/dist/ethereum/parser/constants.js +3 -2
- package/dist/ethereum/parser/foxy.d.ts +8 -9
- package/dist/ethereum/parser/foxy.js +27 -59
- package/dist/ethereum/parser/index.d.ts +1 -1
- package/dist/ethereum/parser/index.js +51 -56
- package/dist/ethereum/parser/thor.d.ts +6 -5
- package/dist/ethereum/parser/thor.js +33 -49
- package/dist/ethereum/parser/uniV2.d.ts +5 -5
- package/dist/ethereum/parser/uniV2.js +76 -83
- package/dist/ethereum/parser/utils.d.ts +0 -1
- package/dist/ethereum/parser/utils.js +2 -3
- package/dist/ethereum/parser/weth.d.ts +19 -0
- package/dist/ethereum/parser/weth.js +102 -0
- package/dist/ethereum/parser/yearn.d.ts +11 -12
- package/dist/ethereum/parser/yearn.js +51 -51
- package/dist/ethereum/parser/zrx.d.ts +1 -2
- package/dist/ethereum/parser/zrx.js +18 -30
- package/dist/ethereum/types.d.ts +0 -1
- package/dist/ethereum/types.js +0 -1
- package/dist/generated/bitcoin/api.d.ts +117 -121
- package/dist/generated/bitcoin/api.js +82 -111
- package/dist/generated/bitcoin/base.d.ts +3 -4
- package/dist/generated/bitcoin/base.js +2 -3
- package/dist/generated/bitcoin/common.d.ts +3 -4
- package/dist/generated/bitcoin/common.js +23 -39
- package/dist/generated/bitcoin/configuration.d.ts +1 -2
- package/dist/generated/bitcoin/configuration.js +1 -2
- package/dist/generated/bitcoin/index.d.ts +1 -2
- package/dist/generated/bitcoin/index.js +6 -3
- package/dist/generated/cosmos/api.d.ts +143 -144
- package/dist/generated/cosmos/api.js +89 -115
- package/dist/generated/cosmos/base.d.ts +2 -3
- package/dist/generated/cosmos/base.js +0 -1
- package/dist/generated/cosmos/common.d.ts +2 -3
- package/dist/generated/cosmos/common.js +22 -38
- package/dist/generated/cosmos/configuration.d.ts +0 -1
- package/dist/generated/cosmos/configuration.js +0 -1
- package/dist/generated/cosmos/index.d.ts +0 -1
- package/dist/generated/cosmos/index.js +5 -2
- package/dist/generated/ethereum/api.d.ts +74 -78
- package/dist/generated/ethereum/api.js +74 -101
- package/dist/generated/ethereum/base.d.ts +3 -4
- package/dist/generated/ethereum/base.js +2 -3
- package/dist/generated/ethereum/common.d.ts +3 -4
- package/dist/generated/ethereum/common.js +23 -39
- package/dist/generated/ethereum/configuration.d.ts +1 -2
- package/dist/generated/ethereum/configuration.js +1 -2
- package/dist/generated/ethereum/index.d.ts +1 -2
- package/dist/generated/ethereum/index.js +6 -3
- package/dist/index.d.ts +0 -1
- package/dist/index.js +5 -2
- package/dist/types.d.ts +14 -3
- package/dist/types.js +1 -1
- package/dist/utils.d.ts +2 -3
- package/dist/utils.js +23 -23
- package/dist/websocket.d.ts +1 -2
- package/dist/websocket.js +78 -80
- package/package.json +21 -13
- package/dist/bitcoin/index.d.ts.map +0 -1
- package/dist/bitcoin/index.js.map +0 -1
- package/dist/bitcoin/parser/index.d.ts.map +0 -1
- package/dist/bitcoin/parser/index.js.map +0 -1
- package/dist/bitcoin/parser/utils.d.ts.map +0 -1
- package/dist/bitcoin/parser/utils.js.map +0 -1
- package/dist/bitcoin/types.d.ts.map +0 -1
- package/dist/bitcoin/types.js.map +0 -1
- package/dist/cosmos/index.d.ts.map +0 -1
- package/dist/cosmos/index.js.map +0 -1
- package/dist/cosmos/parser/index.d.ts.map +0 -1
- package/dist/cosmos/parser/index.js.map +0 -1
- package/dist/cosmos/parser/utils.d.ts.map +0 -1
- package/dist/cosmos/parser/utils.js.map +0 -1
- package/dist/cosmos/types.d.ts.map +0 -1
- package/dist/cosmos/types.js.map +0 -1
- package/dist/ethereum/index.d.ts.map +0 -1
- package/dist/ethereum/index.js.map +0 -1
- package/dist/ethereum/parser/abi/erc20.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/erc20.js.map +0 -1
- package/dist/ethereum/parser/abi/foxyStaking.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/foxyStaking.js.map +0 -1
- package/dist/ethereum/parser/abi/multiSig.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/multiSig.js.map +0 -1
- package/dist/ethereum/parser/abi/shapeShiftRouter.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/shapeShiftRouter.js.map +0 -1
- package/dist/ethereum/parser/abi/thor.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/thor.js.map +0 -1
- package/dist/ethereum/parser/abi/uniV2.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/uniV2.js.map +0 -1
- package/dist/ethereum/parser/abi/yearnVault.d.ts.map +0 -1
- package/dist/ethereum/parser/abi/yearnVault.js.map +0 -1
- package/dist/ethereum/parser/constants.d.ts.map +0 -1
- package/dist/ethereum/parser/constants.js.map +0 -1
- package/dist/ethereum/parser/foxy.d.ts.map +0 -1
- package/dist/ethereum/parser/foxy.js.map +0 -1
- package/dist/ethereum/parser/index.d.ts.map +0 -1
- package/dist/ethereum/parser/index.js.map +0 -1
- package/dist/ethereum/parser/thor.d.ts.map +0 -1
- package/dist/ethereum/parser/thor.js.map +0 -1
- package/dist/ethereum/parser/uniV2.d.ts.map +0 -1
- package/dist/ethereum/parser/uniV2.js.map +0 -1
- package/dist/ethereum/parser/utils.d.ts.map +0 -1
- package/dist/ethereum/parser/utils.js.map +0 -1
- package/dist/ethereum/parser/yearn.d.ts.map +0 -1
- package/dist/ethereum/parser/yearn.js.map +0 -1
- package/dist/ethereum/parser/zrx.d.ts.map +0 -1
- package/dist/ethereum/parser/zrx.js.map +0 -1
- package/dist/ethereum/types.d.ts.map +0 -1
- package/dist/ethereum/types.js.map +0 -1
- package/dist/generated/bitcoin/api.d.ts.map +0 -1
- package/dist/generated/bitcoin/api.js.map +0 -1
- package/dist/generated/bitcoin/base.d.ts.map +0 -1
- package/dist/generated/bitcoin/base.js.map +0 -1
- package/dist/generated/bitcoin/common.d.ts.map +0 -1
- package/dist/generated/bitcoin/common.js.map +0 -1
- package/dist/generated/bitcoin/configuration.d.ts.map +0 -1
- package/dist/generated/bitcoin/configuration.js.map +0 -1
- package/dist/generated/bitcoin/index.d.ts.map +0 -1
- package/dist/generated/bitcoin/index.js.map +0 -1
- package/dist/generated/cosmos/api.d.ts.map +0 -1
- package/dist/generated/cosmos/api.js.map +0 -1
- package/dist/generated/cosmos/base.d.ts.map +0 -1
- package/dist/generated/cosmos/base.js.map +0 -1
- package/dist/generated/cosmos/common.d.ts.map +0 -1
- package/dist/generated/cosmos/common.js.map +0 -1
- package/dist/generated/cosmos/configuration.d.ts.map +0 -1
- package/dist/generated/cosmos/configuration.js.map +0 -1
- package/dist/generated/cosmos/index.d.ts.map +0 -1
- package/dist/generated/cosmos/index.js.map +0 -1
- package/dist/generated/ethereum/api.d.ts.map +0 -1
- package/dist/generated/ethereum/api.js.map +0 -1
- package/dist/generated/ethereum/base.d.ts.map +0 -1
- package/dist/generated/ethereum/base.js.map +0 -1
- package/dist/generated/ethereum/common.d.ts.map +0 -1
- package/dist/generated/ethereum/common.js.map +0 -1
- package/dist/generated/ethereum/configuration.d.ts.map +0 -1
- package/dist/generated/ethereum/configuration.js.map +0 -1
- package/dist/generated/ethereum/index.d.ts.map +0 -1
- package/dist/generated/ethereum/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -4934
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- package/dist/websocket.d.ts.map +0 -1
- package/dist/websocket.js.map +0 -1
|
@@ -4,4 +4,5 @@ export declare const ZRX_PROXY_CONTRACT = "0xDef1C0ded9bec7F1a1670819833240f027b
|
|
|
4
4
|
export declare const THOR_ROUTER_CONTRACT_MAINNET = "0xC145990E84155416144C532E31f89B840Ca8c2cE";
|
|
5
5
|
export declare const THOR_ROUTER_CONTRACT_ROPSTEN = "0xefA28233838f46a80AaaC8c309077a9ba70D123A";
|
|
6
6
|
export declare const FOXY_STAKING_CONTRACT = "0xee77aa3Fd23BbeBaf94386dD44b548e9a785ea4b";
|
|
7
|
-
|
|
7
|
+
export declare const WETH_CONTRACT_MAINNET = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
|
|
8
|
+
export declare const WETH_CONTRACT_ROPSTEN = "0xc778417E063141139Fce010982780140Aa0cD5Ab";
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FOXY_STAKING_CONTRACT = exports.THOR_ROUTER_CONTRACT_ROPSTEN = exports.THOR_ROUTER_CONTRACT_MAINNET = exports.ZRX_PROXY_CONTRACT = exports.UNI_V2_ROUTER_CONTRACT = exports.SHAPE_SHIFT_ROUTER_CONTRACT = void 0;
|
|
3
|
+
exports.WETH_CONTRACT_ROPSTEN = exports.WETH_CONTRACT_MAINNET = exports.FOXY_STAKING_CONTRACT = exports.THOR_ROUTER_CONTRACT_ROPSTEN = exports.THOR_ROUTER_CONTRACT_MAINNET = exports.ZRX_PROXY_CONTRACT = exports.UNI_V2_ROUTER_CONTRACT = exports.SHAPE_SHIFT_ROUTER_CONTRACT = void 0;
|
|
4
4
|
exports.SHAPE_SHIFT_ROUTER_CONTRACT = '0x6a1e73f12018D8e5f966ce794aa2921941feB17E';
|
|
5
5
|
exports.UNI_V2_ROUTER_CONTRACT = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D';
|
|
6
6
|
exports.ZRX_PROXY_CONTRACT = '0xDef1C0ded9bec7F1a1670819833240f027b25EfF';
|
|
7
7
|
exports.THOR_ROUTER_CONTRACT_MAINNET = '0xC145990E84155416144C532E31f89B840Ca8c2cE';
|
|
8
8
|
exports.THOR_ROUTER_CONTRACT_ROPSTEN = '0xefA28233838f46a80AaaC8c309077a9ba70D123A';
|
|
9
9
|
exports.FOXY_STAKING_CONTRACT = '0xee77aa3Fd23BbeBaf94386dD44b548e9a785ea4b';
|
|
10
|
-
|
|
10
|
+
exports.WETH_CONTRACT_MAINNET = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
|
|
11
|
+
exports.WETH_CONTRACT_ROPSTEN = '0xc778417E063141139Fce010982780140Aa0cD5Ab';
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Tx as BlockbookTx } from '@shapeshiftoss/blockbook';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
-
import {
|
|
3
|
+
import { SubParser, TxSpecific } from '../types';
|
|
4
4
|
export declare class Parser implements SubParser {
|
|
5
|
-
abiInterface: ethers.utils.Interface;
|
|
6
|
-
readonly
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
readonly abiInterface: ethers.utils.Interface;
|
|
6
|
+
readonly supportedFunctions: {
|
|
7
|
+
stakeSigHash: string;
|
|
8
|
+
unstakeSigHash: string;
|
|
9
|
+
instantUnstakeSigHash: string;
|
|
10
|
+
claimWithdrawSigHash: string;
|
|
11
|
+
};
|
|
10
12
|
parse(tx: BlockbookTx): Promise<TxSpecific | undefined>;
|
|
11
|
-
supportedFoxyFunctions(): string[];
|
|
12
|
-
abiInterfaceSupportsSigHash(txSigHash: string | undefined): ethers.utils.Interface | undefined;
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=foxy.d.ts.map
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -15,62 +6,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
6
|
exports.Parser = void 0;
|
|
16
7
|
const ethers_1 = require("ethers");
|
|
17
8
|
const types_1 = require("../../types");
|
|
18
|
-
const utils_1 = require("./utils");
|
|
19
|
-
const constants_1 = require("./constants");
|
|
20
9
|
const foxyStaking_1 = __importDefault(require("./abi/foxyStaking"));
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const utils_1 = require("./utils");
|
|
21
12
|
class Parser {
|
|
22
13
|
constructor() {
|
|
23
14
|
this.abiInterface = new ethers_1.ethers.utils.Interface(foxyStaking_1.default);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
15
|
+
this.supportedFunctions = {
|
|
16
|
+
stakeSigHash: this.abiInterface.getSighash('stake(uint256,address)'),
|
|
17
|
+
unstakeSigHash: this.abiInterface.getSighash('unstake'),
|
|
18
|
+
instantUnstakeSigHash: this.abiInterface.getSighash('instantUnstake'),
|
|
19
|
+
claimWithdrawSigHash: this.abiInterface.getSighash('claimWithdraw')
|
|
20
|
+
};
|
|
30
21
|
}
|
|
31
|
-
parse(tx) {
|
|
22
|
+
async parse(tx) {
|
|
32
23
|
var _a;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
default:
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
})();
|
|
55
|
-
// We didn't recognise the sigHash - exit
|
|
56
|
-
if (!result)
|
|
57
|
-
return;
|
|
58
|
-
return {
|
|
59
|
-
data: {
|
|
60
|
-
method: decoded.name,
|
|
61
|
-
parser: types_1.TxParser.Foxy,
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
supportedFoxyFunctions() {
|
|
67
|
-
return [this.stakeSigHash, this.unstakeSigHash, this.instantUnstakeSigHash, this.claimWithdrawSigHash];
|
|
68
|
-
}
|
|
69
|
-
abiInterfaceSupportsSigHash(txSigHash) {
|
|
70
|
-
if (this.supportedFoxyFunctions().some((abi) => abi === txSigHash))
|
|
71
|
-
return this.abiInterface;
|
|
72
|
-
return undefined;
|
|
24
|
+
const txData = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
25
|
+
if (!(0, utils_1.txInteractsWithContract)(tx, constants_1.FOXY_STAKING_CONTRACT))
|
|
26
|
+
return;
|
|
27
|
+
if (!txData)
|
|
28
|
+
return;
|
|
29
|
+
const txSigHash = (0, utils_1.getSigHash)(txData);
|
|
30
|
+
if (!Object.values(this.supportedFunctions).some((hash) => hash === txSigHash))
|
|
31
|
+
return;
|
|
32
|
+
const decoded = this.abiInterface.parseTransaction({ data: txData });
|
|
33
|
+
// failed to decode input data
|
|
34
|
+
if (!decoded)
|
|
35
|
+
return;
|
|
36
|
+
return {
|
|
37
|
+
data: {
|
|
38
|
+
method: decoded.name,
|
|
39
|
+
parser: types_1.TxParser.Foxy
|
|
40
|
+
}
|
|
41
|
+
};
|
|
73
42
|
}
|
|
74
43
|
}
|
|
75
44
|
exports.Parser = Parser;
|
|
76
|
-
//# sourceMappingURL=foxy.js.map
|
|
@@ -11,6 +11,7 @@ export declare class TransactionParser {
|
|
|
11
11
|
private readonly zrx;
|
|
12
12
|
private readonly yearn;
|
|
13
13
|
private readonly foxy;
|
|
14
|
+
private readonly weth;
|
|
14
15
|
private readonly parsers;
|
|
15
16
|
constructor(args: TransactionParserArgs);
|
|
16
17
|
getInternalAddress(inputData: string): string | undefined;
|
|
@@ -18,4 +19,3 @@ export declare class TransactionParser {
|
|
|
18
19
|
private static getStatus;
|
|
19
20
|
private getParsedTxWithTransfers;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
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);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -18,29 +22,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
18
22
|
__setModuleDefault(result, mod);
|
|
19
23
|
return result;
|
|
20
24
|
};
|
|
21
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
26
|
exports.TransactionParser = void 0;
|
|
32
|
-
const bignumber_js_1 = require("bignumber.js");
|
|
33
|
-
const ethers_1 = require("ethers");
|
|
34
27
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
35
28
|
const types_1 = require("@shapeshiftoss/types");
|
|
29
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
30
|
+
const ethers_1 = require("ethers");
|
|
36
31
|
const types_2 = require("../../types");
|
|
37
32
|
const utils_1 = require("../../utils");
|
|
38
|
-
const
|
|
33
|
+
const foxy = __importStar(require("./foxy"));
|
|
39
34
|
const thor = __importStar(require("./thor"));
|
|
40
35
|
const uniV2 = __importStar(require("./uniV2"));
|
|
41
|
-
const
|
|
36
|
+
const utils_2 = require("./utils");
|
|
37
|
+
const weth = __importStar(require("./weth"));
|
|
42
38
|
const yearn = __importStar(require("./yearn"));
|
|
43
|
-
const
|
|
39
|
+
const zrx = __importStar(require("./zrx"));
|
|
44
40
|
class TransactionParser {
|
|
45
41
|
constructor(args) {
|
|
46
42
|
var _a;
|
|
@@ -51,39 +47,39 @@ class TransactionParser {
|
|
|
51
47
|
this.zrx = new zrx.Parser();
|
|
52
48
|
this.yearn = new yearn.Parser({ provider, network: this.network });
|
|
53
49
|
this.foxy = new foxy.Parser();
|
|
54
|
-
this.
|
|
50
|
+
this.weth = new weth.Parser({ network: this.network, provider });
|
|
51
|
+
this.parsers = [this.zrx, this.thor, this.uniV2, this.yearn, this.foxy, this.weth];
|
|
55
52
|
}
|
|
56
53
|
// return any addresses that can be detected
|
|
57
54
|
getInternalAddress(inputData) {
|
|
58
|
-
switch (utils_2.getSigHash(inputData)) {
|
|
59
|
-
case this.thor.transferOutSigHash:
|
|
55
|
+
switch ((0, utils_2.getSigHash)(inputData)) {
|
|
56
|
+
case this.thor.supportedFunctions.transferOutSigHash:
|
|
60
57
|
return this.thor.getInternalAddress(inputData);
|
|
61
58
|
case utils_2.SENDMULTISIG_SIG_HASH:
|
|
62
|
-
return utils_2.getInternalMultisigAddress(inputData);
|
|
59
|
+
return (0, utils_2.getInternalMultisigAddress)(inputData);
|
|
63
60
|
default:
|
|
64
61
|
return;
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
|
-
parse(tx, address, internalTxs) {
|
|
64
|
+
async parse(tx, address, internalTxs) {
|
|
68
65
|
var _a;
|
|
69
|
-
return
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
66
|
+
// We expect only one Parser to return a result. If multiple do, we take the first and early exit.
|
|
67
|
+
const contractParserResult = await (0, utils_1.findAsyncSequential)(this.parsers, async (parser) => await parser.parse(tx));
|
|
68
|
+
const parsedTx = {
|
|
69
|
+
address,
|
|
70
|
+
blockHash: tx.blockHash,
|
|
71
|
+
blockHeight: tx.blockHeight,
|
|
72
|
+
blockTime: tx.blockTime,
|
|
73
|
+
caip2: caip_1.caip2.toCAIP2({ chain: types_1.ChainTypes.Ethereum, network: (0, utils_2.toNetworkType)(this.network) }),
|
|
74
|
+
chainId: caip_1.caip2.toCAIP2({ chain: types_1.ChainTypes.Ethereum, network: (0, utils_2.toNetworkType)(this.network) }),
|
|
75
|
+
confirmations: tx.confirmations,
|
|
76
|
+
status: TransactionParser.getStatus(tx),
|
|
77
|
+
trade: contractParserResult === null || contractParserResult === void 0 ? void 0 : contractParserResult.trade,
|
|
78
|
+
transfers: (_a = contractParserResult === null || contractParserResult === void 0 ? void 0 : contractParserResult.transfers) !== null && _a !== void 0 ? _a : [],
|
|
79
|
+
txid: tx.txid,
|
|
80
|
+
data: contractParserResult === null || contractParserResult === void 0 ? void 0 : contractParserResult.data
|
|
81
|
+
};
|
|
82
|
+
return this.getParsedTxWithTransfers(tx, parsedTx, address, internalTxs);
|
|
87
83
|
}
|
|
88
84
|
static getStatus(tx) {
|
|
89
85
|
var _a;
|
|
@@ -100,9 +96,9 @@ class TransactionParser {
|
|
|
100
96
|
var _a, _b, _c, _d, _e, _f;
|
|
101
97
|
const caip19Ethereum = caip_1.caip19.toCAIP19({
|
|
102
98
|
chain: types_1.ChainTypes.Ethereum,
|
|
103
|
-
network: utils_2.toNetworkType(this.network),
|
|
99
|
+
network: (0, utils_2.toNetworkType)(this.network),
|
|
104
100
|
assetNamespace: caip_1.AssetNamespace.Slip44,
|
|
105
|
-
assetReference: caip_1.AssetReference.Ethereum
|
|
101
|
+
assetReference: caip_1.AssetReference.Ethereum
|
|
106
102
|
});
|
|
107
103
|
const sendAddress = (_b = (_a = tx.vin[0].addresses) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : '';
|
|
108
104
|
const receiveAddress = (_d = (_c = tx.vout[0].addresses) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : '';
|
|
@@ -110,24 +106,24 @@ class TransactionParser {
|
|
|
110
106
|
// send amount
|
|
111
107
|
const sendValue = new bignumber_js_1.BigNumber(tx.value);
|
|
112
108
|
if (sendValue.gt(0)) {
|
|
113
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Send, caip19Ethereum, sendAddress, receiveAddress, sendValue.toString(10));
|
|
109
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Send, caip19Ethereum, sendAddress, receiveAddress, sendValue.toString(10));
|
|
114
110
|
}
|
|
115
111
|
// network fee
|
|
116
112
|
const fees = new bignumber_js_1.BigNumber((_e = tx.fees) !== null && _e !== void 0 ? _e : 0);
|
|
117
113
|
if (fees.gt(0)) {
|
|
118
|
-
parsedTx.fee = { caip19: caip19Ethereum, value: fees.toString(10) };
|
|
114
|
+
parsedTx.fee = { caip19: caip19Ethereum, assetId: caip19Ethereum, value: fees.toString(10) };
|
|
119
115
|
}
|
|
120
116
|
}
|
|
121
117
|
if (address === receiveAddress) {
|
|
122
118
|
// receive amount
|
|
123
119
|
const receiveValue = new bignumber_js_1.BigNumber(tx.value);
|
|
124
120
|
if (receiveValue.gt(0)) {
|
|
125
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Receive, caip19Ethereum, sendAddress, receiveAddress, receiveValue.toString(10));
|
|
121
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Receive, caip19Ethereum, sendAddress, receiveAddress, receiveValue.toString(10));
|
|
126
122
|
}
|
|
127
123
|
}
|
|
128
124
|
(_f = tx.tokenTransfers) === null || _f === void 0 ? void 0 : _f.forEach((transfer) => {
|
|
129
125
|
// FTX Token (FTT) name and symbol was set backwards on the ERC20 contract
|
|
130
|
-
if (transfer.token
|
|
126
|
+
if (transfer.token === '0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9') {
|
|
131
127
|
transfer.name = transfer.symbol;
|
|
132
128
|
transfer.symbol = transfer.name;
|
|
133
129
|
}
|
|
@@ -135,52 +131,51 @@ class TransactionParser {
|
|
|
135
131
|
contract: transfer.token,
|
|
136
132
|
decimals: transfer.decimals,
|
|
137
133
|
name: transfer.name,
|
|
138
|
-
symbol: transfer.symbol
|
|
134
|
+
symbol: transfer.symbol
|
|
139
135
|
};
|
|
140
136
|
const transferArgs = [
|
|
141
137
|
caip_1.caip19.toCAIP19({
|
|
142
138
|
chain: types_1.ChainTypes.Ethereum,
|
|
143
|
-
network: utils_2.toNetworkType(this.network),
|
|
139
|
+
network: (0, utils_2.toNetworkType)(this.network),
|
|
144
140
|
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
145
|
-
assetReference: transfer.token
|
|
141
|
+
assetReference: transfer.token
|
|
146
142
|
}),
|
|
147
143
|
transfer.from,
|
|
148
144
|
transfer.to,
|
|
149
145
|
transfer.value,
|
|
150
|
-
token
|
|
146
|
+
token
|
|
151
147
|
];
|
|
152
148
|
// token send amount
|
|
153
149
|
if (address === transfer.from) {
|
|
154
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Send, ...transferArgs);
|
|
150
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Send, ...transferArgs);
|
|
155
151
|
}
|
|
156
152
|
// token receive amount
|
|
157
153
|
if (address === transfer.to) {
|
|
158
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Receive, ...transferArgs);
|
|
154
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Receive, ...transferArgs);
|
|
159
155
|
}
|
|
160
156
|
});
|
|
161
157
|
internalTxs === null || internalTxs === void 0 ? void 0 : internalTxs.forEach((internalTx) => {
|
|
162
158
|
const transferArgs = [
|
|
163
159
|
caip_1.caip19.toCAIP19({
|
|
164
160
|
chain: types_1.ChainTypes.Ethereum,
|
|
165
|
-
network: utils_2.toNetworkType(this.network),
|
|
161
|
+
network: (0, utils_2.toNetworkType)(this.network),
|
|
166
162
|
assetNamespace: caip_1.AssetNamespace.Slip44,
|
|
167
|
-
assetReference: caip_1.AssetReference.Ethereum
|
|
163
|
+
assetReference: caip_1.AssetReference.Ethereum
|
|
168
164
|
}),
|
|
169
165
|
internalTx.from,
|
|
170
166
|
internalTx.to,
|
|
171
|
-
internalTx.value
|
|
167
|
+
internalTx.value
|
|
172
168
|
];
|
|
173
169
|
// internal eth send
|
|
174
170
|
if (address === internalTx.from) {
|
|
175
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Send, ...transferArgs);
|
|
171
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Send, ...transferArgs);
|
|
176
172
|
}
|
|
177
173
|
// internal eth receive
|
|
178
174
|
if (address === internalTx.to) {
|
|
179
|
-
parsedTx.transfers = utils_1.aggregateTransfer(parsedTx.transfers, types_2.TransferType.Receive, ...transferArgs);
|
|
175
|
+
parsedTx.transfers = (0, utils_1.aggregateTransfer)(parsedTx.transfers, types_2.TransferType.Receive, ...transferArgs);
|
|
180
176
|
}
|
|
181
177
|
});
|
|
182
178
|
return parsedTx;
|
|
183
179
|
}
|
|
184
180
|
}
|
|
185
181
|
exports.TransactionParser = TransactionParser;
|
|
186
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
1
|
import { Tx as BlockbookTx } from '@shapeshiftoss/blockbook';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
3
|
import { Network, SubParser, TxSpecific } from '../types';
|
|
4
4
|
export interface ParserArgs {
|
|
5
5
|
network: Network;
|
|
6
6
|
rpcUrl: string;
|
|
7
7
|
}
|
|
8
8
|
export declare class Parser implements SubParser {
|
|
9
|
-
abiInterface: ethers.utils.Interface;
|
|
10
|
-
readonly depositSigHash: string;
|
|
11
|
-
readonly transferOutSigHash: string;
|
|
12
9
|
readonly routerContract: string;
|
|
10
|
+
readonly abiInterface: ethers.utils.Interface;
|
|
11
|
+
readonly supportedFunctions: {
|
|
12
|
+
depositSigHash: string;
|
|
13
|
+
transferOutSigHash: string;
|
|
14
|
+
};
|
|
13
15
|
constructor(args: ParserArgs);
|
|
14
16
|
getInternalAddress(inputData: string): string | undefined;
|
|
15
17
|
parse(tx: BlockbookTx): Promise<TxSpecific | undefined>;
|
|
16
18
|
}
|
|
17
|
-
//# sourceMappingURL=thor.d.ts.map
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -16,66 +7,59 @@ exports.Parser = void 0;
|
|
|
16
7
|
const ethers_1 = require("ethers");
|
|
17
8
|
const types_1 = require("../../types");
|
|
18
9
|
const thor_1 = __importDefault(require("./abi/thor"));
|
|
19
|
-
const utils_1 = require("./utils");
|
|
20
10
|
const constants_1 = require("./constants");
|
|
11
|
+
const utils_1 = require("./utils");
|
|
21
12
|
const SWAP_TYPES = ['SWAP', '=', 's'];
|
|
22
13
|
class Parser {
|
|
23
14
|
constructor(args) {
|
|
24
15
|
this.abiInterface = new ethers_1.ethers.utils.Interface(thor_1.default);
|
|
25
|
-
this.
|
|
26
|
-
|
|
16
|
+
this.supportedFunctions = {
|
|
17
|
+
depositSigHash: this.abiInterface.getSighash('deposit'),
|
|
18
|
+
transferOutSigHash: this.abiInterface.getSighash('transferOut')
|
|
19
|
+
};
|
|
27
20
|
// TODO: Router contract can change, use /inbound_addresses endpoint to determine current router contract
|
|
28
21
|
this.routerContract = {
|
|
29
22
|
mainnet: constants_1.THOR_ROUTER_CONTRACT_MAINNET,
|
|
30
|
-
ropsten: constants_1.THOR_ROUTER_CONTRACT_ROPSTEN
|
|
23
|
+
ropsten: constants_1.THOR_ROUTER_CONTRACT_ROPSTEN
|
|
31
24
|
}[args.network];
|
|
32
25
|
}
|
|
33
26
|
// detect address associated with transferOut internal transaction
|
|
34
27
|
getInternalAddress(inputData) {
|
|
35
|
-
if (utils_1.getSigHash(inputData) !== this.transferOutSigHash)
|
|
28
|
+
if ((0, utils_1.getSigHash)(inputData) !== this.supportedFunctions.transferOutSigHash)
|
|
36
29
|
return;
|
|
37
|
-
const result = this.abiInterface.decodeFunctionData(this.transferOutSigHash, inputData);
|
|
30
|
+
const result = this.abiInterface.decodeFunctionData(this.supportedFunctions.transferOutSigHash, inputData);
|
|
38
31
|
const [type] = result.memo.split(':');
|
|
39
32
|
if (type !== 'OUT' || type !== 'REFUND')
|
|
40
33
|
return;
|
|
41
34
|
return result.to;
|
|
42
35
|
}
|
|
43
|
-
parse(tx) {
|
|
36
|
+
async parse(tx) {
|
|
44
37
|
var _a;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return decoded.args;
|
|
57
|
-
default:
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
})();
|
|
61
|
-
// We didn't recognise the sigHash - exit
|
|
62
|
-
if (!result)
|
|
63
|
-
return;
|
|
64
|
-
const data = {
|
|
65
|
-
method: decoded.name,
|
|
66
|
-
parser: types_1.TxParser.Thor,
|
|
67
|
-
};
|
|
68
|
-
const [type] = result.memo.split(':');
|
|
69
|
-
if (SWAP_TYPES.includes(type) || type === 'OUT') {
|
|
70
|
-
return { trade: { dexName: types_1.Dex.Thor, type: types_1.TradeType.Trade, memo: result.memo }, data };
|
|
71
|
-
}
|
|
72
|
-
if (type === 'REFUND') {
|
|
73
|
-
return { trade: { dexName: types_1.Dex.Thor, type: types_1.TradeType.Refund, memo: result.memo }, data };
|
|
74
|
-
}
|
|
75
|
-
// We encountered a case we thought we'd support, but don't - exit
|
|
38
|
+
const txData = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
39
|
+
if (!(0, utils_1.txInteractsWithContract)(tx, this.routerContract))
|
|
40
|
+
return;
|
|
41
|
+
if (!txData)
|
|
42
|
+
return;
|
|
43
|
+
const txSigHash = (0, utils_1.getSigHash)(txData);
|
|
44
|
+
if (!Object.values(this.supportedFunctions).some((hash) => hash === txSigHash))
|
|
45
|
+
return;
|
|
46
|
+
const decoded = this.abiInterface.parseTransaction({ data: txData });
|
|
47
|
+
// failed to decode input data
|
|
48
|
+
if (!decoded)
|
|
76
49
|
return;
|
|
77
|
-
|
|
50
|
+
const data = {
|
|
51
|
+
method: decoded.name,
|
|
52
|
+
parser: types_1.TxParser.Thor
|
|
53
|
+
};
|
|
54
|
+
const [type] = decoded.args.memo.split(':');
|
|
55
|
+
if (SWAP_TYPES.includes(type) || type === 'OUT') {
|
|
56
|
+
return { trade: { dexName: types_1.Dex.Thor, type: types_1.TradeType.Trade, memo: decoded.args.memo }, data };
|
|
57
|
+
}
|
|
58
|
+
if (type === 'REFUND') {
|
|
59
|
+
return { trade: { dexName: types_1.Dex.Thor, type: types_1.TradeType.Refund, memo: decoded.args.memo }, data };
|
|
60
|
+
}
|
|
61
|
+
// memo type not supported
|
|
62
|
+
return;
|
|
78
63
|
}
|
|
79
64
|
}
|
|
80
65
|
exports.Parser = Parser;
|
|
81
|
-
//# sourceMappingURL=thor.js.map
|
|
@@ -6,15 +6,15 @@ export interface ParserArgs {
|
|
|
6
6
|
provider: ethers.providers.JsonRpcProvider;
|
|
7
7
|
}
|
|
8
8
|
export declare class Parser implements SubParser {
|
|
9
|
-
abiInterface: ethers.utils.Interface;
|
|
10
9
|
network: Network;
|
|
11
10
|
provider: ethers.providers.JsonRpcProvider;
|
|
12
|
-
readonly addLiquidityEthSigHash: string;
|
|
13
|
-
readonly removeLiquidityEthSigHash: string;
|
|
14
11
|
readonly wethContract: string;
|
|
12
|
+
readonly abiInterface: ethers.utils.Interface;
|
|
13
|
+
readonly supportedFunctions: {
|
|
14
|
+
addLiquidityEthSigHash: string;
|
|
15
|
+
removeLiquidityEthSigHash: string;
|
|
16
|
+
};
|
|
15
17
|
constructor(args: ParserArgs);
|
|
16
18
|
parse(tx: BlockbookTx): Promise<TxSpecific | undefined>;
|
|
17
19
|
private static pairFor;
|
|
18
|
-
private getTransfers;
|
|
19
20
|
}
|
|
20
|
-
//# sourceMappingURL=uniV2.d.ts.map
|