@d8x/perpetuals-sdk 0.1.12 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/cjs/abi/testnet/IPerpetualManager.json +5215 -0
  2. package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
  3. package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  4. package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  5. package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  6. package/dist/cjs/accountTrade.js +441 -0
  7. package/dist/cjs/accountTrade.js.map +1 -0
  8. package/dist/{src → cjs}/brokerTool.js +31 -84
  9. package/dist/cjs/brokerTool.js.map +1 -0
  10. package/dist/cjs/config/defaultConfig.json +47 -0
  11. package/dist/cjs/config/mockSwap.json +4 -0
  12. package/dist/cjs/config/priceFeedConfig.json +104 -0
  13. package/dist/cjs/config/symbolList.json +13 -0
  14. package/dist/cjs/d8XMath.js.map +1 -0
  15. package/dist/cjs/index.js +29 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/liquidatorTool.js +287 -0
  18. package/dist/cjs/liquidatorTool.js.map +1 -0
  19. package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
  20. package/dist/cjs/liquidityProviderTool.js.map +1 -0
  21. package/dist/{src → cjs}/marketData.js +52 -134
  22. package/dist/cjs/marketData.js.map +1 -0
  23. package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
  24. package/dist/cjs/nodeSDKTypes.js +64 -0
  25. package/dist/cjs/nodeSDKTypes.js.map +1 -0
  26. package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
  27. package/dist/{src → cjs}/orderReferrerTool.js +114 -112
  28. package/dist/cjs/orderReferrerTool.js.map +1 -0
  29. package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
  30. package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
  31. package/dist/cjs/perpetualDataHandler.js.map +1 -0
  32. package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
  33. package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
  34. package/dist/cjs/perpetualEventHandler.js.map +1 -0
  35. package/dist/cjs/priceFeeds.js +466 -0
  36. package/dist/cjs/priceFeeds.js.map +1 -0
  37. package/dist/{src → cjs}/traderDigests.js +7 -43
  38. package/dist/cjs/traderDigests.js.map +1 -0
  39. package/dist/{src → cjs}/traderInterface.js +13 -66
  40. package/dist/cjs/traderInterface.js.map +1 -0
  41. package/dist/{src → cjs}/triangulator.js +2 -17
  42. package/dist/cjs/triangulator.js.map +1 -0
  43. package/dist/{src → cjs}/utils.js +3 -29
  44. package/dist/cjs/utils.js.map +1 -0
  45. package/dist/cjs/version.d.ts +1 -0
  46. package/dist/{src → cjs}/version.js +1 -1
  47. package/dist/cjs/version.js.map +1 -0
  48. package/dist/{src → cjs}/writeAccessHandler.js +12 -65
  49. package/dist/cjs/writeAccessHandler.js.map +1 -0
  50. package/dist/esm/abi/ERC20.json +288 -0
  51. package/dist/esm/abi/MockTokenSwap.json +186 -0
  52. package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
  53. package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
  54. package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
  55. package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
  56. package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
  57. package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
  58. package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  59. package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  60. package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  61. package/dist/esm/accountTrade.d.ts +221 -0
  62. package/dist/{src → esm}/accountTrade.js +22 -93
  63. package/dist/esm/accountTrade.js.map +1 -0
  64. package/dist/esm/brokerTool.d.ts +318 -0
  65. package/dist/esm/brokerTool.js +572 -0
  66. package/dist/esm/brokerTool.js.map +1 -0
  67. package/dist/esm/config/defaultConfig.json +47 -0
  68. package/dist/esm/config/mockSwap.json +4 -0
  69. package/dist/esm/config/priceFeedConfig.json +104 -0
  70. package/dist/esm/config/symbolList.json +13 -0
  71. package/dist/esm/d8XMath.d.ts +122 -0
  72. package/dist/esm/d8XMath.js +247 -0
  73. package/dist/esm/d8XMath.js.map +1 -0
  74. package/{src/index.ts → dist/esm/index.d.ts} +1 -15
  75. package/dist/esm/index.js +16 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/liquidatorTool.d.ts +158 -0
  78. package/dist/{src → esm}/liquidatorTool.js +10 -65
  79. package/dist/esm/liquidatorTool.js.map +1 -0
  80. package/dist/esm/liquidityProviderTool.d.ts +126 -0
  81. package/dist/esm/liquidityProviderTool.js +218 -0
  82. package/dist/esm/liquidityProviderTool.js.map +1 -0
  83. package/dist/esm/marketData.d.ts +309 -0
  84. package/dist/esm/marketData.js +1007 -0
  85. package/dist/esm/marketData.js.map +1 -0
  86. package/dist/esm/nodeSDKTypes.d.ts +266 -0
  87. package/dist/esm/nodeSDKTypes.js +60 -0
  88. package/dist/esm/nodeSDKTypes.js.map +1 -0
  89. package/dist/esm/orderReferrerTool.d.ts +196 -0
  90. package/dist/esm/orderReferrerTool.js +491 -0
  91. package/dist/esm/orderReferrerTool.js.map +1 -0
  92. package/dist/esm/perpetualDataHandler.d.ts +220 -0
  93. package/dist/esm/perpetualDataHandler.js +1060 -0
  94. package/dist/esm/perpetualDataHandler.js.map +1 -0
  95. package/dist/esm/perpetualEventHandler.d.ts +179 -0
  96. package/dist/esm/perpetualEventHandler.js +435 -0
  97. package/dist/esm/perpetualEventHandler.js.map +1 -0
  98. package/dist/esm/priceFeeds.d.ts +115 -0
  99. package/dist/{src → esm}/priceFeeds.js +16 -83
  100. package/dist/esm/priceFeeds.js.map +1 -0
  101. package/dist/esm/traderDigests.d.ts +21 -0
  102. package/dist/esm/traderDigests.js +80 -0
  103. package/dist/esm/traderDigests.js.map +1 -0
  104. package/dist/esm/traderInterface.d.ts +79 -0
  105. package/dist/esm/traderInterface.js +196 -0
  106. package/dist/esm/traderInterface.js.map +1 -0
  107. package/dist/esm/triangulator.d.ts +27 -0
  108. package/dist/esm/triangulator.js +110 -0
  109. package/dist/esm/triangulator.js.map +1 -0
  110. package/dist/esm/utils.d.ts +59 -0
  111. package/dist/esm/utils.js +138 -0
  112. package/dist/esm/utils.js.map +1 -0
  113. package/dist/esm/version.d.ts +1 -0
  114. package/dist/esm/version.js +2 -0
  115. package/dist/esm/version.js.map +1 -0
  116. package/dist/esm/writeAccessHandler.d.ts +50 -0
  117. package/dist/esm/writeAccessHandler.js +157 -0
  118. package/dist/esm/writeAccessHandler.js.map +1 -0
  119. package/package.json +16 -26
  120. package/dist/bundle.js +0 -36793
  121. package/dist/config/defaultConfig.json +0 -47
  122. package/dist/config/mockSwap.json +0 -4
  123. package/dist/config/priceFeedConfig.json +0 -104
  124. package/dist/config/symbolList.json +0 -13
  125. package/dist/src/index.js +0 -45
  126. package/dist/src/nodeSDKTypes.js +0 -115
  127. package/dist/src/version.d.ts +0 -1
  128. package/module.d.ts +0 -1
  129. package/src/accountTrade.ts +0 -392
  130. package/src/brokerTool.ts +0 -507
  131. package/src/d8XMath.ts +0 -319
  132. package/src/liquidatorTool.ts +0 -258
  133. package/src/liquidityProviderTool.ts +0 -186
  134. package/src/marketData.ts +0 -946
  135. package/src/nodeSDKTypes.ts +0 -293
  136. package/src/orderReferrerTool.ts +0 -389
  137. package/src/perpetualDataHandler.ts +0 -1061
  138. package/src/perpetualEventHandler.ts +0 -455
  139. package/src/priceFeeds.ts +0 -381
  140. package/src/traderDigests.ts +0 -91
  141. package/src/traderInterface.ts +0 -159
  142. package/src/triangulator.ts +0 -105
  143. package/src/utils.ts +0 -134
  144. package/src/version.ts +0 -1
  145. package/src/writeAccessHandler.ts +0 -127
  146. /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
  147. /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
  148. /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
  149. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
  150. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
  151. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
  152. /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
  153. /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
  154. /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
  155. /package/dist/{src → cjs}/d8XMath.js +0 -0
  156. /package/dist/{src → cjs}/index.d.ts +0 -0
  157. /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
  158. /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
  159. /package/dist/{src → cjs}/marketData.d.ts +0 -0
  160. /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
  161. /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
  162. /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
  163. /package/dist/{src → cjs}/triangulator.d.ts +0 -0
  164. /package/dist/{src → cjs}/utils.d.ts +0 -0
  165. /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
