@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.
Files changed (128) hide show
  1. package/dist/cjs/accountTrade.js +134 -239
  2. package/dist/cjs/accountTrade.js.map +1 -1
  3. package/dist/cjs/brokerTool.js +144 -290
  4. package/dist/cjs/brokerTool.js.map +1 -1
  5. package/dist/cjs/contracts/factories/ERC20__factory.js +9 -12
  6. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  7. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +9 -12
  8. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  9. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +9 -12
  10. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  11. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +9 -12
  12. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  13. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +9 -12
  14. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  15. package/dist/cjs/contracts/factories/ShareToken__factory.js +9 -12
  16. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  17. package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +9 -12
  18. package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
  19. package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +9 -12
  20. package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
  21. package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +9 -12
  22. package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
  23. package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +9 -12
  24. package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
  25. package/dist/cjs/contracts/index.js +1 -1
  26. package/dist/cjs/d8XMath.d.ts +7 -0
  27. package/dist/cjs/d8XMath.js +81 -61
  28. package/dist/cjs/d8XMath.js.map +1 -1
  29. package/dist/cjs/index.js +11 -11
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/liquidatorTool.js +80 -137
  32. package/dist/cjs/liquidatorTool.js.map +1 -1
  33. package/dist/cjs/liquidityProviderTool.js +33 -64
  34. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  35. package/dist/cjs/marketData.d.ts +8 -1
  36. package/dist/cjs/marketData.js +641 -949
  37. package/dist/cjs/marketData.js.map +1 -1
  38. package/dist/cjs/nodeSDKTypes.d.ts +1 -0
  39. package/dist/cjs/nodeSDKTypes.js +10 -22
  40. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  41. package/dist/cjs/orderReferrerTool.js +200 -321
  42. package/dist/cjs/orderReferrerTool.js.map +1 -1
  43. package/dist/cjs/perpetualDataHandler.d.ts +11 -0
  44. package/dist/cjs/perpetualDataHandler.js +422 -535
  45. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  46. package/dist/cjs/perpetualEventHandler.js +129 -190
  47. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  48. package/dist/cjs/priceFeeds.js +223 -335
  49. package/dist/cjs/priceFeeds.js.map +1 -1
  50. package/dist/cjs/traderDigests.js +20 -23
  51. package/dist/cjs/traderDigests.js.map +1 -1
  52. package/dist/cjs/traderInterface.js +54 -87
  53. package/dist/cjs/traderInterface.js.map +1 -1
  54. package/dist/cjs/triangulator.js +34 -38
  55. package/dist/cjs/triangulator.js.map +1 -1
  56. package/dist/cjs/utils.js +18 -32
  57. package/dist/cjs/utils.js.map +1 -1
  58. package/dist/cjs/version.d.ts +1 -1
  59. package/dist/cjs/version.js +1 -1
  60. package/dist/cjs/writeAccessHandler.js +78 -112
  61. package/dist/cjs/writeAccessHandler.js.map +1 -1
  62. package/dist/esm/accountTrade.js +126 -233
  63. package/dist/esm/accountTrade.js.map +1 -1
  64. package/dist/esm/brokerTool.js +136 -284
  65. package/dist/esm/brokerTool.js.map +1 -1
  66. package/dist/esm/contracts/factories/ERC20__factory.js +8 -12
  67. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  68. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +8 -12
  69. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  70. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +8 -12
  71. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  72. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +8 -12
  73. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  74. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +8 -12
  75. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  76. package/dist/esm/contracts/factories/ShareToken__factory.js +8 -12
  77. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  78. package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +8 -12
  79. package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
  80. package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +8 -12
  81. package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
  82. package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +8 -12
  83. package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
  84. package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +8 -12
  85. package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
  86. package/dist/esm/d8XMath.d.ts +7 -0
  87. package/dist/esm/d8XMath.js +77 -58
  88. package/dist/esm/d8XMath.js.map +1 -1
  89. package/dist/esm/liquidatorTool.js +77 -136
  90. package/dist/esm/liquidatorTool.js.map +1 -1
  91. package/dist/esm/liquidityProviderTool.js +30 -63
  92. package/dist/esm/liquidityProviderTool.js.map +1 -1
  93. package/dist/esm/marketData.d.ts +8 -1
  94. package/dist/esm/marketData.js +632 -942
  95. package/dist/esm/marketData.js.map +1 -1
  96. package/dist/esm/nodeSDKTypes.d.ts +1 -0
  97. package/dist/esm/nodeSDKTypes.js +36 -48
  98. package/dist/esm/nodeSDKTypes.js.map +1 -1
  99. package/dist/esm/orderReferrerTool.js +194 -317
  100. package/dist/esm/orderReferrerTool.js.map +1 -1
  101. package/dist/esm/perpetualDataHandler.d.ts +11 -0
  102. package/dist/esm/perpetualDataHandler.js +413 -528
  103. package/dist/esm/perpetualDataHandler.js.map +1 -1
  104. package/dist/esm/perpetualEventHandler.js +126 -188
  105. package/dist/esm/perpetualEventHandler.js.map +1 -1
  106. package/dist/esm/priceFeeds.js +218 -332
  107. package/dist/esm/priceFeeds.js.map +1 -1
  108. package/dist/esm/traderDigests.js +15 -19
  109. package/dist/esm/traderDigests.js.map +1 -1
  110. package/dist/esm/traderInterface.js +48 -83
  111. package/dist/esm/traderInterface.js.map +1 -1
  112. package/dist/esm/triangulator.js +34 -39
  113. package/dist/esm/triangulator.js.map +1 -1
  114. package/dist/esm/utils.js +16 -30
  115. package/dist/esm/utils.js.map +1 -1
  116. package/dist/esm/version.d.ts +1 -1
  117. package/dist/esm/version.js +1 -1
  118. package/dist/esm/version.js.map +1 -1
  119. package/dist/esm/writeAccessHandler.js +70 -106
  120. package/dist/esm/writeAccessHandler.js.map +1 -1
  121. package/package.json +1 -1
  122. package/src/d8XMath.ts +21 -0
  123. package/src/liquidityProviderTool.ts +5 -4
  124. package/src/marketData.ts +26 -0
  125. package/src/nodeSDKTypes.ts +1 -0
  126. package/src/perpetualDataHandler.ts +27 -0
  127. package/src/version.ts +1 -1
  128. 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
