@d8x/perpetuals-sdk 0.7.4 → 0.7.6
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/dist/cjs/accountTrade.js +134 -239
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.js +144 -290
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/contracts/factories/ERC20__factory.js +9 -12
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +9 -12
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +9 -12
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +9 -12
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +9 -12
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.js +9 -12
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/d8XMath.d.ts +7 -0
- package/dist/cjs/d8XMath.js +81 -61
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/index.js +11 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/liquidatorTool.js +80 -137
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.js +33 -64
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.d.ts +8 -1
- package/dist/cjs/marketData.js +641 -949
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +1 -0
- package/dist/cjs/nodeSDKTypes.js +10 -22
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderReferrerTool.js +200 -321
- package/dist/cjs/orderReferrerTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +11 -0
- package/dist/cjs/perpetualDataHandler.js +422 -535
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.js +129 -190
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +223 -335
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/traderDigests.js +20 -23
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.js +54 -87
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/triangulator.js +34 -38
- package/dist/cjs/triangulator.js.map +1 -1
- package/dist/cjs/utils.js +18 -32
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/writeAccessHandler.js +78 -112
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.js +126 -233
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.js +136 -284
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/contracts/factories/ERC20__factory.js +8 -12
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +8 -12
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +8 -12
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +8 -12
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +8 -12
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.js +8 -12
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +7 -0
- package/dist/esm/d8XMath.js +77 -58
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.js +77 -136
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.js +30 -63
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.d.ts +8 -1
- package/dist/esm/marketData.js +632 -942
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +1 -0
- package/dist/esm/nodeSDKTypes.js +36 -48
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderReferrerTool.js +194 -317
- package/dist/esm/orderReferrerTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +11 -0
- package/dist/esm/perpetualDataHandler.js +413 -528
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.js +126 -188
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +218 -332
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/traderDigests.js +15 -19
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.js +48 -83
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/triangulator.js +34 -39
- package/dist/esm/triangulator.js.map +1 -1
- package/dist/esm/utils.js +16 -30
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.js +70 -106
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/d8XMath.ts +21 -0
- package/src/liquidityProviderTool.ts +5 -4
- package/src/marketData.ts +26 -0
- package/src/nodeSDKTypes.ts +1 -0
- package/src/perpetualDataHandler.ts +27 -0
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +3 -3
package/dist/esm/utils.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __read, __values } from "tslib";
|
|
2
1
|
import { BigNumber } from "@ethersproject/bignumber";
|
|
3
2
|
import { Buffer } from "buffer";
|
|
4
3
|
/**
|
|
@@ -17,7 +16,7 @@ export function to4Chars(s) {
|
|
|
17
16
|
while (s.length < 4) {
|
|
18
17
|
s = s + "\0";
|
|
19
18
|
}
|
|
20
|
-
|
|
19
|
+
let k = s.length - 1;
|
|
21
20
|
while (s.length > 4 && k >= 0) {
|
|
22
21
|
// chop off vocals from the end of string
|
|
23
22
|
// e.g. MATIC -> MATC
|
|
@@ -40,7 +39,7 @@ export function to4Chars(s) {
|
|
|
40
39
|
*/
|
|
41
40
|
export function toBytes4(s) {
|
|
42
41
|
s = to4Chars(s);
|
|
43
|
-
|
|
42
|
+
let valBuff = Buffer.from(s, "ascii");
|
|
44
43
|
return valBuff;
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
@@ -51,7 +50,7 @@ export function toBytes4(s) {
|
|
|
51
50
|
* @returns {string} String decoded into to4Chars-type string without null characters
|
|
52
51
|
*/
|
|
53
52
|
export function fromBytes4(b) {
|
|
54
|
-
|
|
53
|
+
let val = b.toString("ascii");
|
|
55
54
|
val = val.replace(/\0/g, "");
|
|
56
55
|
return val;
|
|
57
56
|
}
|
|
@@ -64,8 +63,8 @@ export function fromBytes4(b) {
|
|
|
64
63
|
* returned by the smart contract as bytes4
|
|
65
64
|
*/
|
|
66
65
|
export function fromBytes4HexString(s) {
|
|
67
|
-
|
|
68
|
-
for (
|
|
66
|
+
let res = "";
|
|
67
|
+
for (let k = 2; k < s.length; k = k + 2) {
|
|
69
68
|
res = res + String.fromCharCode(parseInt(s.substring(k, k + 2), 16));
|
|
70
69
|
}
|
|
71
70
|
res = res.replace(/\0/g, "");
|
|
@@ -78,10 +77,9 @@ export function fromBytes4HexString(s) {
|
|
|
78
77
|
* @returns {string} User friendly currency symbol, e.g. "MATIC"
|
|
79
78
|
*/
|
|
80
79
|
export function contractSymbolToSymbol(s, mapping) {
|
|
81
|
-
|
|
82
|
-
var shortCCY = fromBytes4HexString(s);
|
|
80
|
+
let shortCCY = fromBytes4HexString(s);
|
|
83
81
|
// assume CCY is already short if not in the mapping file
|
|
84
|
-
|
|
82
|
+
let longCCY = mapping.get(shortCCY) ?? shortCCY;
|
|
85
83
|
return longCCY;
|
|
86
84
|
}
|
|
87
85
|
/**
|
|
@@ -91,25 +89,14 @@ export function contractSymbolToSymbol(s, mapping) {
|
|
|
91
89
|
* @returns {Buffer} Buffer that can be used with smart contract to identify tokens
|
|
92
90
|
*/
|
|
93
91
|
export function symbolToContractSymbol(s, mapping) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
var _b = __read(mapping_1_1.value, 2), k = _b[0], v = _b[1];
|
|
99
|
-
if (v == s) {
|
|
100
|
-
shortCCY = k;
|
|
101
|
-
}
|
|
92
|
+
let shortCCY = undefined;
|
|
93
|
+
for (let [k, v] of mapping) {
|
|
94
|
+
if (v == s) {
|
|
95
|
+
shortCCY = k;
|
|
102
96
|
}
|
|
103
97
|
}
|
|
104
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
105
|
-
finally {
|
|
106
|
-
try {
|
|
107
|
-
if (mapping_1_1 && !mapping_1_1.done && (_a = mapping_1.return)) _a.call(mapping_1);
|
|
108
|
-
}
|
|
109
|
-
finally { if (e_1) throw e_1.error; }
|
|
110
|
-
}
|
|
111
98
|
// if not in the mapping file, assume ccy is already valid
|
|
112
|
-
shortCCY = shortCCY
|
|
99
|
+
shortCCY = shortCCY ?? s;
|
|
113
100
|
return toBytes4(shortCCY);
|
|
114
101
|
}
|
|
115
102
|
/**
|
|
@@ -119,11 +106,10 @@ export function symbolToContractSymbol(s, mapping) {
|
|
|
119
106
|
* @returns {string} long format e.g. MATIC. if not found the element is ""
|
|
120
107
|
*/
|
|
121
108
|
export function symbol4BToLongSymbol(s, mapping) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var sym = (_a = mapping.get(ccy[k])) !== null && _a !== void 0 ? _a : to4Chars(ccy[k]);
|
|
109
|
+
let ccy = s.split("-");
|
|
110
|
+
let longCCY = "";
|
|
111
|
+
for (let k = 0; k < ccy.length; k++) {
|
|
112
|
+
let sym = mapping.get(ccy[k]) ?? to4Chars(ccy[k]);
|
|
127
113
|
sym = sym.replace(/\0/g, "");
|
|
128
114
|
longCCY = longCCY + "-" + sym;
|
|
129
115
|
}
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const D8X_SDK_VERSION = "0.7.
|
|
1
|
+
export declare const D8X_SDK_VERSION = "0.7.6";
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const D8X_SDK_VERSION = "0.7.6";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { __assign, __awaiter, __extends, __generator } from "tslib";
|
|
2
1
|
import { Contract } from "@ethersproject/contracts";
|
|
3
2
|
import { StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
4
3
|
import { parseEther } from "@ethersproject/units";
|
|
5
4
|
import { Wallet } from "@ethersproject/wallet";
|
|
6
5
|
import { ERC20__factory } from "./contracts";
|
|
7
|
-
import {
|
|
6
|
+
import { floatToDecN } from "./d8XMath";
|
|
8
7
|
import { MAX_UINT_256, MOCK_TOKEN_SWAP_ABI } from "./nodeSDKTypes";
|
|
9
8
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
10
9
|
/**
|
|
@@ -14,27 +13,25 @@ import PerpetualDataHandler from "./perpetualDataHandler";
|
|
|
14
13
|
* require gas-payments.
|
|
15
14
|
* @extends PerpetualDataHandler
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
|
-
__extends(WriteAccessHandler, _super);
|
|
16
|
+
export default class WriteAccessHandler extends PerpetualDataHandler {
|
|
19
17
|
/**
|
|
20
18
|
* Constructor
|
|
21
19
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
22
20
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
constructor(config, signer) {
|
|
22
|
+
super(config);
|
|
23
|
+
this.traderAddr = "";
|
|
24
|
+
this.signer = null;
|
|
25
|
+
this.gasLimit = 15000000;
|
|
28
26
|
if (typeof signer == "string") {
|
|
29
|
-
|
|
27
|
+
this.privateKey = signer;
|
|
30
28
|
}
|
|
31
29
|
else {
|
|
32
|
-
|
|
30
|
+
this.signer = signer;
|
|
33
31
|
}
|
|
34
32
|
if (config.gasLimit != undefined) {
|
|
35
|
-
|
|
33
|
+
this.gasLimit = config.gasLimit;
|
|
36
34
|
}
|
|
37
|
-
return _this;
|
|
38
35
|
}
|
|
39
36
|
/**
|
|
40
37
|
* Initialize the writeAccessHandler-Class with this function
|
|
@@ -42,80 +39,55 @@ var WriteAccessHandler = /** @class */ (function (_super) {
|
|
|
42
39
|
* about perpetual currencies
|
|
43
40
|
* @param provider optional provider
|
|
44
41
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.signer = wallet.connect(this.provider);
|
|
60
|
-
}
|
|
61
|
-
return [4 /*yield*/, this.initContractsAndData(this.signer, overrides)];
|
|
62
|
-
case 1:
|
|
63
|
-
_b.sent();
|
|
64
|
-
_a = this;
|
|
65
|
-
return [4 /*yield*/, this.signer.getAddress()];
|
|
66
|
-
case 2:
|
|
67
|
-
_a.traderAddr = _b.sent();
|
|
68
|
-
return [2 /*return*/];
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
};
|
|
42
|
+
async createProxyInstance(provider, overrides) {
|
|
43
|
+
if (provider == undefined) {
|
|
44
|
+
this.provider = new StaticJsonRpcProvider(this.nodeURL);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.provider = provider;
|
|
48
|
+
}
|
|
49
|
+
if (!this.signer) {
|
|
50
|
+
const wallet = new Wallet(this.privateKey);
|
|
51
|
+
this.signer = wallet.connect(this.provider);
|
|
52
|
+
}
|
|
53
|
+
await this.initContractsAndData(this.signer, overrides);
|
|
54
|
+
this.traderAddr = await this.signer.getAddress();
|
|
55
|
+
}
|
|
73
56
|
/**
|
|
74
57
|
* Set allowance for ar margin token (e.g., MATIC, ETH, USDC)
|
|
75
58
|
* @param symbol token in 'long-form' such as MATIC, symbol also fine (ETH-USD-MATIC)
|
|
76
59
|
* @param amount optional, amount to approve if not 'infinity'
|
|
77
60
|
* @returns ContractTransaction
|
|
78
61
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var marginToken;
|
|
102
|
-
return __generator(this, function (_a) {
|
|
103
|
-
switch (_a.label) {
|
|
104
|
-
case 0:
|
|
105
|
-
marginToken = ERC20__factory.connect(tokenAddr, signer);
|
|
106
|
-
return [4 /*yield*/, marginToken.approve(proxyAddr, amount, overrides || {})];
|
|
107
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
};
|
|
62
|
+
async setAllowance(symbol, amount, overrides) {
|
|
63
|
+
//extract margin-currency name
|
|
64
|
+
let symbolarr = symbol.split("-");
|
|
65
|
+
symbol = symbol.length == 3 ? symbolarr[2] : symbolarr[0];
|
|
66
|
+
//note: symbol is in long format
|
|
67
|
+
let marginTokenAddr = this.symbolToTokenAddrMap.get(symbol);
|
|
68
|
+
if (marginTokenAddr == undefined || this.signer == null) {
|
|
69
|
+
throw Error("No margin token or signer defined, call createProxyInstance");
|
|
70
|
+
}
|
|
71
|
+
let amountDec18;
|
|
72
|
+
if (amount == undefined) {
|
|
73
|
+
amountDec18 = MAX_UINT_256;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
amountDec18 = floatToDecN(amount, this.getMarginTokenDecimalsFromSymbol(symbol));
|
|
77
|
+
}
|
|
78
|
+
return WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides);
|
|
79
|
+
}
|
|
80
|
+
static async _setAllowance(tokenAddr, proxyAddr, signer, amount, overrides) {
|
|
81
|
+
const marginToken = ERC20__factory.connect(tokenAddr, signer);
|
|
82
|
+
return await marginToken.approve(proxyAddr, amount, overrides || {});
|
|
83
|
+
}
|
|
112
84
|
/**
|
|
113
85
|
* Address corresponding to the private key used to instantiate this class.
|
|
114
86
|
* @returns {string} Address of this wallet.
|
|
115
87
|
*/
|
|
116
|
-
|
|
88
|
+
getAddress() {
|
|
117
89
|
return this.traderAddr;
|
|
118
|
-
}
|
|
90
|
+
}
|
|
119
91
|
/**
|
|
120
92
|
* Converts a given amount of chain native currency (test MATIC)
|
|
121
93
|
* into a mock token used for trading on testnet, with a rate of 1:100_000
|
|
@@ -123,35 +95,27 @@ var WriteAccessHandler = /** @class */ (function (_super) {
|
|
|
123
95
|
* @param amountToPay Amount in chain currency, e.g. "0.1" for 0.1 MATIC
|
|
124
96
|
* @returns Transaction object
|
|
125
97
|
*/
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
throw Error("Pass value to send in function call, not overrides.");
|
|
147
|
-
}
|
|
148
|
-
return [4 /*yield*/, contract.swapToMockToken(__assign({ value: parseEther(amountToPay) }, overrides))];
|
|
149
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
150
|
-
}
|
|
151
|
-
});
|
|
98
|
+
async swapForMockToken(symbol, amountToPay, overrides) {
|
|
99
|
+
if (this.signer == null) {
|
|
100
|
+
throw Error("no wallet initialized. Use createProxyInstance().");
|
|
101
|
+
}
|
|
102
|
+
let tokenAddress = this.getMarginTokenFromSymbol(symbol);
|
|
103
|
+
if (tokenAddress == undefined) {
|
|
104
|
+
throw Error("symbols not found");
|
|
105
|
+
}
|
|
106
|
+
let tokenToSwap = new Map(Object.entries(require("./config/mockSwap.json")));
|
|
107
|
+
let swapAddress = tokenToSwap.get(tokenAddress);
|
|
108
|
+
if (swapAddress == undefined) {
|
|
109
|
+
throw Error("No swap contract found for symbol.");
|
|
110
|
+
}
|
|
111
|
+
let contract = new Contract(swapAddress, MOCK_TOKEN_SWAP_ABI, this.signer);
|
|
112
|
+
if (overrides && overrides.value !== undefined) {
|
|
113
|
+
throw Error("Pass value to send in function call, not overrides.");
|
|
114
|
+
}
|
|
115
|
+
return await contract.swapToMockToken({
|
|
116
|
+
value: parseEther(amountToPay),
|
|
117
|
+
...overrides,
|
|
152
118
|
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
}(PerpetualDataHandler));
|
|
156
|
-
export default WriteAccessHandler;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
157
121
|
//# sourceMappingURL=writeAccessHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeAccessHandler.js","sourceRoot":"","sources":["../../src/writeAccessHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writeAccessHandler.js","sourceRoot":"","sources":["../../src/writeAccessHandler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/d8XMath.ts
CHANGED
|
@@ -117,6 +117,27 @@ export function floatToDec18(x: number): BigNumber {
|
|
|
117
117
|
return xIntBig.add(xDec).mul(sg);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* @param {number} x number (float)
|
|
123
|
+
* @param {number} decimals number of decimals
|
|
124
|
+
* @returns {BigNumber} x as a BigNumber in Dec18 format
|
|
125
|
+
*/
|
|
126
|
+
export function floatToDecN(x: number, decimals: number): BigNumber {
|
|
127
|
+
// float number to dec 18
|
|
128
|
+
if (x === 0) {
|
|
129
|
+
return BigNumber.from(0);
|
|
130
|
+
}
|
|
131
|
+
let sg = Math.sign(x);
|
|
132
|
+
x = Math.abs(x);
|
|
133
|
+
let strX = x.toFixed(decimals);
|
|
134
|
+
const arrX = strX.split(".");
|
|
135
|
+
let xInt = BigNumber.from(arrX[0]);
|
|
136
|
+
let xDec = BigNumber.from(arrX[1]);
|
|
137
|
+
let xIntBig = xInt.mul(BigNumber.from(10).pow(BigNumber.from(decimals)));
|
|
138
|
+
return xIntBig.add(xDec).mul(sg);
|
|
139
|
+
}
|
|
140
|
+
|
|
120
141
|
/**
|
|
121
142
|
* 9 are rounded up regardless of precision, e.g, 0.1899000 at precision 6 results in 3
|
|
122
143
|
* @param x
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ContractTransaction, Overrides } from "@ethersproject/contracts";
|
|
2
2
|
import { Signer } from "@ethersproject/abstract-signer";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { floatToDec18, floatToDecN } from "./d8XMath";
|
|
4
|
+
import { NodeSDKConfig } from "./nodeSDKTypes";
|
|
5
5
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
6
6
|
import WriteAccessHandler from "./writeAccessHandler";
|
|
7
7
|
/**
|
|
@@ -65,9 +65,10 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
|
|
|
65
65
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
66
66
|
}
|
|
67
67
|
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
68
|
+
let decimals = this.getMarginTokenDecimalsFromSymbol(poolSymbolName);
|
|
68
69
|
let tx = await this.proxyContract.addLiquidity(
|
|
69
70
|
poolId,
|
|
70
|
-
|
|
71
|
+
floatToDecN(amountCC, decimals!),
|
|
71
72
|
overrides || { gasLimit: this.gasLimit }
|
|
72
73
|
);
|
|
73
74
|
return tx;
|
package/src/marketData.ts
CHANGED
|
@@ -874,6 +874,32 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
874
874
|
return state;
|
|
875
875
|
}
|
|
876
876
|
|
|
877
|
+
/**
|
|
878
|
+
* Query recent pool state from blockchain, not including perpetual states
|
|
879
|
+
* @param symbol symbol of the form USDC
|
|
880
|
+
* @param indexPrices S2 and S3 prices/isMarketOpen if not provided fetch via REST API
|
|
881
|
+
* @returns PoolState reference
|
|
882
|
+
*/
|
|
883
|
+
public async getPoolState(poolSymbol: string, overrides?: CallOverrides): Promise<PoolState> {
|
|
884
|
+
if (this.proxyContract == null) {
|
|
885
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
886
|
+
}
|
|
887
|
+
const poolId = this._poolSymbolOrIdToPoolId(poolSymbol);
|
|
888
|
+
const pool = await this.proxyContract.getLiquidityPool(poolId, overrides || {});
|
|
889
|
+
let state: PoolState = {
|
|
890
|
+
isRunning: pool.isRunning,
|
|
891
|
+
poolSymbol: poolSymbol,
|
|
892
|
+
marginTokenAddr: pool.marginTokenAddress,
|
|
893
|
+
poolShareTokenAddr: pool.shareTokenAddress,
|
|
894
|
+
defaultFundCashCC: ABK64x64ToFloat(pool.fDefaultFundCashCC),
|
|
895
|
+
pnlParticipantCashCC: ABK64x64ToFloat(pool.fPnLparticipantsCashCC),
|
|
896
|
+
totalTargetAMMFundSizeCC: ABK64x64ToFloat(pool.fTargetAMMFundSize),
|
|
897
|
+
brokerCollateralLotSize: ABK64x64ToFloat(pool.fBrokerCollateralLotSize),
|
|
898
|
+
perpetuals: [],
|
|
899
|
+
};
|
|
900
|
+
return state;
|
|
901
|
+
}
|
|
902
|
+
|
|
877
903
|
/**
|
|
878
904
|
* Query perpetual static info.
|
|
879
905
|
* This information is queried once at createProxyInstance-time and remains static after that.
|
package/src/nodeSDKTypes.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { AddressZero } from "@ethersproject/constants";
|
|
|
5
5
|
import { CallOverrides, Contract, ContractInterface } from "@ethersproject/contracts";
|
|
6
6
|
import { Network, Provider } from "@ethersproject/providers";
|
|
7
7
|
import {
|
|
8
|
+
ERC20__factory,
|
|
8
9
|
IPerpetualManager,
|
|
9
10
|
IPerpetualManager__factory,
|
|
10
11
|
LimitOrderBook,
|
|
@@ -166,10 +167,12 @@ export default class PerpetualDataHandler {
|
|
|
166
167
|
this.nestedPerpetualIDs = poolInfo.nestedPerpetualIDs;
|
|
167
168
|
|
|
168
169
|
for (let j = 0; j < poolInfo.nestedPerpetualIDs.length; j++) {
|
|
170
|
+
let decimals = await ERC20__factory.connect(poolInfo.poolMarginTokenAddr[j], this.provider!).decimals();
|
|
169
171
|
let info: PoolStaticInfo = {
|
|
170
172
|
poolId: j + 1,
|
|
171
173
|
poolMarginSymbol: "", //fill later
|
|
172
174
|
poolMarginTokenAddr: poolInfo.poolMarginTokenAddr[j],
|
|
175
|
+
poolMarginTokenDecimals: decimals,
|
|
173
176
|
shareTokenAddr: poolInfo.poolShareTokenAddr[j],
|
|
174
177
|
oracleFactoryAddr: poolInfo.oracleFactory,
|
|
175
178
|
isRunning: poolInfo.poolShareTokenAddr[j] != AddressZero,
|
|
@@ -1083,6 +1086,11 @@ export default class PerpetualDataHandler {
|
|
|
1083
1086
|
return -1;
|
|
1084
1087
|
}
|
|
1085
1088
|
|
|
1089
|
+
/**
|
|
1090
|
+
*
|
|
1091
|
+
* @param symbol Symbol of the form USDC
|
|
1092
|
+
* @returns Address of the corresponding token
|
|
1093
|
+
*/
|
|
1086
1094
|
public getMarginTokenFromSymbol(symbol: string): string | undefined {
|
|
1087
1095
|
let pools = this.poolStaticInfos!;
|
|
1088
1096
|
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
|
|
@@ -1097,6 +1105,25 @@ export default class PerpetualDataHandler {
|
|
|
1097
1105
|
return undefined;
|
|
1098
1106
|
}
|
|
1099
1107
|
|
|
1108
|
+
/**
|
|
1109
|
+
*
|
|
1110
|
+
* @param symbol Symbol of the form USDC
|
|
1111
|
+
* @returns Decimals of the corresponding token
|
|
1112
|
+
*/
|
|
1113
|
+
public getMarginTokenDecimalsFromSymbol(symbol: string): number | undefined {
|
|
1114
|
+
let pools = this.poolStaticInfos!;
|
|
1115
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
|
|
1116
|
+
let k = 0;
|
|
1117
|
+
while (k < pools.length) {
|
|
1118
|
+
if (pools[k].poolId == poolId) {
|
|
1119
|
+
// pool found
|
|
1120
|
+
return pools[k].poolMarginTokenDecimals;
|
|
1121
|
+
}
|
|
1122
|
+
k++;
|
|
1123
|
+
}
|
|
1124
|
+
return undefined;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1100
1127
|
/**
|
|
1101
1128
|
* Get ABI for LimitOrderBook, Proxy, or Share Pool Token
|
|
1102
1129
|
* @param contract name of contract: proxy|lob|sharetoken
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "0.7.
|
|
1
|
+
export const D8X_SDK_VERSION = "0.7.6";
|
|
@@ -5,8 +5,8 @@ import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
|
5
5
|
import { parseEther } from "@ethersproject/units";
|
|
6
6
|
import { Wallet } from "@ethersproject/wallet";
|
|
7
7
|
import { ERC20__factory } from "./contracts";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { floatToDecN } from "./d8XMath";
|
|
9
|
+
import { MAX_UINT_256, MOCK_TOKEN_SWAP_ABI, NodeSDKConfig } from "./nodeSDKTypes";
|
|
10
10
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -76,7 +76,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
|
|
|
76
76
|
if (amount == undefined) {
|
|
77
77
|
amountDec18 = MAX_UINT_256;
|
|
78
78
|
} else {
|
|
79
|
-
amountDec18 =
|
|
79
|
+
amountDec18 = floatToDecN(amount, this.getMarginTokenDecimalsFromSymbol(symbol)!);
|
|
80
80
|
}
|
|
81
81
|
return WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides);
|
|
82
82
|
}
|