@@ -0,0 +1,110 @@
1
+ import { __read } from "tslib";
2
+ var Triangulator = /** @class */ (function () {
3
+ function Triangulator() {
4
+ }
5
+ /**
6
+ * Find all possible triangulation paths
7
+ * @param ccyBase array of base currencies ['BTC', 'ETH', 'MATIC', ...]
8
+ * @param ccyQuote array of quote currencies corresponding to base ['USD', 'USD', ...]
9
+ * @param pair pair we want to calculate, e.g. BTC-USDC
10
+ * @returns array of different paths for which multiplication leads to
11
+ * desired pair, e.g. [['MATIC-USD'], ['MATIC-ETH', 'ETH-USD']]
12
+ */
13
+ Triangulator.findPath = function (ccyBase, ccyQuote, pair) {
14
+ var _a = __read(pair.split("-"), 2), base = _a[0], quote = _a[1];
15
+ var paths = new Array();
16
+ for (var k = 0; k < ccyBase.length; k++) {
17
+ var currentPath = [];
18
+ if (ccyBase[k] == base) {
19
+ currentPath.push(ccyBase[k] + "-" + ccyQuote[k]);
20
+ if (ccyQuote[k] == quote) {
21
+ // we are done
22
+ paths.push(currentPath);
23
+ }
24
+ else {
25
+ // find path for ccyQuote[k]-quote without the currency
26
+ var newBase = new Array();
27
+ var newQuote = new Array();
28
+ for (var j = 0; j < ccyBase.length; j++) {
29
+ if (j != k && ccyQuote[j] + "-" + ccyBase[j] != ccyBase[k] + "-" + ccyQuote[k]) {
30
+ newBase.push(ccyBase[j]);
31
+ newQuote.push(ccyQuote[j]);
32
+ }
33
+ }
34
+ var recPaths = Triangulator.findPath(newBase, newQuote, ccyQuote[k] + "-" + quote);
35
+ for (var j = 0; j < recPaths.length; j++) {
36
+ paths.push(currentPath.concat(recPaths[j]));
37
+ }
38
+ }
39
+ }
40
+ }
41
+ return paths;
42
+ };
43
+ /**
44
+ * Calculate the triangulated price from underlying prices
45
+ * @param triangulation triangulation of with symbol and is-inverted flag
46
+ * @param feedIdxPrices map of symbol to price
47
+ * @returns triangulated price (scalar), true if market closed or price unavailable
48
+ */
49
+ Triangulator.calculateTriangulatedPrice = function (triangulation, feedIdxPrices) {
50
+ var px = 1;
51
+ var isOpen = true;
52
+ for (var j = 0; j < triangulation[0].length; j++) {
53
+ var pxFeed = feedIdxPrices.get(triangulation[0][j]);
54
+ if (pxFeed == undefined) {
55
+ // no price available for given index
56
+ return [-1, true];
57
+ }
58
+ px = triangulation[1][j] ? px / pxFeed[0] : px * pxFeed[0];
59
+ var isClosed = pxFeed[1];
60
+ isOpen = isOpen && !isClosed;
61
+ }
62
+ return [px, !isOpen];
63
+ };
64
+ /**
65
+ * Finds shortest path and returns indices required and whether to divide or not
66
+ * @example triangulate BTC-USDC: [ [ 'BTC-USD', 'USDC-USD' ], [ false, true ] ]
67
+ * @param ccyArr array of available indices (e.g. from websocket)
68
+ * @param symbol symbol we are looking for (e.g. MATIC-USDC)
69
+ * @returns shortest path with given indices, array whether we have to divide (true) or multiply
70
+ * to arrive at the desired price
71
+ */
72
+ Triangulator.triangulate = function (ccyArr, symbol) {
73
+ var ccyBase = ccyArr.map(function (x) { return x.split("-")[0]; });
74
+ var ccyQuote = ccyArr.map(function (x) { return x.split("-")[1]; });
75
+ var p = Triangulator.findPath(ccyBase.concat(ccyQuote), ccyQuote.concat(ccyBase), symbol);
76
+ if (p.length == 0) {
77
+ return [[], []];
78
+ }
79
+ var len = p.map(function (x) { return x.length; });
80
+ var minLen = 100;
81
+ var minIdx = -1;
82
+ for (var j = 0; j < p.length; j++) {
83
+ if (len[j] < minLen) {
84
+ minLen = len[j];
85
+ minIdx = j;
86
+ if (minLen == 1) {
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ var path = p[minIdx];
92
+ var invert = new Array();
93
+ var indexPath = new Array();
94
+ for (var k = 0; k < path.length; k++) {
95
+ if (ccyArr.includes(path[k], 0)) {
96
+ indexPath.push(path[k]);
97
+ invert.push(false);
98
+ }
99
+ else {
100
+ var inv = path[k].split("-");
101
+ indexPath.push(inv[1] + "-" + inv[0]);
102
+ invert.push(true);
103
+ }
104
+ }
105
+ return [indexPath, invert];
106
+ };
107
+ return Triangulator;
108
+ }());
109
+ export default Triangulator;
110
+ //# sourceMappingURL=triangulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triangulator.js","sourceRoot":"","sources":["../../src/triangulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /// <reference types="node" />
2
+ import { BigNumber } from "ethers";
3
+ import { Buffer } from "buffer";
4
+ /**
5
+ *
6
+ * @param {string} s String to shorten/extend to 4 characters
7
+ * @returns {string} String with 4 characters (or characters + null chars)
8
+ */
9
+ export declare function to4Chars(s: string): string;
10
+ /**
11
+ * Converts string into 4-character bytes4
12
+ * uses to4Chars to first convert the string into
13
+ * 4 characters.
14
+ * Resulting buffer can be used with smart contract to
15
+ * identify tokens (BTC, USDC, MATIC etc.)
16
+ * @param {string} s String to encode into bytes4
17
+ * @returns {Buffer} 4-character bytes4.
18
+ */
19
+ export declare function toBytes4(s: string): Buffer;
20
+ /**
21
+ * Decodes a buffer encoded with toBytes4 into
22
+ * a string. The string is the result of to4Chars of the
23
+ * originally encoded string stripped from null-chars
24
+ * @param {Buffer} b Correctly encoded bytes4 buffer using toBytes4
25
+ * @returns {string} String decoded into to4Chars-type string without null characters
26
+ */
27
+ export declare function fromBytes4(b: Buffer): string;
28
+ /**
29
+ * Decodes the bytes4 encoded string received from the
30
+ * smart contract as a hex-number in string-format
31
+ * @param {string} s string representing a hex-number ("0x...")
32
+ * @returns {string} x of to4Chars(x) stripped from null-chars,
33
+ * where x was originally encoded and
34
+ * returned by the smart contract as bytes4
35
+ */
36
+ export declare function fromBytes4HexString(s: string): string;
37
+ /**
38
+ *
39
+ * @param {string} s String representing a hex-number ("0x...")
40
+ * @param {Object} mapping List of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
41
+ * @returns {string} User friendly currency symbol, e.g. "MATIC"
42
+ */
43
+ export declare function contractSymbolToSymbol(s: string, mapping: Map<string, string>): string;
44
+ /**
45
+ *
46
+ * @param {string} s User friendly currency symbol, e.g. "MATIC"
47
+ * @param {Object} mapping List of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
48
+ * @returns {Buffer} Buffer that can be used with smart contract to identify tokens
49
+ */
50
+ export declare function symbolToContractSymbol(s: string, mapping: Map<string, string>): Buffer;
51
+ /**
52
+ * Converts symbol or symbol combination into long format
53
+ * @param {string} s symbol, e.g., USDC-MATC-USDC, MATC, USDC, ...
54
+ * @param {Object} mapping list of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
55
+ * @returns {string} long format e.g. MATIC. if not found the element is ""
56
+ */
57
+ export declare function symbol4BToLongSymbol(s: string, mapping: Map<string, string>): string;
58
+ export declare function combineFlags(f1: BigNumber, f2: BigNumber): BigNumber;
59
+ export declare function containsFlag(f1: BigNumber, f2: BigNumber): boolean;
@@ -0,0 +1,138 @@
1
+ import { __read, __values } from "tslib";
2
+ import { BigNumber } from "ethers";
3
+ import { Buffer } from "buffer";
4
+ /**
5
+ * @module utils
6
+ */
7
+ function _isVocal(char) {
8
+ char = char.toLowerCase();
9
+ return char == "a" || char == "e" || char == "i" || char == "o" || char == "u";
10
+ }
11
+ /**
12
+ *
13
+ * @param {string} s String to shorten/extend to 4 characters
14
+ * @returns {string} String with 4 characters (or characters + null chars)
15
+ */
16
+ export function to4Chars(s) {
17
+ while (s.length < 4) {
18
+ s = s + "\0";
19
+ }
20
+ var k = s.length - 1;
21
+ while (s.length > 4 && k >= 0) {
22
+ // chop off vocals from the end of string
23
+ // e.g. MATIC -> MATC
24
+ if (_isVocal(s.charAt(k))) {
25
+ s = s.substring(0, k) + s.substring(k + 1, s.length);
26
+ }
27
+ k--;
28
+ }
29
+ s = s.substring(0, 4);
30
+ return s;
31
+ }
32
+ /**
33
+ * Converts string into 4-character bytes4
34
+ * uses to4Chars to first convert the string into
35
+ * 4 characters.
36
+ * Resulting buffer can be used with smart contract to
37
+ * identify tokens (BTC, USDC, MATIC etc.)
38
+ * @param {string} s String to encode into bytes4
39
+ * @returns {Buffer} 4-character bytes4.
40
+ */
41
+ export function toBytes4(s) {
42
+ s = to4Chars(s);
43
+ var valBuff = Buffer.from(s, "ascii");
44
+ return valBuff;
45
+ }
46
+ /**
47
+ * Decodes a buffer encoded with toBytes4 into
48
+ * a string. The string is the result of to4Chars of the
49
+ * originally encoded string stripped from null-chars
50
+ * @param {Buffer} b Correctly encoded bytes4 buffer using toBytes4
51
+ * @returns {string} String decoded into to4Chars-type string without null characters
52
+ */
53
+ export function fromBytes4(b) {
54
+ var val = b.toString("ascii");
55
+ val = val.replace(/\0/g, "");
56
+ return val;
57
+ }
58
+ /**
59
+ * Decodes the bytes4 encoded string received from the
60
+ * smart contract as a hex-number in string-format
61
+ * @param {string} s string representing a hex-number ("0x...")
62
+ * @returns {string} x of to4Chars(x) stripped from null-chars,
63
+ * where x was originally encoded and
64
+ * returned by the smart contract as bytes4
65
+ */
66
+ export function fromBytes4HexString(s) {
67
+ var res = "";
68
+ for (var k = 2; k < s.length; k = k + 2) {
69
+ res = res + String.fromCharCode(parseInt(s.substring(k, k + 2), 16));
70
+ }
71
+ res = res.replace(/\0/g, "");
72
+ return res;
73
+ }
74
+ /**
75
+ *
76
+ * @param {string} s String representing a hex-number ("0x...")
77
+ * @param {Object} mapping List of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
78
+ * @returns {string} User friendly currency symbol, e.g. "MATIC"
79
+ */
80
+ export function contractSymbolToSymbol(s, mapping) {
81
+ var _a;
82
+ var shortCCY = fromBytes4HexString(s);
83
+ // assume CCY is already short if not in the mapping file
84
+ var longCCY = (_a = mapping.get(shortCCY)) !== null && _a !== void 0 ? _a : shortCCY;
85
+ return longCCY;
86
+ }
87
+ /**
88
+ *
89
+ * @param {string} s User friendly currency symbol, e.g. "MATIC"
90
+ * @param {Object} mapping List of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
91
+ * @returns {Buffer} Buffer that can be used with smart contract to identify tokens
92
+ */
93
+ 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
+ }
102
+ }
103
+ }
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
+ // if not in the mapping file, assume ccy is already valid
112
+ shortCCY = shortCCY !== null && shortCCY !== void 0 ? shortCCY : s;
113
+ return toBytes4(shortCCY);
114
+ }
115
+ /**
116
+ * Converts symbol or symbol combination into long format
117
+ * @param {string} s symbol, e.g., USDC-MATC-USDC, MATC, USDC, ...
118
+ * @param {Object} mapping list of symbol and clean symbol pairs, e.g. [{symbol: "MATIC", cleanSymbol: "MATC"}, ...]
119
+ * @returns {string} long format e.g. MATIC. if not found the element is ""
120
+ */
121
+ 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]);
127
+ sym = sym.replace(/\0/g, "");
128
+ longCCY = longCCY + "-" + sym;
129
+ }
130
+ return longCCY.substring(1);
131
+ }
132
+ export function combineFlags(f1, f2) {
133
+ return BigNumber.from((parseInt(f1.toString()) | parseInt(f2.toString())) >>> 0);
134
+ }
135
+ export function containsFlag(f1, f2) {
136
+ return (parseInt(f1.toString()) & parseInt(f2.toString())) > 0;
137
+ }
138
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const D8X_SDK_VERSION = "0.2.0";
@@ -0,0 +1,2 @@
1
+ export var D8X_SDK_VERSION = "0.2.0";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,eAAe,GAAG,OAAO,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { BigNumber, ethers } from "ethers";
2
+ import { NodeSDKConfig } from "./nodeSDKTypes";
3
+ import PerpetualDataHandler from "./perpetualDataHandler";
4
+ /**
5
+ * This is a parent class for the classes that require
6
+ * write access to the contracts.
7
+ * This class requires a private key and executes smart-contract interaction that
8
+ * require gas-payments.
9
+ * @extends PerpetualDataHandler
10
+ */
11
+ export default class WriteAccessHandler extends PerpetualDataHandler {
12
+ protected privateKey: string | undefined;
13
+ protected traderAddr: string;
14
+ protected signer: ethers.Signer | null;
15
+ protected gasLimit: number;
16
+ /**
17
+ * Constructor
18
+ * @param {NodeSDKConfig} config configuration
19
+ * @param {string} privateKey private key of account that trades
20
+ */
21
+ constructor(config: NodeSDKConfig, privateKey?: string, signer?: ethers.Signer);
22
+ /**
23
+ * Initialize the writeAccessHandler-Class with this function
24
+ * to create instance of D8X perpetual contract and gather information
25
+ * about perpetual currencies
26
+ * @param provider optional provider
27
+ */
28
+ createProxyInstance(provider?: ethers.providers.Provider): Promise<void>;
29
+ /**
30
+ * Set allowance for ar margin token (e.g., MATIC, ETH, USDC)
31
+ * @param symbol token in 'long-form' such as MATIC, symbol also fine (ETH-USD-MATIC)
32
+ * @param amount optional, amount to approve if not 'infinity'
33
+ * @returns ContractTransaction
34
+ */
35
+ setAllowance(symbol: string, amount?: number | undefined): Promise<ethers.ContractTransaction>;
36
+ protected static _setAllowance(tokenAddr: string, proxyAddr: string, signer: ethers.Signer, amount: BigNumber): Promise<ethers.ContractTransaction>;
37
+ /**
38
+ * Address corresponding to the private key used to instantiate this class.
39
+ * @returns {string} Address of this wallet.
40
+ */
41
+ getAddress(): string;
42
+ /**
43
+ * Converts a given amount of chain native currency (test MATIC)
44
+ * into a mock token used for trading on testnet, with a rate of 1:100_000
45
+ * @param symbol Pool margin token e.g. MATIC
46
+ * @param amountToPay Amount in chain currency, e.g. "0.1" for 0.1 MATIC
47
+ * @returns Transaction object
48
+ */
49
+ swapForMockToken(symbol: string, amountToPay: string): Promise<ethers.ContractTransaction>;
50
+ }
@@ -0,0 +1,157 @@
1
+ import { __awaiter, __extends, __generator } from "tslib";
2
+ import { ethers } from "ethers";
3
+ import { floatToDec18 } from "./d8XMath";
4
+ import { ERC20_ABI, MAX_UINT_256, MOCK_TOKEN_SWAP_ABI } from "./nodeSDKTypes";
5
+ import PerpetualDataHandler from "./perpetualDataHandler";
6
+ /**
7
+ * This is a parent class for the classes that require
8
+ * write access to the contracts.
9
+ * This class requires a private key and executes smart-contract interaction that
10
+ * require gas-payments.
11
+ * @extends PerpetualDataHandler
12
+ */
13
+ var WriteAccessHandler = /** @class */ (function (_super) {
14
+ __extends(WriteAccessHandler, _super);
15
+ /**
16
+ * Constructor
17
+ * @param {NodeSDKConfig} config configuration
18
+ * @param {string} privateKey private key of account that trades
19
+ */
20
+ function WriteAccessHandler(config, privateKey, signer) {
21
+ var _this = _super.call(this, config) || this;
22
+ _this.traderAddr = "";
23
+ _this.signer = null;
24
+ _this.gasLimit = 15000000;
25
+ if (privateKey) {
26
+ _this.privateKey = privateKey;
27
+ }
28
+ else if (signer) {
29
+ _this.signer = signer;
30
+ }
31
+ else {
32
+ throw new Error("No private key nor signer provided.");
33
+ }
34
+ if (config.gasLimit != undefined) {
35
+ _this.gasLimit = config.gasLimit;
36
+ }
37
+ return _this;
38
+ }
39
+ /**
40
+ * Initialize the writeAccessHandler-Class with this function
41
+ * to create instance of D8X perpetual contract and gather information
42
+ * about perpetual currencies
43
+ * @param provider optional provider
44
+ */
45
+ WriteAccessHandler.prototype.createProxyInstance = function (provider) {
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 ethers.providers.JsonRpcBatchProvider(this.nodeURL);
53
+ }
54
+ else {
55
+ this.provider = provider;
56
+ }
57
+ if (!this.signer) {
58
+ wallet = new ethers.Wallet(this.privateKey);
59
+ this.signer = wallet.connect(this.provider);
60
+ }
61
+ return [4 /*yield*/, this.initContractsAndData(this.signer)];
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
+ };
73
+ /**
74
+ * Set allowance for ar margin token (e.g., MATIC, ETH, USDC)
75
+ * @param symbol token in 'long-form' such as MATIC, symbol also fine (ETH-USD-MATIC)
76
+ * @param amount optional, amount to approve if not 'infinity'
77
+ * @returns ContractTransaction
78
+ */
79
+ WriteAccessHandler.prototype.setAllowance = function (symbol, amount) {
80
+ if (amount === void 0) { amount = undefined; }
81
+ return __awaiter(this, void 0, void 0, function () {
82
+ var symbolarr, marginTokenAddr, amountDec18;
83
+ return __generator(this, function (_a) {
84
+ symbolarr = symbol.split("-");
85
+ symbol = symbol.length == 3 ? symbolarr[2] : symbolarr[0];
86
+ marginTokenAddr = this.symbolToTokenAddrMap.get(symbol);
87
+ if (marginTokenAddr == undefined || this.signer == null) {
88
+ throw Error("No margin token or signer defined, call createProxyInstance");
89
+ }
90
+ if (amount == undefined) {
91
+ amountDec18 = MAX_UINT_256;
92
+ }
93
+ else {
94
+ amountDec18 = floatToDec18(amount);
95
+ }
96
+ return [2 /*return*/, WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18)];
97
+ });
98
+ });
99
+ };
100
+ WriteAccessHandler._setAllowance = function (tokenAddr, proxyAddr, signer, amount) {
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var marginToken;
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0:
106
+ marginToken = new ethers.Contract(tokenAddr, ERC20_ABI, signer);
107
+ return [4 /*yield*/, marginToken.approve(proxyAddr, amount)];
108
+ case 1: return [2 /*return*/, _a.sent()];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ /**
114
+ * Address corresponding to the private key used to instantiate this class.
115
+ * @returns {string} Address of this wallet.
116
+ */
117
+ WriteAccessHandler.prototype.getAddress = function () {
118
+ return this.traderAddr;
119
+ };
120
+ /**
121
+ * Converts a given amount of chain native currency (test MATIC)
122
+ * into a mock token used for trading on testnet, with a rate of 1:100_000
123
+ * @param symbol Pool margin token e.g. MATIC
124
+ * @param amountToPay Amount in chain currency, e.g. "0.1" for 0.1 MATIC
125
+ * @returns Transaction object
126
+ */
127
+ WriteAccessHandler.prototype.swapForMockToken = function (symbol, amountToPay) {
128
+ return __awaiter(this, void 0, void 0, function () {
129
+ var tokenAddress, tokenToSwap, swapAddress, contract;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0:
133
+ if (this.signer == null) {
134
+ throw Error("no wallet initialized. Use createProxyInstance().");
135
+ }
136
+ tokenAddress = this.getMarginTokenFromSymbol(symbol);
137
+ if (tokenAddress == undefined) {
138
+ throw Error("symbols not found");
139
+ }
140
+ tokenToSwap = new Map(Object.entries(require("./config/mockSwap.json")));
141
+ swapAddress = tokenToSwap.get(tokenAddress);
142
+ if (swapAddress == undefined) {
143
+ throw Error("No swap contract found for symbol.");
144
+ }
145
+ contract = new ethers.Contract(swapAddress, MOCK_TOKEN_SWAP_ABI, this.signer);
146
+ return [4 /*yield*/, contract.swapToMockToken({
147
+ value: ethers.utils.parseEther(amountToPay),
148
+ })];
149
+ case 1: return [2 /*return*/, _a.sent()];
150
+ }
151
+ });
152
+ });
153
+ };
154
+ return WriteAccessHandler;
155
+ }(PerpetualDataHandler));
156
+ export default WriteAccessHandler;
157
+ //# sourceMappingURL=writeAccessHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeAccessHandler.js","sourceRoot":"","sources":["../../src/writeAccessHandler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,18 +1,20 @@
1
1
  {
2
2
  "dependencies": {
3
- "@ethersproject/bytes": "^5.7.0",
4
- "@ethersproject/strings": "^5.7.0",
5
3
  "buffer": "^6.0.3",
6
4
  "ethers": "^5.7.2",
7
5
  "process": "^0.11.10"
8
6
  },
9
7
  "scripts": {
10
- "build": "tsc && cp -r abi ./dist && cp -r config ./dist && webpack --stats-error-details",
8
+ "analyze": "source-map-explorer 'build/static/js/*.js'",
9
+ "build": "yarn build:esm && yarn build:cjs",
10
+ "build:esm": "tsc",
11
+ "build:cjs": "tsc --module commonjs --outDir dist/cjs",
11
12
  "build:doc": "jsdoc2md --files ./src/accountTrade.ts --configure ./jsdoc2md.json > ./doc/accountTrade.md && jsdoc2md --files ./src/marketData.ts --configure ./jsdoc2md.json > ./doc/marketData.md && jsdoc2md --files ./src/liquidatorTool.ts --configure ./jsdoc2md.json > ./doc/liquidatorTool.md && jsdoc2md --files ./src/liquidityProviderTool.ts --configure ./jsdoc2md.json > ./doc/liquidityProviderTool.md && jsdoc2md --files ./src/brokerTool.ts --configure ./jsdoc2md.json > ./doc/brokerTool.md && jsdoc2md --files ./src/orderReferrerTool.ts --configure ./jsdoc2md.json > ./doc/orderReferrerTool.md && jsdoc2md --files ./src/*.ts --configure ./jsdoc2md.json > ./doc/d8x-perpetuals-sdk.md",
12
13
  "test": "jest",
13
14
  "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test",
14
15
  "prebuild": "node -p \"'export const D8X_SDK_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
15
- "prepublish": "yarn build"
16
+ "prepublish": "yarn build",
17
+ "prepare": "npm run build"
16
18
  },
17
19
  "devDependencies": {
18
20
  "@babel/core": "^7.20.2",
@@ -27,34 +29,22 @@
27
29
  "jsdoc-babel": "^0.5.0",
28
30
  "jsdoc-to-markdown": "^7.1.1",
29
31
  "json2md": "^2.0.0",
30
- "prettier": "^2.8.4",
32
+ "prettier": "^2.8.7",
33
+ "source-map-explorer": "^2.5.3",
31
34
  "ts-jest": "^29.0.3",
32
- "ts-loader": "^9.4.2",
33
35
  "ts-node": "^10.9.1",
34
- "typescript": "^4.9.3",
35
- "webpack": "^5.76.3",
36
- "webpack-cli": "^5.0.1",
37
- "webpack-dev-server": "^4.13.1"
36
+ "tslib": "^2.5.0",
37
+ "typescript": "^4.9.3"
38
38
  },
39
39
  "name": "@d8x/perpetuals-sdk",
40
40
  "description": "Node TypeScript SDK for D8X Perpetual Futures",
41
- "version": "0.1.12",
42
- "main": "./dist/src/index.js",
43
- "types": "./dist/src/index.d.ts",
44
- "directories": {
45
- "test": "test"
46
- },
41
+ "version": "0.2.0",
42
+ "main": "./dist/cjs/index.js",
43
+ "module": "./dist/esm/index.js",
44
+ "types": "./dist/esm/index.d.ts",
47
45
  "files": [
48
- "module.d.ts",
49
- "src/*.ts",
50
- "src/*.json",
51
- "src/*.md",
52
- "doc/*.md",
53
- "dist/**/*.ts",
54
- "dist/**/*.js",
55
- "dist/**/*.json",
56
- "./abi/**/*.json",
57
- "./config/*.json"
46
+ "dist",
47
+ "doc"
58
48
  ],
59
49
  "repository": {
60
50
  "type": "git",