ccxt 4.2.59 → 4.2.61

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 (184) hide show
  1. package/README.md +103 -102
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +11853 -3790
  4. package/dist/ccxt.browser.min.js +7 -7
  5. package/dist/cjs/ccxt.js +4 -1
  6. package/dist/cjs/src/abstract/hyperliquid.js +9 -0
  7. package/dist/cjs/src/ascendex.js +10 -12
  8. package/dist/cjs/src/base/Exchange.js +22 -1
  9. package/dist/cjs/src/base/functions/encode.js +5 -0
  10. package/dist/cjs/src/base/functions.js +1 -0
  11. package/dist/cjs/src/bingx.js +38 -0
  12. package/dist/cjs/src/bitfinex2.js +20 -3
  13. package/dist/cjs/src/bitget.js +9 -2
  14. package/dist/cjs/src/bitmart.js +41 -23
  15. package/dist/cjs/src/blofin.js +59 -1
  16. package/dist/cjs/src/coinbase.js +108 -103
  17. package/dist/cjs/src/coinex.js +61 -1
  18. package/dist/cjs/src/hitbtc.js +1 -1
  19. package/dist/cjs/src/htx.js +4 -1
  20. package/dist/cjs/src/hyperliquid.js +2035 -0
  21. package/dist/cjs/src/kraken.js +50 -41
  22. package/dist/cjs/src/krakenfutures.js +28 -0
  23. package/dist/cjs/src/kucoinfutures.js +3 -2
  24. package/dist/cjs/src/okx.js +1 -1
  25. package/dist/cjs/src/phemex.js +2 -2
  26. package/dist/cjs/src/pro/binance.js +16 -3
  27. package/dist/cjs/src/pro/bingx.js +1 -0
  28. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +158 -0
  29. package/dist/cjs/src/static_dependencies/ethers/address/address.js +144 -0
  30. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +407 -0
  31. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +45 -0
  32. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +28 -0
  33. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +176 -0
  34. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +27 -0
  35. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +52 -0
  36. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +45 -0
  37. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +30 -0
  38. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +60 -0
  39. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +27 -0
  40. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +68 -0
  41. package/dist/cjs/src/static_dependencies/ethers/fragments.js +614 -0
  42. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +492 -0
  43. package/dist/cjs/src/static_dependencies/ethers/index.js +35 -0
  44. package/dist/cjs/src/static_dependencies/ethers/interface.js +44 -0
  45. package/dist/cjs/src/static_dependencies/ethers/typed.js +618 -0
  46. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +20 -0
  47. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +134 -0
  48. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +228 -0
  49. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +13 -0
  50. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +29 -0
  51. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +53 -0
  52. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +231 -0
  53. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +47 -0
  54. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +218 -0
  55. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +292 -0
  56. package/dist/cjs/src/tokocrypto.js +22 -2
  57. package/dist/cjs/src/wazirx.js +314 -4
  58. package/dist/cjs/src/woo.js +157 -77
  59. package/js/ccxt.d.ts +5 -2
  60. package/js/ccxt.js +4 -2
  61. package/js/src/abstract/blofin.d.ts +1 -0
  62. package/js/src/abstract/coinbase.d.ts +3 -3
  63. package/js/src/abstract/hyperliquid.d.ts +9 -0
  64. package/js/src/abstract/hyperliquid.js +11 -0
  65. package/js/src/abstract/wazirx.d.ts +5 -0
  66. package/js/src/ascendex.d.ts +2 -2
  67. package/js/src/ascendex.js +10 -12
  68. package/js/src/base/Exchange.d.ts +4 -0
  69. package/js/src/base/Exchange.js +13 -1
  70. package/js/src/base/functions/encode.d.ts +2 -1
  71. package/js/src/base/functions/encode.js +5 -1
  72. package/js/src/bingx.d.ts +3 -1
  73. package/js/src/bingx.js +38 -0
  74. package/js/src/bitfinex2.js +20 -3
  75. package/js/src/bitget.js +9 -2
  76. package/js/src/bitmart.d.ts +9 -2
  77. package/js/src/bitmart.js +41 -23
  78. package/js/src/blofin.d.ts +2 -1
  79. package/js/src/blofin.js +59 -1
  80. package/js/src/coinbase.js +108 -103
  81. package/js/src/coinex.d.ts +3 -1
  82. package/js/src/coinex.js +61 -1
  83. package/js/src/hitbtc.js +1 -1
  84. package/js/src/htx.js +4 -1
  85. package/js/src/hyperliquid.d.ts +83 -0
  86. package/js/src/hyperliquid.js +2036 -0
  87. package/js/src/kraken.js +50 -41
  88. package/js/src/krakenfutures.d.ts +2 -1
  89. package/js/src/krakenfutures.js +28 -0
  90. package/js/src/kucoinfutures.js +3 -2
  91. package/js/src/okx.js +1 -1
  92. package/js/src/phemex.js +2 -2
  93. package/js/src/pro/binance.js +16 -3
  94. package/js/src/pro/bingx.js +1 -0
  95. package/js/src/pro/deribit.d.ts +1 -1
  96. package/js/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  97. package/js/src/static_dependencies/ethers/abi-coder.js +148 -0
  98. package/js/src/static_dependencies/ethers/address/address.d.ts +55 -0
  99. package/js/src/static_dependencies/ethers/address/address.js +162 -0
  100. package/js/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  101. package/js/src/static_dependencies/ethers/address/checks.js +119 -0
  102. package/js/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  103. package/js/src/static_dependencies/ethers/address/contract-address.js +73 -0
  104. package/js/src/static_dependencies/ethers/address/index.d.ts +48 -0
  105. package/js/src/static_dependencies/ethers/address/index.js +24 -0
  106. package/js/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  107. package/js/src/static_dependencies/ethers/bytes32.js +45 -0
  108. package/js/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  109. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  110. package/js/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  111. package/js/src/static_dependencies/ethers/coders/address.js +34 -0
  112. package/js/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  113. package/js/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  114. package/js/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  115. package/js/src/static_dependencies/ethers/coders/array.js +162 -0
  116. package/js/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  117. package/js/src/static_dependencies/ethers/coders/boolean.js +26 -0
  118. package/js/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  119. package/js/src/static_dependencies/ethers/coders/bytes.js +39 -0
  120. package/js/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  121. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  122. package/js/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  123. package/js/src/static_dependencies/ethers/coders/null.js +29 -0
  124. package/js/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  125. package/js/src/static_dependencies/ethers/coders/number.js +48 -0
  126. package/js/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  127. package/js/src/static_dependencies/ethers/coders/string.js +26 -0
  128. package/js/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  129. package/js/src/static_dependencies/ethers/coders/tuple.js +67 -0
  130. package/js/src/static_dependencies/ethers/fragments.d.ts +458 -0
  131. package/js/src/static_dependencies/ethers/fragments.js +1252 -0
  132. package/js/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  133. package/js/src/static_dependencies/ethers/hash/index.js +15 -0
  134. package/js/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  135. package/js/src/static_dependencies/ethers/hash/solidity.js +107 -0
  136. package/js/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  137. package/js/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  138. package/js/src/static_dependencies/ethers/index.d.ts +19 -0
  139. package/js/src/static_dependencies/ethers/index.js +22 -0
  140. package/js/src/static_dependencies/ethers/interface.d.ts +380 -0
  141. package/js/src/static_dependencies/ethers/interface.js +990 -0
  142. package/js/src/static_dependencies/ethers/typed.d.ts +569 -0
  143. package/js/src/static_dependencies/ethers/typed.js +608 -0
  144. package/js/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  145. package/js/src/static_dependencies/ethers/utils/base58.js +68 -0
  146. package/js/src/static_dependencies/ethers/utils/base64-browser.d.ts +3 -0
  147. package/js/src/static_dependencies/ethers/utils/base64-browser.js +24 -0
  148. package/js/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  149. package/js/src/static_dependencies/ethers/utils/base64.js +58 -0
  150. package/js/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  151. package/js/src/static_dependencies/ethers/utils/data.js +175 -0
  152. package/js/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  153. package/js/src/static_dependencies/ethers/utils/errors.js +227 -0
  154. package/js/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  155. package/js/src/static_dependencies/ethers/utils/events.js +52 -0
  156. package/js/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  157. package/js/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  158. package/js/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  159. package/js/src/static_dependencies/ethers/utils/index.js +38 -0
  160. package/js/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  161. package/js/src/static_dependencies/ethers/utils/maths.js +220 -0
  162. package/js/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  163. package/js/src/static_dependencies/ethers/utils/properties.js +59 -0
  164. package/js/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  165. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  166. package/js/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  167. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  168. package/js/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  169. package/js/src/static_dependencies/ethers/utils/rlp.js +14 -0
  170. package/js/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  171. package/js/src/static_dependencies/ethers/utils/units.js +88 -0
  172. package/js/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  173. package/js/src/static_dependencies/ethers/utils/utf8.js +225 -0
  174. package/js/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  175. package/js/src/static_dependencies/ethers/utils/uuid.js +35 -0
  176. package/js/src/static_dependencies/messagepack/msgpack.d.ts +2 -0
  177. package/js/src/static_dependencies/messagepack/msgpack.js +572 -0
  178. package/js/src/tokocrypto.js +22 -2
  179. package/js/src/wazirx.d.ts +12 -1
  180. package/js/src/wazirx.js +314 -4
  181. package/js/src/woo.d.ts +8 -0
  182. package/js/src/woo.js +157 -77
  183. package/package.json +1 -1
  184. package/skip-tests.json +60 -16