- var k = s.length - 1;
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
- var valBuff = Buffer.from(s, "ascii");
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
- var val = b.toString("ascii");
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
- var res = "";
68
- for (var k = 2; k < s.length; k = k + 2) {
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
- var _a;
82
- var shortCCY = fromBytes4HexString(s);
80
+ let shortCCY = fromBytes4HexString(s);
83
81
  // assume CCY is already short if not in the mapping file
84
- var longCCY = (_a = mapping.get(shortCCY)) !== null && _a !== void 0 ? _a : shortCCY;
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
- var e_1, _a;
95
- var shortCCY = undefined;
96
- try {
97
- for (var mapping_1 = __values(mapping), mapping_1_1 = mapping_1.next(); !mapping_1_1.done; mapping_1_1 = mapping_1.next()) {
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 !== null && shortCCY !== void 0 ? shortCCY : s;
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
- var _a;
123
- var ccy = s.split("-");
124
- var longCCY = "";
125
- for (var k = 0; k < ccy.length; k++) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const D8X_SDK_VERSION = "0.7.4";
1
+ export declare const D8X_SDK_VERSION = "0.7.6";
@@ -1,2 +1,2 @@
1
- export var D8X_SDK_VERSION = "0.7.4";
1
+ export const D8X_SDK_VERSION = "0.7.6";
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,eAAe,GAAG,OAAO,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 { floatToDec18 } from "./d8XMath";
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
- var WriteAccessHandler = /** @class */ (function (_super) {
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
- function WriteAccessHandler(config, signer) {
24
- var _this = _super.call(this, config) || this;
25
- _this.traderAddr = "";
26
- _this.signer = null;
27
- _this.gasLimit = 15000000;
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
- _this.privateKey = signer;
27
+ this.privateKey = signer;
30
28
  }
31
29
  else {
32
- _this.signer = signer;
30
+ this.signer = signer;
33
31
  }
34
32
  if (config.gasLimit != undefined) {
35
- _this.gasLimit = config.gasLimit;
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
- WriteAccessHandler.prototype.createProxyInstance = function (provider, overrides) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var wallet, _a;
48
- return __generator(this, function (_b) {
49
- switch (_b.label) {
50
- case 0:
51
- if (provider == undefined) {
52
- this.provider = new StaticJsonRpcProvider(this.nodeURL);
53
- }
54
- else {
55
- this.provider = provider;
56
- }
57
- if (!this.signer) {
58
- wallet = new Wallet(this.privateKey);
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
- WriteAccessHandler.prototype.setAllowance = function (symbol, amount, overrides) {
80
- return __awaiter(this, void 0, void 0, function () {
81
- var symbolarr, marginTokenAddr, amountDec18;
82
- return __generator(this, function (_a) {
83
- symbolarr = symbol.split("-");
84
- symbol = symbol.length == 3 ? symbolarr[2] : symbolarr[0];
85
- marginTokenAddr = this.symbolToTokenAddrMap.get(symbol);
86
- if (marginTokenAddr == undefined || this.signer == null) {
87
- throw Error("No margin token or signer defined, call createProxyInstance");
88
- }
89
- if (amount == undefined) {
90
- amountDec18 = MAX_UINT_256;
91
- }
92
- else {
93
- amountDec18 = floatToDec18(amount);
94
- }
95
- return [2 /*return*/, WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides)];
96
- });
97
- });
98
- };
99
- WriteAccessHandler._setAllowance = function (tokenAddr, proxyAddr, signer, amount, overrides) {
100
- return __awaiter(this, void 0, void 0, function () {
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
- WriteAccessHandler.prototype.getAddress = function () {
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
- WriteAccessHandler.prototype.swapForMockToken = function (symbol, amountToPay, overrides) {
127
- return __awaiter(this, void 0, void 0, function () {
128
- var tokenAddress, tokenToSwap, swapAddress, contract;
129
- return __generator(this, function (_a) {
130
- switch (_a.label) {
131
- case 0:
132
- if (this.signer == null) {
133
- throw Error("no wallet initialized. Use createProxyInstance().");
134
- }
135
- tokenAddress = this.getMarginTokenFromSymbol(symbol);
136
- if (tokenAddress == undefined) {
137
- throw Error("symbols not found");
138
- }
139
- tokenToSwap = new Map(Object.entries(require("./config/mockSwap.json")));
140
- swapAddress = tokenToSwap.get(tokenAddress);
141
- if (swapAddress == undefined) {
142
- throw Error("No swap contract found for symbol.");
143
- }
144
- contract = new Contract(swapAddress, MOCK_TOKEN_SWAP_ABI, this.signer);
145
- if (overrides && overrides.value !== undefined) {
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
- return WriteAccessHandler;
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":"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"}
1
+ {"version":3,"file":"writeAccessHandler.js","sourceRoot":"","sources":["../../src/writeAccessHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,QAAQ,EAAoD,MAAM,0BAA0B,CAAC;AACrH,OAAO,EAAY,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAiB,MAAM,gBAAgB,CAAC;AAClF,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,oBAAoB;IAKlE;;;OAGG;IACH,YAAmB,MAAqB,EAAE,MAAuB;QAC/D,KAAK,CAAC,MAAM,CAAC,CAAC;QARN,eAAU,GAAW,EAAE,CAAC;QACxB,WAAM,GAAkB,IAAI,CAAC;QAC7B,aAAQ,GAAW,QAAU,CAAC;QAOtC,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;QACD,IAAI,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;SACjC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,QAAmB,EAAE,SAAyB;QAC7E,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C;QACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAe,EAAE,SAAqB;QAC9E,8BAA8B;QAC9B,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1D,gCAAgC;QAChC,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,eAAe,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvD,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;SAC5E;QACD,IAAI,WAAsB,CAAC;QAC3B,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,WAAW,GAAG,YAAY,CAAC;SAC5B;aAAM;YACL,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAE,CAAC,CAAC;SACnF;QACD,OAAO,kBAAkB,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAChH,CAAC;IAES,MAAM,CAAC,KAAK,CAAC,aAAa,CAClC,SAAiB,EACjB,SAAiB,EACjB,MAAc,EACd,MAAiB,EACjB,SAAqB;QAErB,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,gBAAgB,CAC3B,MAAc,EACd,WAAmB,EACnB,SAA4B;QAE5B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvB,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAC;SAClE;QACD,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,YAAY,IAAI,SAAS,EAAE;YAC7B,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;SAClC;QACD,IAAI,WAAW,GAAG,IAAI,GAAG,CAAiB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,WAAW,IAAI,SAAS,EAAE;YAC5B,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACnD;QACD,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9C,MAAM,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACpE;QACD,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC;YACpC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC;YAC9B,GAAG,SAAS;SACO,CAAC,CAAC;IACzB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d8x/perpetuals-sdk",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "Node TypeScript SDK for D8X Perpetual Futures",
5
5
  "author": "D8X",
6
6
  "homepage": "https://github.com/D8-X/d8x-futures-node-sdk#readme",
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 { Contract, ContractTransaction, Overrides } from "@ethersproject/contracts";
1
+ import { ContractTransaction, Overrides } from "@ethersproject/contracts";
2
2
  import { Signer } from "@ethersproject/abstract-signer";
3
- import { dec18ToFloat, floatToDec18 } from "./d8XMath";
4
- import { ERC20_ABI, NodeSDKConfig } from "./nodeSDKTypes";
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
- floatToDec18(amountCC),
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.
@@ -77,6 +77,7 @@ export interface PoolStaticInfo {
77
77
  poolId: number;
78
78
  poolMarginSymbol: string;
79
79
  poolMarginTokenAddr: string;
80
+ poolMarginTokenDecimals?: number;
80
81
  shareTokenAddr: string;
81
82
  oracleFactoryAddr: string;
82
83
  isRunning: boolean;
@@ -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.4";
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 { floatToDec18 } from "./d8XMath";
9
- import { ERC20_ABI, MAX_UINT_256, MOCK_TOKEN_SWAP_ABI, NodeSDKConfig } from "./nodeSDKTypes";
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 = floatToDec18(amount);
79
+ amountDec18 = floatToDecN(amount, this.getMarginTokenDecimalsFromSymbol(symbol)!);
80
80
  }
81
81
  return WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides);
82
82
  }