@swapkit/helpers 1.0.0-rc.0 → 1.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +76 -47
- package/dist/index.es.js +816 -403
- package/package.json +8 -4
- package/src/helpers/asset.ts +25 -13
- package/src/helpers/liquidity.ts +19 -4
- package/src/helpers/others.ts +0 -39
- package/src/helpers/request.ts +16 -0
- package/src/index.ts +5 -4
- package/src/modules/__tests__/assetValue.test.ts +24 -8
- package/src/modules/__tests__/swapKitNumber.test.ts +155 -76
- package/src/modules/assetValue.ts +46 -40
- package/src/modules/bigIntArithmetics.ts +210 -99
- package/src/modules/swapKitNumber.ts +0 -4
- package/dist/index.es-8503fb04.js +0 -34669
- package/dist/index.es-903b9173.cjs +0 -1
- package/src/helpers/number.ts +0 -40
|
@@ -6,47 +6,50 @@ describe('SwapKitNumber', () => {
|
|
|
6
6
|
describe('constructors', () => {
|
|
7
7
|
test('creates numbers correctly', () => {
|
|
8
8
|
const skNumber1 = new SwapKitNumber(1);
|
|
9
|
-
expect(skNumber1.
|
|
10
|
-
expect(skNumber1.
|
|
9
|
+
expect(skNumber1.getValue('string')).toBe('1');
|
|
10
|
+
expect(skNumber1.getValue('number')).toBe(1);
|
|
11
|
+
expect(skNumber1.getBaseValue('bigint')).toBe(100000000n);
|
|
11
12
|
|
|
12
13
|
const skNumber2 = new SwapKitNumber('1');
|
|
13
|
-
expect(skNumber2.
|
|
14
|
-
expect(skNumber2.
|
|
14
|
+
expect(skNumber2.getValue('string')).toBe('1');
|
|
15
|
+
expect(skNumber2.getBaseValue('bigint')).toBe(100000000n);
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* because by default we have 8 decimals - it will be rounded to 0 on base value
|
|
19
|
+
*/
|
|
16
20
|
const skNumber3 = new SwapKitNumber('0.0000000001');
|
|
17
|
-
expect(skNumber3.
|
|
18
|
-
expect(skNumber3.
|
|
19
|
-
|
|
20
|
-
const skNumber4 = new SwapKitNumber(0.
|
|
21
|
-
expect(skNumber4.
|
|
22
|
-
expect(skNumber4.
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
expect(
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
32
|
-
expect(
|
|
33
|
-
expect(
|
|
34
|
-
expect(skNumber7.toString()).toBe('-0.101');
|
|
21
|
+
expect(skNumber3.getValue('string')).toBe('0.0000000001');
|
|
22
|
+
expect(skNumber3.getBaseValue('bigint')).toBe(0n);
|
|
23
|
+
|
|
24
|
+
const skNumber4 = new SwapKitNumber({ value: '0.0000000001', decimal: 10 });
|
|
25
|
+
expect(skNumber4.getValue('string')).toBe('0.0000000001');
|
|
26
|
+
expect(skNumber4.getBaseValue('bigint')).toBe(1n);
|
|
27
|
+
|
|
28
|
+
const skNumber5 = new SwapKitNumber({ value: 0.1005, decimal: 3 });
|
|
29
|
+
expect(skNumber5.getValue('string')).toBe('0.101');
|
|
30
|
+
expect(skNumber5.getBaseValue('bigint')).toBe(100n);
|
|
31
|
+
|
|
32
|
+
const skNumber6 = new SwapKitNumber({ value: -0.1005, decimal: 3 });
|
|
33
|
+
expect(skNumber6.getValue('string')).toBe('-0.101');
|
|
34
|
+
expect(skNumber6.getBaseValue('bigint')).toBe(-100n);
|
|
35
|
+
expect(skNumber6.decimal).toBe(3);
|
|
36
|
+
expect(skNumber6.getValue('number')).toBe(-0.101);
|
|
37
|
+
expect(skNumber6.decimalMultiplier).toBe(100000000n);
|
|
35
38
|
});
|
|
36
39
|
|
|
37
40
|
test('creates SwapKitInstance from BigInt: (12.345678901234, decimals: 12)', () => {
|
|
38
41
|
const skNumber = SwapKitNumber.fromBigInt(12345678901234n, 12);
|
|
39
42
|
|
|
40
|
-
expect(skNumber.
|
|
41
|
-
expect(skNumber.
|
|
43
|
+
expect(skNumber.getValue('string')).toBe('12.345678901234');
|
|
44
|
+
expect(skNumber.getBaseValue('bigint')).toBe(12345678901234n);
|
|
42
45
|
});
|
|
43
46
|
});
|
|
44
47
|
|
|
45
48
|
describe('shiftDecimals', () => {
|
|
46
49
|
test('shifts up and bumps number', () => {
|
|
47
50
|
const skNumber = new SwapKitNumber(1);
|
|
48
|
-
expect(skNumber.
|
|
49
|
-
expect(skNumber.
|
|
51
|
+
expect(skNumber.getValue('string')).toBe('1');
|
|
52
|
+
expect(skNumber.getBaseValue('bigint')).toBe(100000000n);
|
|
50
53
|
|
|
51
54
|
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
52
55
|
value: skNumber,
|
|
@@ -54,14 +57,14 @@ describe('SwapKitNumber', () => {
|
|
|
54
57
|
to: 8,
|
|
55
58
|
});
|
|
56
59
|
|
|
57
|
-
expect(shiftedSkNumber.
|
|
58
|
-
expect(shiftedSkNumber.
|
|
60
|
+
expect(shiftedSkNumber.getValue('string')).toBe('100');
|
|
61
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(10000000000n);
|
|
59
62
|
});
|
|
60
63
|
|
|
61
|
-
test
|
|
64
|
+
test('shifts down and rounds down number', () => {
|
|
62
65
|
const skNumber = new SwapKitNumber(2.12345678);
|
|
63
|
-
expect(skNumber.
|
|
64
|
-
expect(skNumber.
|
|
66
|
+
expect(skNumber.getValue('string')).toBe('2.12345678');
|
|
67
|
+
expect(skNumber.getBaseValue('bigint')).toBe(212345678n);
|
|
65
68
|
|
|
66
69
|
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
67
70
|
value: skNumber,
|
|
@@ -69,8 +72,84 @@ describe('SwapKitNumber', () => {
|
|
|
69
72
|
to: 6,
|
|
70
73
|
});
|
|
71
74
|
|
|
72
|
-
expect(shiftedSkNumber.
|
|
73
|
-
expect(shiftedSkNumber.
|
|
75
|
+
expect(shiftedSkNumber.getValue('string')).toBe('2.123456');
|
|
76
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(2123456n);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe('getValue', () => {
|
|
81
|
+
describe('string', () => {
|
|
82
|
+
test('returns string value', () => {
|
|
83
|
+
const skNumber = new SwapKitNumber(1);
|
|
84
|
+
expect(skNumber.getValue('string')).toBe('1');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('returns string value with decimals', () => {
|
|
88
|
+
const skNumber = new SwapKitNumber(0.01);
|
|
89
|
+
expect(skNumber.getValue('string')).toBe('0.01');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('number', () => {
|
|
94
|
+
test('returns number value', () => {
|
|
95
|
+
const skNumber = new SwapKitNumber(1);
|
|
96
|
+
expect(skNumber.getValue('number')).toBe(1);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test('returns number value with decimals', () => {
|
|
100
|
+
const skNumber = new SwapKitNumber(0.01);
|
|
101
|
+
expect(skNumber.getValue('number')).toBe(0.01);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe('bigint', () => {
|
|
106
|
+
test('returns bigint value', () => {
|
|
107
|
+
const skNumber = new SwapKitNumber(1);
|
|
108
|
+
expect(skNumber.getBaseValue('bigint')).toBe(100000000n);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
describe('toSignificant', () => {
|
|
114
|
+
describe('normal cases', () => {
|
|
115
|
+
test('returns first significant number of digits', () => {
|
|
116
|
+
const usdLikeNumber = new SwapKitNumber(1234.5678);
|
|
117
|
+
expect(usdLikeNumber.toSignificant(2)).toBe('1200');
|
|
118
|
+
expect(usdLikeNumber.toSignificant(3)).toBe('1230');
|
|
119
|
+
expect(usdLikeNumber.toSignificant(4)).toBe('1234');
|
|
120
|
+
expect(usdLikeNumber.toSignificant(5)).toBe('1234.5');
|
|
121
|
+
expect(usdLikeNumber.toSignificant(6)).toBe('1234.56');
|
|
122
|
+
expect(usdLikeNumber.toSignificant(7)).toBe('1234.567');
|
|
123
|
+
expect(usdLikeNumber.toSignificant(8)).toBe('1234.5678');
|
|
124
|
+
|
|
125
|
+
const btcLikeNumber = new SwapKitNumber(0.00005678);
|
|
126
|
+
expect(btcLikeNumber.toSignificant(2)).toBe('0.000056');
|
|
127
|
+
expect(btcLikeNumber.toSignificant(3)).toBe('0.0000567');
|
|
128
|
+
expect(btcLikeNumber.toSignificant(4)).toBe('0.00005678');
|
|
129
|
+
expect(btcLikeNumber.toSignificant(5)).toBe('0.00005678');
|
|
130
|
+
expect(btcLikeNumber.toSignificant(8)).toBe('0.00005678');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
describe('custom decimals', () => {
|
|
135
|
+
test('returns first significant number of digits', () => {
|
|
136
|
+
const usdLikeNumber = new SwapKitNumber({ value: 1234.5678, decimal: 2 });
|
|
137
|
+
expect(usdLikeNumber.toSignificant(2)).toBe('1200');
|
|
138
|
+
expect(usdLikeNumber.toSignificant(3)).toBe('1230');
|
|
139
|
+
expect(usdLikeNumber.toSignificant(4)).toBe('1234');
|
|
140
|
+
expect(usdLikeNumber.toSignificant(5)).toBe('1234.5');
|
|
141
|
+
expect(usdLikeNumber.toSignificant(6)).toBe('1234.57');
|
|
142
|
+
expect(usdLikeNumber.toSignificant(7)).toBe('1234.57');
|
|
143
|
+
expect(usdLikeNumber.toSignificant(8)).toBe('1234.57');
|
|
144
|
+
|
|
145
|
+
const ethLikeNumber = new SwapKitNumber({ value: 0.00005678, decimal: 18 });
|
|
146
|
+
expect(ethLikeNumber.toSignificant(2)).toBe('0.000056');
|
|
147
|
+
expect(ethLikeNumber.toSignificant(3)).toBe('0.0000567');
|
|
148
|
+
expect(ethLikeNumber.toSignificant(4)).toBe('0.00005678');
|
|
149
|
+
expect(ethLikeNumber.toSignificant(5)).toBe('0.00005678');
|
|
150
|
+
expect(ethLikeNumber.toSignificant(8)).toBe('0.00005678');
|
|
151
|
+
expect(ethLikeNumber.toSignificant(18)).toBe('0.00005678');
|
|
152
|
+
});
|
|
74
153
|
});
|
|
75
154
|
});
|
|
76
155
|
|
|
@@ -81,23 +160,23 @@ describe('SwapKitNumber', () => {
|
|
|
81
160
|
const skNumber3 = new SwapKitNumber('0.5');
|
|
82
161
|
const result = skNumber1.add(skNumber2, skNumber3);
|
|
83
162
|
|
|
84
|
-
expect(result.
|
|
85
|
-
expect(result.
|
|
163
|
+
expect(result.getValue('string')).toBe('15.5');
|
|
164
|
+
expect(result.getBaseValue('bigint')).toBe(1550000000n);
|
|
86
165
|
});
|
|
87
166
|
|
|
88
167
|
test('adds different type numbers correctly', () => {
|
|
89
168
|
const skNumber1 = new SwapKitNumber(10);
|
|
90
169
|
const result = skNumber1.add(6, '0.5');
|
|
91
170
|
|
|
92
|
-
expect(result.
|
|
93
|
-
expect(result.
|
|
171
|
+
expect(result.getValue('string')).toBe('16.5');
|
|
172
|
+
expect(result.getBaseValue('bigint')).toBe(1650000000n);
|
|
94
173
|
});
|
|
95
174
|
|
|
96
175
|
test('adds large decimal numbers correctly', () => {
|
|
97
176
|
const skNumber1 = new SwapKitNumber(0.0000000001);
|
|
98
177
|
const result = skNumber1.add(6.000000000001, '0.0000000000000005');
|
|
99
|
-
expect(result.
|
|
100
|
-
expect(result.
|
|
178
|
+
expect(result.getValue('string')).toBe('6.0000000001010005');
|
|
179
|
+
expect(result.getBaseValue('bigint')).toBe(600000000n);
|
|
101
180
|
});
|
|
102
181
|
});
|
|
103
182
|
|
|
@@ -108,16 +187,16 @@ describe('SwapKitNumber', () => {
|
|
|
108
187
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
109
188
|
const result = skNumber1.sub(skNumber2, skNumber3);
|
|
110
189
|
|
|
111
|
-
expect(result.
|
|
112
|
-
expect(result.
|
|
190
|
+
expect(result.getValue('string')).toBe('4.5');
|
|
191
|
+
expect(result.getBaseValue('bigint')).toBe(450000000n);
|
|
113
192
|
});
|
|
114
193
|
|
|
115
194
|
test('subtracts different type numbers correctly', () => {
|
|
116
195
|
const skNumber1 = new SwapKitNumber(10);
|
|
117
196
|
const result = skNumber1.sub(6, '0.5');
|
|
118
197
|
|
|
119
|
-
expect(result.
|
|
120
|
-
expect(result.
|
|
198
|
+
expect(result.getValue('string')).toBe('3.5');
|
|
199
|
+
expect(result.getBaseValue('bigint')).toBe(350000000n);
|
|
121
200
|
});
|
|
122
201
|
|
|
123
202
|
test('can process negative results', () => {
|
|
@@ -125,10 +204,10 @@ describe('SwapKitNumber', () => {
|
|
|
125
204
|
const result0 = skNumber1.sub(10);
|
|
126
205
|
const resultMinus = result0.sub('10');
|
|
127
206
|
|
|
128
|
-
expect(result0.
|
|
129
|
-
expect(resultMinus.
|
|
130
|
-
expect(result0.
|
|
131
|
-
expect(resultMinus.
|
|
207
|
+
expect(result0.getValue('string')).toBe('0');
|
|
208
|
+
expect(resultMinus.getValue('string')).toBe('-10');
|
|
209
|
+
expect(result0.getBaseValue('bigint')).toBe(0n);
|
|
210
|
+
expect(resultMinus.getBaseValue('bigint')).toBe(-1000000000n);
|
|
132
211
|
});
|
|
133
212
|
});
|
|
134
213
|
|
|
@@ -139,36 +218,36 @@ describe('SwapKitNumber', () => {
|
|
|
139
218
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
140
219
|
const result = skNumber1.mul(skNumber2, skNumber3);
|
|
141
220
|
|
|
142
|
-
expect(result.
|
|
143
|
-
expect(result.
|
|
221
|
+
expect(result.getValue('string')).toBe('25');
|
|
222
|
+
expect(result.getBaseValue('bigint')).toBe(2500000000n);
|
|
144
223
|
});
|
|
145
224
|
|
|
146
225
|
test('multiplies different type numbers correctly', () => {
|
|
147
226
|
const skNumber1 = new SwapKitNumber(10);
|
|
148
227
|
const result = skNumber1.mul(6, '0.5');
|
|
149
228
|
|
|
150
|
-
expect(result.
|
|
151
|
-
expect(result.
|
|
229
|
+
expect(result.getValue('string')).toBe('30');
|
|
230
|
+
expect(result.getBaseValue('bigint')).toBe(3000000000n);
|
|
152
231
|
});
|
|
153
232
|
|
|
154
233
|
test('multiplies numbers correctly if decimals of SKN is lower than number multiplied with', () => {
|
|
155
234
|
const skNumber1 = new SwapKitNumber({ value: 1000000, decimal: 4 });
|
|
156
235
|
const result = skNumber1.mul('0.00001');
|
|
157
236
|
|
|
158
|
-
expect(result.
|
|
159
|
-
expect(result.
|
|
237
|
+
expect(result.getValue('string')).toBe('10');
|
|
238
|
+
expect(result.getBaseValue('bigint')).toBe(100000n);
|
|
160
239
|
});
|
|
161
240
|
|
|
162
241
|
test('should correctly round the result of multiplication', () => {
|
|
163
|
-
const skNumber1 = new SwapKitNumber({ decimal:
|
|
242
|
+
const skNumber1 = new SwapKitNumber({ decimal: 3, value: 1.23 });
|
|
164
243
|
const skNumber2 = new SwapKitNumber({ decimal: 4, value: 4.56 });
|
|
165
244
|
|
|
166
245
|
const result = skNumber1.mul(skNumber2);
|
|
167
246
|
|
|
168
247
|
// The exact result of 1.23 * 4.56 is 5.6088
|
|
169
248
|
// If we round it to 2 decimal places, we should get 5.61
|
|
170
|
-
expect(result.
|
|
171
|
-
expect(result.
|
|
249
|
+
expect(result.getValue('string')).toBe('5.609');
|
|
250
|
+
expect(result.getBaseValue('bigint')).toBe(5608n);
|
|
172
251
|
|
|
173
252
|
const skNumber3 = new SwapKitNumber({ decimal: 2, value: 1.23 });
|
|
174
253
|
const skNumber4 = new SwapKitNumber(-1.234567891);
|
|
@@ -177,8 +256,8 @@ describe('SwapKitNumber', () => {
|
|
|
177
256
|
|
|
178
257
|
// The exact result of 1.23 * -1.234567891 is -1,518518505
|
|
179
258
|
// If we round it to 2 decimal places, we should get 5.61
|
|
180
|
-
expect(result2.
|
|
181
|
-
expect(result2.
|
|
259
|
+
expect(result2.getValue('string')).toBe('-1.52');
|
|
260
|
+
expect(result2.getBaseValue('bigint')).toBe(-151n);
|
|
182
261
|
});
|
|
183
262
|
});
|
|
184
263
|
|
|
@@ -189,38 +268,38 @@ describe('SwapKitNumber', () => {
|
|
|
189
268
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
190
269
|
const result = skNumber1.div(skNumber2, skNumber3);
|
|
191
270
|
|
|
192
|
-
expect(result.
|
|
193
|
-
expect(result.
|
|
271
|
+
expect(result.getValue('string')).toBe('4');
|
|
272
|
+
expect(result.getBaseValue('bigint')).toBe(400000000n);
|
|
194
273
|
|
|
195
274
|
const skNumber4 = new SwapKitNumber(10.12);
|
|
196
275
|
const result2 = skNumber4.div(0.0001);
|
|
197
276
|
|
|
198
|
-
expect(result2.
|
|
199
|
-
expect(result2.
|
|
277
|
+
expect(result2.getValue('string')).toBe('101200');
|
|
278
|
+
expect(result2.getBaseValue('bigint')).toBe(10120000000000n);
|
|
200
279
|
});
|
|
201
280
|
|
|
202
281
|
test('divides different type numbers correctly', () => {
|
|
203
282
|
const skNumber1 = new SwapKitNumber(20);
|
|
204
283
|
const result = skNumber1.div(5, '0.5');
|
|
205
284
|
|
|
206
|
-
expect(result.
|
|
207
|
-
expect(result.
|
|
285
|
+
expect(result.getValue('string')).toBe('8');
|
|
286
|
+
expect(result.getBaseValue('bigint')).toBe(800000000n);
|
|
208
287
|
});
|
|
209
288
|
|
|
210
289
|
test('divides different type numbers correctly when decimal is set', () => {
|
|
211
290
|
const skNumber1 = new SwapKitNumber({ value: '1.2', decimal: 2 });
|
|
212
291
|
const result = skNumber1.div(0.001);
|
|
213
292
|
|
|
214
|
-
expect(result.
|
|
215
|
-
expect(result.
|
|
293
|
+
expect(result.getValue('string')).toBe('1200');
|
|
294
|
+
expect(result.getBaseValue('bigint')).toBe(120000n);
|
|
216
295
|
});
|
|
217
296
|
|
|
218
297
|
test('divides smaller number by larger number', () => {
|
|
219
298
|
const skNumber1 = new SwapKitNumber(1);
|
|
220
299
|
const result = skNumber1.div(2);
|
|
221
300
|
|
|
222
|
-
expect(result.
|
|
223
|
-
expect(result.
|
|
301
|
+
expect(result.getValue('string')).toBe('0.5');
|
|
302
|
+
expect(result.getBaseValue('bigint')).toBe(50000000n);
|
|
224
303
|
});
|
|
225
304
|
|
|
226
305
|
test('divides a number with 18 decimals by a negative number with less decimals', () => {
|
|
@@ -230,8 +309,8 @@ describe('SwapKitNumber', () => {
|
|
|
230
309
|
const result = skNumber1.div(skNumber2);
|
|
231
310
|
|
|
232
311
|
// The exact result of 1.000000000000000010 / -2 is -0.500000000000000005
|
|
233
|
-
expect(result.
|
|
234
|
-
expect(result.
|
|
312
|
+
expect(result.getValue('string')).toBe('-0.500000000000000005');
|
|
313
|
+
expect(result.getBaseValue('bigint')).toBe(-500000000000000005n);
|
|
235
314
|
});
|
|
236
315
|
|
|
237
316
|
test('divides a number with 2 decimals by a negative number with more decimals', () => {
|
|
@@ -241,8 +320,8 @@ describe('SwapKitNumber', () => {
|
|
|
241
320
|
const result = skNumber1.div(skNumber2);
|
|
242
321
|
|
|
243
322
|
// The exact result of 2 / -0.000005 is -400000
|
|
244
|
-
expect(result.
|
|
245
|
-
expect(result.
|
|
323
|
+
expect(result.getValue('string')).toBe('-400000');
|
|
324
|
+
expect(result.getBaseValue('bigint')).toBe(-40000000n);
|
|
246
325
|
});
|
|
247
326
|
});
|
|
248
327
|
|
|
@@ -252,8 +331,8 @@ describe('SwapKitNumber', () => {
|
|
|
252
331
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
253
332
|
|
|
254
333
|
const result = skNumber1.mul(skNumber2);
|
|
255
|
-
expect(result.
|
|
256
|
-
expect(result.
|
|
334
|
+
expect(result.getValue('string')).toBe('987654321000000987654321000');
|
|
335
|
+
expect(result.getBaseValue('bigint')).toBe(987654321000000987654321000000000000000000000n);
|
|
257
336
|
});
|
|
258
337
|
|
|
259
338
|
test('divide huge numbers', () => {
|
|
@@ -261,8 +340,8 @@ describe('SwapKitNumber', () => {
|
|
|
261
340
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
262
341
|
|
|
263
342
|
const result = skNumber1.div(skNumber2);
|
|
264
|
-
expect(result.
|
|
265
|
-
expect(result.
|
|
343
|
+
expect(result.getValue('string')).toBe('1012.4999999873447625');
|
|
344
|
+
expect(result.getBaseValue('bigint')).toBe(1012499999987344762500n);
|
|
266
345
|
});
|
|
267
346
|
});
|
|
268
347
|
|
|
@@ -59,6 +59,52 @@ const createAssetValue = async (assetString: string, value: number | string = 0)
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
export class AssetValue extends BigIntArithmetics {
|
|
62
|
+
address?: string;
|
|
63
|
+
chain: Chain;
|
|
64
|
+
isSynthetic = false;
|
|
65
|
+
isGasAsset = false;
|
|
66
|
+
symbol: string;
|
|
67
|
+
ticker: string;
|
|
68
|
+
type: ReturnType<typeof getAssetType>;
|
|
69
|
+
|
|
70
|
+
constructor(params: AssetValueParams) {
|
|
71
|
+
super(
|
|
72
|
+
params.value instanceof BigIntArithmetics
|
|
73
|
+
? params.value
|
|
74
|
+
: { decimal: params.decimal, value: params.value },
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const identifier =
|
|
78
|
+
'identifier' in params ? params.identifier : `${params.chain}.${params.symbol}`;
|
|
79
|
+
const assetInfo = getAssetInfo(identifier);
|
|
80
|
+
|
|
81
|
+
this.type = getAssetType(assetInfo);
|
|
82
|
+
this.chain = assetInfo.chain;
|
|
83
|
+
this.ticker = assetInfo.ticker;
|
|
84
|
+
this.symbol = assetInfo.symbol;
|
|
85
|
+
this.address = assetInfo.address;
|
|
86
|
+
this.isSynthetic = assetInfo.isSynthetic;
|
|
87
|
+
this.isGasAsset = assetInfo.isGasAsset;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
get assetValue() {
|
|
91
|
+
return `${this.getValue('string')} ${this.ticker}`;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
toString(short = false) {
|
|
95
|
+
// THOR.RUNE | ETH/ETH
|
|
96
|
+
const shortFormat = this.isSynthetic ? this.ticker : `${this.chain}.${this.ticker}`;
|
|
97
|
+
|
|
98
|
+
return short
|
|
99
|
+
? shortFormat
|
|
100
|
+
: // THOR.ETH/ETH | ETH.USDT-0x1234567890
|
|
101
|
+
`${this.chain}.${this.symbol}`;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
eq({ chain, symbol }: { chain: Chain; symbol: string }) {
|
|
105
|
+
return this.chain === chain && this.symbol === symbol;
|
|
106
|
+
}
|
|
107
|
+
|
|
62
108
|
static async fromString(assetString: string, value: number | string = 0) {
|
|
63
109
|
return createAssetValue(assetString, value);
|
|
64
110
|
}
|
|
@@ -149,46 +195,6 @@ export class AssetValue extends BigIntArithmetics {
|
|
|
149
195
|
},
|
|
150
196
|
);
|
|
151
197
|
}
|
|
152
|
-
|
|
153
|
-
address?: string;
|
|
154
|
-
chain: Chain;
|
|
155
|
-
isSynthetic = false;
|
|
156
|
-
isGasAsset = false;
|
|
157
|
-
symbol: string;
|
|
158
|
-
ticker: string;
|
|
159
|
-
type: ReturnType<typeof getAssetType>;
|
|
160
|
-
|
|
161
|
-
constructor(params: AssetValueParams) {
|
|
162
|
-
super(
|
|
163
|
-
params.value instanceof BigIntArithmetics
|
|
164
|
-
? params.value
|
|
165
|
-
: { decimal: params.decimal, value: params.value },
|
|
166
|
-
);
|
|
167
|
-
|
|
168
|
-
const identifier =
|
|
169
|
-
'identifier' in params ? params.identifier : `${params.chain}.${params.symbol}`;
|
|
170
|
-
const assetInfo = getAssetInfo(identifier);
|
|
171
|
-
|
|
172
|
-
this.type = getAssetType(assetInfo);
|
|
173
|
-
this.chain = assetInfo.chain;
|
|
174
|
-
this.ticker = assetInfo.ticker;
|
|
175
|
-
this.symbol = assetInfo.symbol;
|
|
176
|
-
this.address = assetInfo.address;
|
|
177
|
-
this.isSynthetic = assetInfo.isSynthetic;
|
|
178
|
-
this.isGasAsset = assetInfo.isGasAsset;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
get assetValue() {
|
|
182
|
-
return `${this.value} ${this.ticker}`;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
toString() {
|
|
186
|
-
return `${this.chain}.${this.symbol}`;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
eq({ chain, symbol }: { chain: Chain; symbol: string }) {
|
|
190
|
-
return this.chain === chain && this.symbol === symbol;
|
|
191
|
-
}
|
|
192
198
|
}
|
|
193
199
|
|
|
194
200
|
export const getMinAmountByChain = (chain: Chain) => {
|