@@ -0,0 +1,572 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // (function () {
8
+ // "use strict";
9
+ // Serializes a value to a MessagePack byte array.
10
+ //
11
+ // data: The value to serialize. This can be a scalar, array or object.
12
+ // options: An object that defines additional options.
13
+ // - multiple: (boolean) Indicates whether multiple values in data are concatenated to multiple MessagePack arrays. Default: false.
14
+ // - invalidTypeReplacement:
15
+ // (any) The value that is used to replace values of unsupported types.
16
+ // (function) A function that returns such a value, given the original value as parameter.
17
+ function serialize(data, options) {
18
+ if (options && options.multiple && !Array.isArray(data)) {
19
+ throw new Error("Invalid argument type: Expected an Array to serialize multiple values.");
20
+ }
21
+ const pow32 = 0x100000000; // 2^32
22
+ let floatBuffer, floatView;
23
+ let array = new Uint8Array(128);
24
+ let length = 0;
25
+ if (options && options.multiple) {
26
+ for (let i = 0; i < data.length; i++) {
27
+ append(data[i]);
28
+ }
29
+ }
30
+ else {
31
+ append(data);
32
+ }
33
+ return array.subarray(0, length);
34
+ function append(data, isReplacement) {
35
+ switch (typeof data) {
36
+ case "undefined":
37
+ appendNull(data);
38
+ break;
39
+ case "boolean":
40
+ appendBoolean(data);
41
+ break;
42
+ case "number":
43
+ appendNumber(data);
44
+ break;
45
+ case "string":
46
+ appendString(data);
47
+ break;
48
+ case "object":
49
+ if (data === null)
50
+ appendNull(data);
51
+ else if (data instanceof Date)
52
+ appendDate(data);
53
+ else if (Array.isArray(data))
54
+ appendArray(data);
55
+ else if (data instanceof Uint8Array || data instanceof Uint8ClampedArray)
56
+ appendBinArray(data);
57
+ else if (data instanceof Int8Array || data instanceof Int16Array || data instanceof Uint16Array ||
58
+ data instanceof Int32Array || data instanceof Uint32Array ||
59
+ data instanceof Float32Array || data instanceof Float64Array)
60
+ appendArray(data);
61
+ else
62
+ appendObject(data);
63
+ break;
64
+ default:
65
+ if (!isReplacement && options && options.invalidTypeReplacement) {
66
+ if (typeof options.invalidTypeReplacement === "function")
67
+ append(options.invalidTypeReplacement(data), true);
68
+ else
69
+ append(options.invalidTypeReplacement, true);
70
+ }
71
+ else {
72
+ throw new Error("Invalid argument type: The type '" + (typeof data) + "' cannot be serialized.");
73
+ }
74
+ }
75
+ }
76
+ function appendNull(data) {
77
+ appendByte(0xc0);
78
+ }
79
+ function appendBoolean(data) {
80
+ appendByte(data ? 0xc3 : 0xc2);
81
+ }
82
+ function appendNumber(data) {
83
+ if (isFinite(data) && Math.floor(data) === data) {
84
+ // Integer
85
+ if (data >= 0 && data <= 0x7f) {
86
+ appendByte(data);
87
+ }
88
+ else if (data < 0 && data >= -0x20) {
89
+ appendByte(data);
90
+ }
91
+ else if (data > 0 && data <= 0xff) { // uint8
92
+ appendBytes([0xcc, data]);
93
+ }
94
+ else if (data >= -0x80 && data <= 0x7f) { // int8
95
+ appendBytes([0xd0, data]);
96
+ }
97
+ else if (data > 0 && data <= 0xffff) { // uint16
98
+ appendBytes([0xcd, data >>> 8, data]);
99
+ }
100
+ else if (data >= -0x8000 && data <= 0x7fff) { // int16
101
+ appendBytes([0xd1, data >>> 8, data]);
102
+ }
103
+ else if (data > 0 && data <= 0xffffffff) { // uint32
104
+ appendBytes([0xce, data >>> 24, data >>> 16, data >>> 8, data]);
105
+ }
106
+ else if (data >= -0x80000000 && data <= 0x7fffffff) { // int32
107
+ appendBytes([0xd2, data >>> 24, data >>> 16, data >>> 8, data]);
108
+ }
109
+ else if (data > 0 && data <= 0xffffffffffffffff) { // uint64
110
+ // Split 64 bit number into two 32 bit numbers because JavaScript only regards
111
+ // 32 bits for bitwise operations.
112
+ let hi = data / pow32;
113
+ let lo = data % pow32;
114
+ appendBytes([0xcf, hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]);
115
+ }
116
+ else if (data >= -0x8000000000000000 && data <= 0x7fffffffffffffff) { // int64
117
+ appendByte(0xd3);
118
+ appendInt64(data);
119
+ }
120
+ else if (data < 0) { // below int64
121
+ appendBytes([0xd3, 0x80, 0, 0, 0, 0, 0, 0, 0]);
122
+ }
123
+ else { // above uint64
124
+ appendBytes([0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
125
+ }
126
+ }
127
+ else {
128
+ // Float
129
+ if (!floatView) {
130
+ floatBuffer = new ArrayBuffer(8);
131
+ floatView = new DataView(floatBuffer);
132
+ }
133
+ floatView.setFloat64(0, data);
134
+ appendByte(0xcb);
135
+ appendBytes(new Uint8Array(floatBuffer));
136
+ }
137
+ }
138
+ function appendString(data) {
139
+ let bytes = encodeUtf8(data);
140
+ let length = bytes.length;
141
+ if (length <= 0x1f)
142
+ appendByte(0xa0 + length);
143
+ else if (length <= 0xff)
144
+ appendBytes([0xd9, length]);
145
+ else if (length <= 0xffff)
146
+ appendBytes([0xda, length >>> 8, length]);
147
+ else
148
+ appendBytes([0xdb, length >>> 24, length >>> 16, length >>> 8, length]);
149
+ appendBytes(bytes);
150
+ }
151
+ function appendArray(data) {
152
+ let length = data.length;
153
+ if (length <= 0xf)
154
+ appendByte(0x90 + length);
155
+ else if (length <= 0xffff)
156
+ appendBytes([0xdc, length >>> 8, length]);
157
+ else
158
+ appendBytes([0xdd, length >>> 24, length >>> 16, length >>> 8, length]);
159
+ for (let index = 0; index < length; index++) {
160
+ append(data[index]);
161
+ }
162
+ }
163
+ function appendBinArray(data) {
164
+ let length = data.length;
165
+ if (length <= 0xf)
166
+ appendBytes([0xc4, length]);
167
+ else if (length <= 0xffff)
168
+ appendBytes([0xc5, length >>> 8, length]);
169
+ else
170
+ appendBytes([0xc6, length >>> 24, length >>> 16, length >>> 8, length]);
171
+ appendBytes(data);
172
+ }
173
+ function appendObject(data) {
174
+ let length = 0;
175
+ for (let key in data) {
176
+ if (data[key] !== undefined) {
177
+ length++;
178
+ }
179
+ }
180
+ if (length <= 0xf)
181
+ appendByte(0x80 + length);
182
+ else if (length <= 0xffff)
183
+ appendBytes([0xde, length >>> 8, length]);
184
+ else
185
+ appendBytes([0xdf, length >>> 24, length >>> 16, length >>> 8, length]);
186
+ for (let key in data) {
187
+ let value = data[key];
188
+ if (value !== undefined) {
189
+ append(key);
190
+ append(value);
191
+ }
192
+ }
193
+ }
194
+ function appendDate(data) {
195
+ let sec = data.getTime() / 1000;
196
+ if (data.getMilliseconds() === 0 && sec >= 0 && sec < 0x100000000) { // 32 bit seconds
197
+ appendBytes([0xd6, 0xff, sec >>> 24, sec >>> 16, sec >>> 8, sec]);
198
+ }
199
+ else if (sec >= 0 && sec < 0x400000000) { // 30 bit nanoseconds, 34 bit seconds
200
+ let ns = data.getMilliseconds() * 1000000;
201
+ appendBytes([0xd7, 0xff, ns >>> 22, ns >>> 14, ns >>> 6, ((ns << 2) >>> 0) | (sec / pow32), sec >>> 24, sec >>> 16, sec >>> 8, sec]);
202
+ }
203
+ else { // 32 bit nanoseconds, 64 bit seconds, negative values allowed
204
+ let ns = data.getMilliseconds() * 1000000;
205
+ appendBytes([0xc7, 12, 0xff, ns >>> 24, ns >>> 16, ns >>> 8, ns]);
206
+ appendInt64(sec);
207
+ }
208
+ }
209
+ function appendByte(byte) {
210
+ if (array.length < length + 1) {
211
+ let newLength = array.length * 2;
212
+ while (newLength < length + 1)
213
+ newLength *= 2;
214
+ let newArray = new Uint8Array(newLength);
215
+ newArray.set(array);
216
+ array = newArray;
217
+ }
218
+ array[length] = byte;
219
+ length++;
220
+ }
221
+ function appendBytes(bytes) {
222
+ if (array.length < length + bytes.length) {
223
+ let newLength = array.length * 2;
224
+ while (newLength < length + bytes.length)
225
+ newLength *= 2;
226
+ let newArray = new Uint8Array(newLength);
227
+ newArray.set(array);
228
+ array = newArray;
229
+ }
230
+ array.set(bytes, length);
231
+ length += bytes.length;
232
+ }
233
+ function appendInt64(value) {
234
+ // Split 64 bit number into two 32 bit numbers because JavaScript only regards 32 bits for
235
+ // bitwise operations.
236
+ let hi, lo;
237
+ if (value >= 0) {
238
+ // Same as uint64
239
+ hi = value / pow32;
240
+ lo = value % pow32;
241
+ }
242
+ else {
243
+ // Split absolute value to high and low, then NOT and ADD(1) to restore negativity
244
+ value++;
245
+ hi = Math.abs(value) / pow32;
246
+ lo = Math.abs(value) % pow32;
247
+ hi = ~hi;
248
+ lo = ~lo;
249
+ }
250
+ appendBytes([hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]);
251
+ }
252
+ }
253
+ // Deserializes a MessagePack byte array to a value.
254
+ //
255
+ // array: The MessagePack byte array to deserialize. This must be an Array or Uint8Array containing bytes, not a string.
256
+ // options: An object that defines additional options.
257
+ // - multiple: (boolean) Indicates whether multiple concatenated MessagePack arrays are returned as an array. Default: false.
258
+ function deserialize(array, options) {
259
+ const pow32 = 0x100000000; // 2^32
260
+ let pos = 0;
261
+ if (array instanceof ArrayBuffer) {
262
+ array = new Uint8Array(array);
263
+ }
264
+ if (typeof array !== "object" || typeof array.length === "undefined") {
265
+ throw new Error("Invalid argument type: Expected a byte array (Array or Uint8Array) to deserialize.");
266
+ }
267
+ if (!array.length) {
268
+ throw new Error("Invalid argument: The byte array to deserialize is empty.");
269
+ }
270
+ if (!(array instanceof Uint8Array)) {
271
+ array = new Uint8Array(array);
272
+ }
273
+ let data;
274
+ if (options && options.multiple) {
275
+ // Read as many messages as are available
276
+ data = [];
277
+ while (pos < array.length) {
278
+ data.push(read());
279
+ }
280
+ }
281
+ else {
282
+ // Read only one message and ignore additional data
283
+ data = read();
284
+ }
285
+ return data;
286
+ function read() {
287
+ const byte = array[pos++];
288
+ if (byte >= 0x00 && byte <= 0x7f)
289
+ return byte; // positive fixint
290
+ if (byte >= 0x80 && byte <= 0x8f)
291
+ return readMap(byte - 0x80); // fixmap
292
+ if (byte >= 0x90 && byte <= 0x9f)
293
+ return readArray(byte - 0x90); // fixarray
294
+ if (byte >= 0xa0 && byte <= 0xbf)
295
+ return readStr(byte - 0xa0); // fixstr
296
+ if (byte === 0xc0)
297
+ return null; // nil
298
+ if (byte === 0xc1)
299
+ throw new Error("Invalid byte code 0xc1 found."); // never used
300
+ if (byte === 0xc2)
301
+ return false; // false
302
+ if (byte === 0xc3)
303
+ return true; // true
304
+ if (byte === 0xc4)
305
+ return readBin(-1, 1); // bin 8
306
+ if (byte === 0xc5)
307
+ return readBin(-1, 2); // bin 16
308
+ if (byte === 0xc6)
309
+ return readBin(-1, 4); // bin 32
310
+ if (byte === 0xc7)
311
+ return readExt(-1, 1); // ext 8
312
+ if (byte === 0xc8)
313
+ return readExt(-1, 2); // ext 16
314
+ if (byte === 0xc9)
315
+ return readExt(-1, 4); // ext 32
316
+ if (byte === 0xca)
317
+ return readFloat(4); // float 32
318
+ if (byte === 0xcb)
319
+ return readFloat(8); // float 64
320
+ if (byte === 0xcc)
321
+ return readUInt(1); // uint 8
322
+ if (byte === 0xcd)
323
+ return readUInt(2); // uint 16
324
+ if (byte === 0xce)
325
+ return readUInt(4); // uint 32
326
+ if (byte === 0xcf)
327
+ return readUInt(8); // uint 64
328
+ if (byte === 0xd0)
329
+ return readInt(1); // int 8
330
+ if (byte === 0xd1)
331
+ return readInt(2); // int 16
332
+ if (byte === 0xd2)
333
+ return readInt(4); // int 32
334
+ if (byte === 0xd3)
335
+ return readInt(8); // int 64
336
+ if (byte === 0xd4)
337
+ return readExt(1); // fixext 1
338
+ if (byte === 0xd5)
339
+ return readExt(2); // fixext 2
340
+ if (byte === 0xd6)
341
+ return readExt(4); // fixext 4
342
+ if (byte === 0xd7)
343
+ return readExt(8); // fixext 8
344
+ if (byte === 0xd8)
345
+ return readExt(16); // fixext 16
346
+ if (byte === 0xd9)
347
+ return readStr(-1, 1); // str 8
348
+ if (byte === 0xda)
349
+ return readStr(-1, 2); // str 16
350
+ if (byte === 0xdb)
351
+ return readStr(-1, 4); // str 32
352
+ if (byte === 0xdc)
353
+ return readArray(-1, 2); // array 16
354
+ if (byte === 0xdd)
355
+ return readArray(-1, 4); // array 32
356
+ if (byte === 0xde)
357
+ return readMap(-1, 2); // map 16
358
+ if (byte === 0xdf)
359
+ return readMap(-1, 4); // map 32
360
+ if (byte >= 0xe0 && byte <= 0xff)
361
+ return byte - 256; // negative fixint
362
+ console.debug("msgpack array:", array);
363
+ throw new Error("Invalid byte value '" + byte + "' at index " + (pos - 1) + " in the MessagePack binary data (length " + array.length + "): Expecting a range of 0 to 255. This is not a byte array.");
364
+ }
365
+ function readInt(size) {
366
+ let value = 0;
367
+ let first = true;
368
+ while (size-- > 0) {
369
+ if (first) {
370
+ let byte = array[pos++];
371
+ value += byte & 0x7f;
372
+ if (byte & 0x80) {
373
+ value -= 0x80; // Treat most-significant bit as -2^i instead of 2^i
374
+ }
375
+ first = false;
376
+ }
377
+ else {
378
+ value *= 256;
379
+ value += array[pos++];
380
+ }
381
+ }
382
+ return value;
383
+ }
384
+ function readUInt(size) {
385
+ let value = 0;
386
+ while (size-- > 0) {
387
+ value *= 256;
388
+ value += array[pos++];
389
+ }
390
+ return value;
391
+ }
392
+ function readFloat(size) {
393
+ let view = new DataView(array.buffer, pos + array.byteOffset, size);
394
+ pos += size;
395
+ if (size === 4)
396
+ return view.getFloat32(0, false);
397
+ if (size === 8)
398
+ return view.getFloat64(0, false);
399
+ }
400
+ function readBin(size, lengthSize) {
401
+ if (size < 0)
402
+ size = readUInt(lengthSize);
403
+ let data = array.subarray(pos, pos + size);
404
+ pos += size;
405
+ return data;
406
+ }
407
+ function readMap(size, lengthSize) {
408
+ if (size < 0)
409
+ size = readUInt(lengthSize);
410
+ let data = {};
411
+ while (size-- > 0) {
412
+ let key = read();
413
+ data[key] = read();
414
+ }
415
+ return data;
416
+ }
417
+ function readArray(size, lengthSize) {
418
+ if (size < 0)
419
+ size = readUInt(lengthSize);
420
+ let data = [];
421
+ while (size-- > 0) {
422
+ data.push(read());
423
+ }
424
+ return data;
425
+ }
426
+ function readStr(size, lengthSize) {
427
+ if (size < 0)
428
+ size = readUInt(lengthSize);
429
+ let start = pos;
430
+ pos += size;
431
+ return decodeUtf8(array, start, size);
432
+ }
433
+ function readExt(size, lengthSize) {
434
+ if (size < 0)
435
+ size = readUInt(lengthSize);
436
+ let type = readUInt(1);
437
+ let data = readBin(size);
438
+ switch (type) {
439
+ case 255:
440
+ return readExtDate(data);
441
+ }
442
+ return { type: type, data: data };
443
+ }
444
+ function readExtDate(data) {
445
+ if (data.length === 4) {
446
+ let sec = ((data[0] << 24) >>> 0) +
447
+ ((data[1] << 16) >>> 0) +
448
+ ((data[2] << 8) >>> 0) +
449
+ data[3];
450
+ return new Date(sec * 1000);
451
+ }
452
+ if (data.length === 8) {
453
+ let ns = ((data[0] << 22) >>> 0) +
454
+ ((data[1] << 14) >>> 0) +
455
+ ((data[2] << 6) >>> 0) +
456
+ (data[3] >>> 2);
457
+ let sec = ((data[3] & 0x3) * pow32) +
458
+ ((data[4] << 24) >>> 0) +
459
+ ((data[5] << 16) >>> 0) +
460
+ ((data[6] << 8) >>> 0) +
461
+ data[7];
462
+ return new Date(sec * 1000 + ns / 1000000);
463
+ }
464
+ if (data.length === 12) {
465
+ let ns = ((data[0] << 24) >>> 0) +
466
+ ((data[1] << 16) >>> 0) +
467
+ ((data[2] << 8) >>> 0) +
468
+ data[3];
469
+ pos -= 8;
470
+ let sec = readInt(8);
471
+ return new Date(sec * 1000 + ns / 1000000);
472
+ }
473
+ throw new Error("Invalid data length for a date value.");
474
+ }
475
+ }
476
+ // Encodes a string to UTF-8 bytes.
477
+ function encodeUtf8(str) {
478
+ // Prevent excessive array allocation and slicing for all 7-bit characters
479
+ let ascii = true, length = str.length;
480
+ for (let x = 0; x < length; x++) {
481
+ if (str.charCodeAt(x) > 127) {
482
+ ascii = false;
483
+ break;
484
+ }
485
+ }
486
+ // Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330
487
+ let i = 0, bytes = new Uint8Array(str.length * (ascii ? 1 : 4));
488
+ for (let ci = 0; ci !== length; ci++) {
489
+ let c = str.charCodeAt(ci);
490
+ if (c < 128) {
491
+ bytes[i++] = c;
492
+ continue;
493
+ }
494
+ if (c < 2048) {
495
+ bytes[i++] = c >> 6 | 192;
496
+ }
497
+ else {
498
+ if (c > 0xd7ff && c < 0xdc00) {
499
+ if (++ci >= length)
500
+ throw new Error("UTF-8 encode: incomplete surrogate pair");
501
+ let c2 = str.charCodeAt(ci);
502
+ if (c2 < 0xdc00 || c2 > 0xdfff)
503
+ throw new Error("UTF-8 encode: second surrogate character 0x" + c2.toString(16) + " at index " + ci + " out of range");
504
+ c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);
505
+ bytes[i++] = c >> 18 | 240;
506
+ bytes[i++] = c >> 12 & 63 | 128;
507
+ }
508
+ else
509
+ bytes[i++] = c >> 12 | 224;
510
+ bytes[i++] = c >> 6 & 63 | 128;
511
+ }
512
+ bytes[i++] = c & 63 | 128;
513
+ }
514
+ return ascii ? bytes : bytes.subarray(0, i);
515
+ }
516
+ // Decodes a string from UTF-8 bytes.
517
+ function decodeUtf8(bytes, start, length) {
518
+ // Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330
519
+ let i = start, str = "";
520
+ length += start;
521
+ while (i < length) {
522
+ let c = bytes[i++];
523
+ if (c > 127) {
524
+ if (c > 191 && c < 224) {
525
+ if (i >= length)
526
+ throw new Error("UTF-8 decode: incomplete 2-byte sequence");
527
+ c = (c & 31) << 6 | bytes[i++] & 63;
528
+ }
529
+ else if (c > 223 && c < 240) {
530
+ if (i + 1 >= length)
531
+ throw new Error("UTF-8 decode: incomplete 3-byte sequence");
532
+ c = (c & 15) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
533
+ }
534
+ else if (c > 239 && c < 248) {
535
+ if (i + 2 >= length)
536
+ throw new Error("UTF-8 decode: incomplete 4-byte sequence");
537
+ c = (c & 7) << 18 | (bytes[i++] & 63) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
538
+ }
539
+ else
540
+ throw new Error("UTF-8 decode: unknown multibyte start 0x" + c.toString(16) + " at index " + (i - 1));
541
+ }
542
+ if (c <= 0xffff)
543
+ str += String.fromCharCode(c);
544
+ else if (c <= 0x10ffff) {
545
+ c -= 0x10000;
546
+ str += String.fromCharCode(c >> 10 | 0xd800);
547
+ str += String.fromCharCode(c & 0x3FF | 0xdc00);
548
+ }
549
+ else
550
+ throw new Error("UTF-8 decode: code point 0x" + c.toString(16) + " exceeds UTF-16 reach");
551
+ }
552
+ return str;
553
+ }
554
+ // // The exported functions
555
+ // let msgpack = {
556
+ // serialize: serialize,
557
+ // deserialize: deserialize,
558
+ // // Compatibility with other libraries
559
+ // encode: serialize,
560
+ // decode: deserialize
561
+ // };
562
+ // // Environment detection
563
+ // if (typeof module === "object" && module && typeof module.exports === "object") {
564
+ // // Node.js
565
+ // module.exports = msgpack;
566
+ // }
567
+ // else {
568
+ // // Global object
569
+ // window[window.msgpackJsName || "msgpack"] = msgpack;
570
+ // }
571
+ // })();
572
+ export { serialize, deserialize };
@@ -1019,8 +1019,28 @@ export default class tokocrypto extends Exchange {
1019
1019
  request['limit'] = limit;
1020
1020
  }
1021
1021
  const responseInner = this.publicGetOpenV1MarketTrades(this.extend(request, params));
1022
- const data = this.safeValue(responseInner, 'data', {});
1023
- return this.parseTrades(data, market, since, limit);
1022
+ //
1023
+ // {
1024
+ // "code": 0,
1025
+ // "msg": "success",
1026
+ // "data": {
1027
+ // "list": [
1028
+ // {
1029
+ // "id": 28457,
1030
+ // "price": "4.00000100",
1031
+ // "qty": "12.00000000",
1032
+ // "time": 1499865549590,
1033
+ // "isBuyerMaker": true,
1034
+ // "isBestMatch": true
1035
+ // }
1036
+ // ]
1037
+ // },
1038
+ // "timestamp": 1571921637091
1039
+ // }
1040
+ //
1041
+ const data = this.safeDict(responseInner, 'data', {});
1042
+ const list = this.safeList(data, 'list', []);
1043
+ return this.parseTrades(list, market, since, limit);
1024
1044
  }
1025
1045
  if (limit !== undefined) {
1026
1046
  request['limit'] = limit; // default = 500, maximum = 1000
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/wazirx.js';
2
- import type { Balances, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade } from './base/types.js';
2
+ import type { Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class wazirx
5
5
  * @augments Exchange
@@ -33,6 +33,17 @@ export default class wazirx extends Exchange {
33
33
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
34
34
  parseOrder(order: any, market?: Market): Order;
35
35
  parseOrderStatus(status: any): string;
36
+ fetchCurrencies(params?: {}): Promise<{}>;
37
+ fetchDepositAddress(code: string, params?: {}): Promise<{
38
+ currency: string;
39
+ address: string;
40
+ tag: any;
41
+ network: string;
42
+ info: any;
43
+ }>;
44
+ fetchWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
45
+ parseTransactionStatus(status: any): string;
46
+ parseTransaction(transaction: any, currency?: Currency): Transaction;
36
47
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
37
48
  url: string;
38
49
  method: string;