@uniswap/sdk-core 7.6.0 → 7.7.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 (246) hide show
  1. package/dist/{addresses.d.ts → cjs/src/addresses.d.ts} +58 -58
  2. package/dist/cjs/src/addresses.js +433 -0
  3. package/dist/cjs/src/addresses.js.map +1 -0
  4. package/dist/cjs/src/addresses.test.d.ts +1 -0
  5. package/dist/cjs/src/addresses.test.js +41 -0
  6. package/dist/cjs/src/addresses.test.js.map +1 -0
  7. package/dist/{chains.d.ts → cjs/src/chains.d.ts} +44 -44
  8. package/dist/cjs/src/chains.js +79 -0
  9. package/dist/cjs/src/chains.js.map +1 -0
  10. package/dist/{constants.d.ts → cjs/src/constants.d.ts} +12 -12
  11. package/dist/cjs/src/constants.js +18 -0
  12. package/dist/cjs/src/constants.js.map +1 -0
  13. package/dist/{entities → cjs/src/entities}/baseCurrency.d.ts +49 -49
  14. package/dist/cjs/src/entities/baseCurrency.js +27 -0
  15. package/dist/cjs/src/entities/baseCurrency.js.map +1 -0
  16. package/dist/{entities → cjs/src/entities}/currency.d.ts +3 -3
  17. package/dist/cjs/src/entities/currency.js +3 -0
  18. package/dist/cjs/src/entities/currency.js.map +1 -0
  19. package/dist/cjs/src/entities/currency.test.d.ts +1 -0
  20. package/dist/cjs/src/entities/currency.test.js +27 -0
  21. package/dist/cjs/src/entities/currency.test.js.map +1 -0
  22. package/dist/{entities → cjs/src/entities}/ether.d.ts +13 -13
  23. package/dist/cjs/src/entities/ether.js +30 -0
  24. package/dist/cjs/src/entities/ether.js.map +1 -0
  25. package/dist/cjs/src/entities/ether.test.d.ts +1 -0
  26. package/dist/cjs/src/entities/ether.test.js +19 -0
  27. package/dist/cjs/src/entities/ether.test.js.map +1 -0
  28. package/dist/{entities → cjs/src/entities}/fractions/currencyAmount.d.ts +31 -31
  29. package/dist/cjs/src/entities/fractions/currencyAmount.js +72 -0
  30. package/dist/cjs/src/entities/fractions/currencyAmount.js.map +1 -0
  31. package/dist/cjs/src/entities/fractions/currencyAmount.test.d.ts +1 -0
  32. package/dist/cjs/src/entities/fractions/currencyAmount.test.js +99 -0
  33. package/dist/cjs/src/entities/fractions/currencyAmount.test.js.map +1 -0
  34. package/dist/{entities → cjs/src/entities}/fractions/fraction.d.ts +24 -24
  35. package/dist/cjs/src/entities/fractions/fraction.js +104 -0
  36. package/dist/cjs/src/entities/fractions/fraction.js.map +1 -0
  37. package/dist/cjs/src/entities/fractions/fraction.test.d.ts +1 -0
  38. package/dist/cjs/src/entities/fractions/fraction.test.js +86 -0
  39. package/dist/cjs/src/entities/fractions/fraction.test.js.map +1 -0
  40. package/dist/{entities → cjs/src/entities}/fractions/index.d.ts +4 -4
  41. package/dist/cjs/src/entities/fractions/index.js +12 -0
  42. package/dist/cjs/src/entities/fractions/index.js.map +1 -0
  43. package/dist/{entities → cjs/src/entities}/fractions/percent.d.ts +14 -14
  44. package/dist/cjs/src/entities/fractions/percent.js +43 -0
  45. package/dist/cjs/src/entities/fractions/percent.js.map +1 -0
  46. package/dist/cjs/src/entities/fractions/percent.test.d.ts +1 -0
  47. package/dist/cjs/src/entities/fractions/percent.test.js +53 -0
  48. package/dist/cjs/src/entities/fractions/percent.test.js.map +1 -0
  49. package/dist/{entities → cjs/src/entities}/fractions/price.d.ts +38 -38
  50. package/dist/cjs/src/entities/fractions/price.js +73 -0
  51. package/dist/cjs/src/entities/fractions/price.js.map +1 -0
  52. package/dist/cjs/src/entities/fractions/price.test.d.ts +1 -0
  53. package/dist/cjs/src/entities/fractions/price.test.js +58 -0
  54. package/dist/cjs/src/entities/fractions/price.test.js.map +1 -0
  55. package/dist/{entities → cjs/src/entities}/index.d.ts +6 -6
  56. package/dist/cjs/src/entities/index.js +10 -0
  57. package/dist/cjs/src/entities/index.js.map +1 -0
  58. package/dist/{entities → cjs/src/entities}/nativeCurrency.d.ts +8 -8
  59. package/dist/cjs/src/entities/nativeCurrency.js +16 -0
  60. package/dist/cjs/src/entities/nativeCurrency.js.map +1 -0
  61. package/dist/{entities → cjs/src/entities}/token.d.ts +48 -48
  62. package/dist/cjs/src/entities/token.js +69 -0
  63. package/dist/cjs/src/entities/token.js.map +1 -0
  64. package/dist/cjs/src/entities/token.test.d.ts +1 -0
  65. package/dist/cjs/src/entities/token.test.js +74 -0
  66. package/dist/cjs/src/entities/token.test.js.map +1 -0
  67. package/dist/{entities → cjs/src/entities}/weth9.d.ts +7 -7
  68. package/dist/cjs/src/entities/weth9.js +35 -0
  69. package/dist/cjs/src/entities/weth9.js.map +1 -0
  70. package/dist/{index.d.ts → cjs/src/index.d.ts} +5 -5
  71. package/dist/cjs/src/index.js +9 -0
  72. package/dist/cjs/src/index.js.map +1 -0
  73. package/dist/{utils → cjs/src/utils}/computePriceImpact.d.ts +8 -8
  74. package/dist/cjs/src/utils/computePriceImpact.js +18 -0
  75. package/dist/cjs/src/utils/computePriceImpact.js.map +1 -0
  76. package/dist/cjs/src/utils/computePriceImpact.test.d.ts +1 -0
  77. package/dist/cjs/src/utils/computePriceImpact.test.js +20 -0
  78. package/dist/cjs/src/utils/computePriceImpact.test.js.map +1 -0
  79. package/dist/{utils → cjs/src/utils}/computeZksyncCreate2Address.d.ts +2 -2
  80. package/dist/cjs/src/utils/computeZksyncCreate2Address.js +15 -0
  81. package/dist/cjs/src/utils/computeZksyncCreate2Address.js.map +1 -0
  82. package/dist/{utils → cjs/src/utils}/index.d.ts +5 -5
  83. package/dist/cjs/src/utils/index.js +14 -0
  84. package/dist/cjs/src/utils/index.js.map +1 -0
  85. package/dist/{utils → cjs/src/utils}/sortedInsert.d.ts +1 -1
  86. package/dist/cjs/src/utils/sortedInsert.js +38 -0
  87. package/dist/cjs/src/utils/sortedInsert.js.map +1 -0
  88. package/dist/cjs/src/utils/sortedInsert.test.d.ts +1 -0
  89. package/dist/cjs/src/utils/sortedInsert.test.js +60 -0
  90. package/dist/cjs/src/utils/sortedInsert.test.js.map +1 -0
  91. package/dist/{utils → cjs/src/utils}/sqrt.d.ts +7 -7
  92. package/dist/cjs/src/utils/sqrt.js +32 -0
  93. package/dist/cjs/src/utils/sqrt.js.map +1 -0
  94. package/dist/cjs/src/utils/sqrt.test.d.ts +1 -0
  95. package/dist/cjs/src/utils/sqrt.test.js +26 -0
  96. package/dist/cjs/src/utils/sqrt.test.js.map +1 -0
  97. package/dist/{utils → cjs/src/utils}/validateAndParseAddress.d.ts +10 -10
  98. package/dist/cjs/src/utils/validateAndParseAddress.js +31 -0
  99. package/dist/cjs/src/utils/validateAndParseAddress.js.map +1 -0
  100. package/dist/cjs/src/utils/validateAndParseAddress.test.d.ts +1 -0
  101. package/dist/cjs/src/utils/validateAndParseAddress.test.js +32 -0
  102. package/dist/cjs/src/utils/validateAndParseAddress.test.js.map +1 -0
  103. package/dist/esm/src/addresses.d.ts +58 -0
  104. package/dist/esm/src/addresses.js +429 -0
  105. package/dist/esm/src/addresses.js.map +1 -0
  106. package/dist/esm/src/addresses.test.d.ts +1 -0
  107. package/dist/esm/src/addresses.test.js +39 -0
  108. package/dist/esm/src/addresses.test.js.map +1 -0
  109. package/dist/esm/src/chains.d.ts +44 -0
  110. package/dist/esm/src/chains.js +76 -0
  111. package/dist/esm/src/chains.js.map +1 -0
  112. package/dist/esm/src/constants.d.ts +12 -0
  113. package/dist/esm/src/constants.js +14 -0
  114. package/dist/esm/src/constants.js.map +1 -0
  115. package/dist/esm/src/entities/baseCurrency.d.ts +49 -0
  116. package/dist/esm/src/entities/baseCurrency.js +22 -0
  117. package/dist/esm/src/entities/baseCurrency.js.map +1 -0
  118. package/dist/esm/src/entities/currency.d.ts +3 -0
  119. package/dist/esm/src/entities/currency.js +2 -0
  120. package/dist/esm/src/entities/currency.js.map +1 -0
  121. package/dist/esm/src/entities/currency.test.d.ts +1 -0
  122. package/dist/esm/src/entities/currency.test.js +25 -0
  123. package/dist/esm/src/entities/currency.test.js.map +1 -0
  124. package/dist/esm/src/entities/ether.d.ts +13 -0
  125. package/dist/esm/src/entities/ether.js +25 -0
  126. package/dist/esm/src/entities/ether.js.map +1 -0
  127. package/dist/esm/src/entities/ether.test.d.ts +1 -0
  128. package/dist/esm/src/entities/ether.test.js +17 -0
  129. package/dist/esm/src/entities/ether.test.js.map +1 -0
  130. package/dist/esm/src/entities/fractions/currencyAmount.d.ts +31 -0
  131. package/dist/esm/src/entities/fractions/currencyAmount.js +67 -0
  132. package/dist/esm/src/entities/fractions/currencyAmount.js.map +1 -0
  133. package/dist/esm/src/entities/fractions/currencyAmount.test.d.ts +1 -0
  134. package/dist/esm/src/entities/fractions/currencyAmount.test.js +96 -0
  135. package/dist/esm/src/entities/fractions/currencyAmount.test.js.map +1 -0
  136. package/dist/esm/src/entities/fractions/fraction.d.ts +24 -0
  137. package/dist/esm/src/entities/fractions/fraction.js +99 -0
  138. package/dist/esm/src/entities/fractions/fraction.js.map +1 -0
  139. package/dist/esm/src/entities/fractions/fraction.test.d.ts +1 -0
  140. package/dist/esm/src/entities/fractions/fraction.test.js +83 -0
  141. package/dist/esm/src/entities/fractions/fraction.test.js.map +1 -0
  142. package/dist/esm/src/entities/fractions/index.d.ts +4 -0
  143. package/dist/esm/src/entities/fractions/index.js +5 -0
  144. package/dist/esm/src/entities/fractions/index.js.map +1 -0
  145. package/dist/esm/src/entities/fractions/percent.d.ts +14 -0
  146. package/dist/esm/src/entities/fractions/percent.js +38 -0
  147. package/dist/esm/src/entities/fractions/percent.js.map +1 -0
  148. package/dist/esm/src/entities/fractions/percent.test.d.ts +1 -0
  149. package/dist/esm/src/entities/fractions/percent.test.js +51 -0
  150. package/dist/esm/src/entities/fractions/percent.test.js.map +1 -0
  151. package/dist/esm/src/entities/fractions/price.d.ts +38 -0
  152. package/dist/esm/src/entities/fractions/price.js +68 -0
  153. package/dist/esm/src/entities/fractions/price.js.map +1 -0
  154. package/dist/esm/src/entities/fractions/price.test.d.ts +1 -0
  155. package/dist/esm/src/entities/fractions/price.test.js +56 -0
  156. package/dist/esm/src/entities/fractions/price.test.js.map +1 -0
  157. package/dist/esm/src/entities/index.d.ts +6 -0
  158. package/dist/esm/src/entities/index.js +7 -0
  159. package/dist/esm/src/entities/index.js.map +1 -0
  160. package/dist/esm/src/entities/nativeCurrency.d.ts +8 -0
  161. package/dist/esm/src/entities/nativeCurrency.js +12 -0
  162. package/dist/esm/src/entities/nativeCurrency.js.map +1 -0
  163. package/dist/esm/src/entities/token.d.ts +48 -0
  164. package/dist/esm/src/entities/token.js +64 -0
  165. package/dist/esm/src/entities/token.js.map +1 -0
  166. package/dist/esm/src/entities/token.test.d.ts +1 -0
  167. package/dist/esm/src/entities/token.test.js +72 -0
  168. package/dist/esm/src/entities/token.test.js.map +1 -0
  169. package/dist/esm/src/entities/weth9.d.ts +7 -0
  170. package/dist/esm/src/entities/weth9.js +32 -0
  171. package/dist/esm/src/entities/weth9.js.map +1 -0
  172. package/dist/esm/src/index.d.ts +5 -0
  173. package/dist/esm/src/index.js +6 -0
  174. package/dist/esm/src/index.js.map +1 -0
  175. package/dist/esm/src/utils/computePriceImpact.d.ts +8 -0
  176. package/dist/esm/src/utils/computePriceImpact.js +14 -0
  177. package/dist/esm/src/utils/computePriceImpact.js.map +1 -0
  178. package/dist/esm/src/utils/computePriceImpact.test.d.ts +1 -0
  179. package/dist/esm/src/utils/computePriceImpact.test.js +18 -0
  180. package/dist/esm/src/utils/computePriceImpact.test.js.map +1 -0
  181. package/dist/esm/src/utils/computeZksyncCreate2Address.d.ts +2 -0
  182. package/dist/esm/src/utils/computeZksyncCreate2Address.js +11 -0
  183. package/dist/esm/src/utils/computeZksyncCreate2Address.js.map +1 -0
  184. package/dist/esm/src/utils/index.d.ts +5 -0
  185. package/dist/esm/src/utils/index.js +6 -0
  186. package/dist/esm/src/utils/index.js.map +1 -0
  187. package/dist/esm/src/utils/sortedInsert.d.ts +1 -0
  188. package/dist/esm/src/utils/sortedInsert.js +33 -0
  189. package/dist/esm/src/utils/sortedInsert.js.map +1 -0
  190. package/dist/esm/src/utils/sortedInsert.test.d.ts +1 -0
  191. package/dist/esm/src/utils/sortedInsert.test.js +58 -0
  192. package/dist/esm/src/utils/sortedInsert.test.js.map +1 -0
  193. package/dist/esm/src/utils/sqrt.d.ts +7 -0
  194. package/dist/esm/src/utils/sqrt.js +27 -0
  195. package/dist/esm/src/utils/sqrt.js.map +1 -0
  196. package/dist/esm/src/utils/sqrt.test.d.ts +1 -0
  197. package/dist/esm/src/utils/sqrt.test.js +23 -0
  198. package/dist/esm/src/utils/sqrt.test.js.map +1 -0
  199. package/dist/esm/src/utils/validateAndParseAddress.d.ts +10 -0
  200. package/dist/esm/src/utils/validateAndParseAddress.js +26 -0
  201. package/dist/esm/src/utils/validateAndParseAddress.js.map +1 -0
  202. package/dist/esm/src/utils/validateAndParseAddress.test.d.ts +1 -0
  203. package/dist/esm/src/utils/validateAndParseAddress.test.js +30 -0
  204. package/dist/esm/src/utils/validateAndParseAddress.test.js.map +1 -0
  205. package/dist/types/src/addresses.d.ts +58 -0
  206. package/dist/types/src/addresses.test.d.ts +1 -0
  207. package/dist/types/src/chains.d.ts +44 -0
  208. package/dist/types/src/constants.d.ts +12 -0
  209. package/dist/types/src/entities/baseCurrency.d.ts +49 -0
  210. package/dist/types/src/entities/currency.d.ts +3 -0
  211. package/dist/types/src/entities/currency.test.d.ts +1 -0
  212. package/dist/types/src/entities/ether.d.ts +13 -0
  213. package/dist/types/src/entities/ether.test.d.ts +1 -0
  214. package/dist/types/src/entities/fractions/currencyAmount.d.ts +31 -0
  215. package/dist/types/src/entities/fractions/currencyAmount.test.d.ts +1 -0
  216. package/dist/types/src/entities/fractions/fraction.d.ts +24 -0
  217. package/dist/types/src/entities/fractions/fraction.test.d.ts +1 -0
  218. package/dist/types/src/entities/fractions/index.d.ts +4 -0
  219. package/dist/types/src/entities/fractions/percent.d.ts +14 -0
  220. package/dist/types/src/entities/fractions/percent.test.d.ts +1 -0
  221. package/dist/types/src/entities/fractions/price.d.ts +38 -0
  222. package/dist/types/src/entities/fractions/price.test.d.ts +1 -0
  223. package/dist/types/src/entities/index.d.ts +6 -0
  224. package/dist/types/src/entities/nativeCurrency.d.ts +8 -0
  225. package/dist/types/src/entities/token.d.ts +48 -0
  226. package/dist/types/src/entities/token.test.d.ts +1 -0
  227. package/dist/types/src/entities/weth9.d.ts +7 -0
  228. package/dist/types/src/index.d.ts +5 -0
  229. package/dist/types/src/utils/computePriceImpact.d.ts +8 -0
  230. package/dist/types/src/utils/computePriceImpact.test.d.ts +1 -0
  231. package/dist/types/src/utils/computeZksyncCreate2Address.d.ts +2 -0
  232. package/dist/types/src/utils/index.d.ts +5 -0
  233. package/dist/types/src/utils/sortedInsert.d.ts +1 -0
  234. package/dist/types/src/utils/sortedInsert.test.d.ts +1 -0
  235. package/dist/types/src/utils/sqrt.d.ts +7 -0
  236. package/dist/types/src/utils/sqrt.test.d.ts +1 -0
  237. package/dist/types/src/utils/validateAndParseAddress.d.ts +10 -0
  238. package/dist/types/src/utils/validateAndParseAddress.test.d.ts +1 -0
  239. package/package.json +28 -10
  240. package/dist/index.js +0 -8
  241. package/dist/sdk-core.cjs.development.js +0 -1138
  242. package/dist/sdk-core.cjs.development.js.map +0 -1
  243. package/dist/sdk-core.cjs.production.min.js +0 -2
  244. package/dist/sdk-core.cjs.production.min.js.map +0 -1
  245. package/dist/sdk-core.esm.js +0 -1099
  246. package/dist/sdk-core.esm.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currencyAmount.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/currencyAmount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
5
+ const constants_1 = require("../../constants");
6
+ const ether_1 = require("../ether");
7
+ const token_1 = require("../token");
8
+ const currencyAmount_1 = require("./currencyAmount");
9
+ const percent_1 = require("./percent");
10
+ describe('CurrencyAmount', () => {
11
+ const ADDRESS_ONE = '0x0000000000000000000000000000000000000001';
12
+ describe('constructor', () => {
13
+ it('works', () => {
14
+ const token = new token_1.Token(1, ADDRESS_ONE, 18);
15
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 100);
16
+ expect(amount.quotient).toEqual(jsbi_1.default.BigInt(100));
17
+ });
18
+ });
19
+ describe('#quotient', () => {
20
+ it('returns the amount after multiplication', () => {
21
+ const token = new token_1.Token(1, ADDRESS_ONE, 18);
22
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 100).multiply(new percent_1.Percent(15, 100));
23
+ expect(amount.quotient).toEqual(jsbi_1.default.BigInt(15));
24
+ });
25
+ });
26
+ describe('#ether', () => {
27
+ it('produces ether amount', () => {
28
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(ether_1.Ether.onChain(1), 100);
29
+ expect(amount.quotient).toEqual(jsbi_1.default.BigInt(100));
30
+ expect(amount.currency).toEqual(ether_1.Ether.onChain(1));
31
+ });
32
+ });
33
+ it('token amount can be max uint256', () => {
34
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(new token_1.Token(1, ADDRESS_ONE, 18), constants_1.MaxUint256);
35
+ expect(amount.quotient).toEqual(constants_1.MaxUint256);
36
+ });
37
+ it('token amount cannot exceed max uint256', () => {
38
+ expect(() => currencyAmount_1.CurrencyAmount.fromRawAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(constants_1.MaxUint256, jsbi_1.default.BigInt(1)))).toThrow('AMOUNT');
39
+ });
40
+ it('token amount quotient cannot exceed max uint256', () => {
41
+ expect(() => currencyAmount_1.CurrencyAmount.fromFractionalAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(jsbi_1.default.multiply(constants_1.MaxUint256, jsbi_1.default.BigInt(2)), jsbi_1.default.BigInt(2)), jsbi_1.default.BigInt(2))).toThrow('AMOUNT');
42
+ });
43
+ it('token amount numerator can be gt. uint256 if denominator is gt. 1', () => {
44
+ const amount = currencyAmount_1.CurrencyAmount.fromFractionalAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(constants_1.MaxUint256, jsbi_1.default.BigInt(2)), 2);
45
+ expect(amount.numerator).toEqual(jsbi_1.default.add(jsbi_1.default.BigInt(2), constants_1.MaxUint256));
46
+ });
47
+ describe('#toFixed', () => {
48
+ it('throws for decimals > currency.decimals', () => {
49
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
50
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
51
+ expect(() => amount.toFixed(3)).toThrow('DECIMALS');
52
+ });
53
+ it('is correct for 0 decimals', () => {
54
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
55
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
56
+ expect(amount.toFixed(0)).toEqual('123456');
57
+ });
58
+ it('is correct for 18 decimals', () => {
59
+ const token = new token_1.Token(1, ADDRESS_ONE, 18);
60
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1e15);
61
+ expect(amount.toFixed(9)).toEqual('0.001000000');
62
+ });
63
+ });
64
+ describe('#toSignificant', () => {
65
+ it('does not throw for sig figs > currency.decimals', () => {
66
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
67
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
68
+ expect(amount.toSignificant(3)).toEqual('1000');
69
+ });
70
+ it('is correct for 0 decimals', () => {
71
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
72
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
73
+ expect(amount.toSignificant(4)).toEqual('123400');
74
+ });
75
+ it('is correct for 18 decimals', () => {
76
+ const token = new token_1.Token(1, ADDRESS_ONE, 18);
77
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1e15);
78
+ expect(amount.toSignificant(9)).toEqual('0.001');
79
+ });
80
+ });
81
+ describe('#toExact', () => {
82
+ it('does not throw for sig figs > currency.decimals', () => {
83
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
84
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
85
+ expect(amount.toExact()).toEqual('1000');
86
+ });
87
+ it('is correct for 0 decimals', () => {
88
+ const token = new token_1.Token(1, ADDRESS_ONE, 0);
89
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
90
+ expect(amount.toExact()).toEqual('123456');
91
+ });
92
+ it('is correct for 18 decimals', () => {
93
+ const token = new token_1.Token(1, ADDRESS_ONE, 18);
94
+ const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123e13);
95
+ expect(amount.toExact()).toEqual('0.00123');
96
+ });
97
+ });
98
+ });
99
+ //# sourceMappingURL=currencyAmount.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currencyAmount.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/currencyAmount.test.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,24 @@
1
- import JSBI from 'jsbi';
2
- import { BigintIsh, Rounding } from '../../constants';
3
- export declare class Fraction {
4
- readonly numerator: JSBI;
5
- readonly denominator: JSBI;
6
- constructor(numerator: BigintIsh, denominator?: BigintIsh);
7
- private static tryParseFraction;
8
- get quotient(): JSBI;
9
- get remainder(): Fraction;
10
- invert(): Fraction;
11
- add(other: Fraction | BigintIsh): Fraction;
12
- subtract(other: Fraction | BigintIsh): Fraction;
13
- lessThan(other: Fraction | BigintIsh): boolean;
14
- equalTo(other: Fraction | BigintIsh): boolean;
15
- greaterThan(other: Fraction | BigintIsh): boolean;
16
- multiply(other: Fraction | BigintIsh): Fraction;
17
- divide(other: Fraction | BigintIsh): Fraction;
18
- toSignificant(significantDigits: number, format?: object, rounding?: Rounding): string;
19
- toFixed(decimalPlaces: number, format?: object, rounding?: Rounding): string;
20
- /**
21
- * Helper method for converting any super class back to a fraction
22
- */
23
- get asFraction(): Fraction;
24
- }
1
+ import JSBI from 'jsbi';
2
+ import { BigintIsh, Rounding } from '../../constants';
3
+ export declare class Fraction {
4
+ readonly numerator: JSBI;
5
+ readonly denominator: JSBI;
6
+ constructor(numerator: BigintIsh, denominator?: BigintIsh);
7
+ private static tryParseFraction;
8
+ get quotient(): JSBI;
9
+ get remainder(): Fraction;
10
+ invert(): Fraction;
11
+ add(other: Fraction | BigintIsh): Fraction;
12
+ subtract(other: Fraction | BigintIsh): Fraction;
13
+ lessThan(other: Fraction | BigintIsh): boolean;
14
+ equalTo(other: Fraction | BigintIsh): boolean;
15
+ greaterThan(other: Fraction | BigintIsh): boolean;
16
+ multiply(other: Fraction | BigintIsh): Fraction;
17
+ divide(other: Fraction | BigintIsh): Fraction;
18
+ toSignificant(significantDigits: number, format?: object, rounding?: Rounding): string;
19
+ toFixed(decimalPlaces: number, format?: object, rounding?: Rounding): string;
20
+ /**
21
+ * Helper method for converting any super class back to a fraction
22
+ */
23
+ get asFraction(): Fraction;
24
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fraction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
6
+ const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
7
+ const decimal_js_light_1 = tslib_1.__importDefault(require("decimal.js-light"));
8
+ const big_js_1 = tslib_1.__importDefault(require("big.js"));
9
+ const toformat_1 = tslib_1.__importDefault(require("toformat"));
10
+ const constants_1 = require("../../constants");
11
+ const Decimal = (0, toformat_1.default)(decimal_js_light_1.default);
12
+ const Big = (0, toformat_1.default)(big_js_1.default);
13
+ const toSignificantRounding = {
14
+ [constants_1.Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,
15
+ [constants_1.Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,
16
+ [constants_1.Rounding.ROUND_UP]: Decimal.ROUND_UP,
17
+ };
18
+ const toFixedRounding = {
19
+ [constants_1.Rounding.ROUND_DOWN]: 0 /* RoundingMode.RoundDown */,
20
+ [constants_1.Rounding.ROUND_HALF_UP]: 1 /* RoundingMode.RoundHalfUp */,
21
+ [constants_1.Rounding.ROUND_UP]: 3 /* RoundingMode.RoundUp */,
22
+ };
23
+ class Fraction {
24
+ constructor(numerator, denominator = jsbi_1.default.BigInt(1)) {
25
+ this.numerator = jsbi_1.default.BigInt(numerator);
26
+ this.denominator = jsbi_1.default.BigInt(denominator);
27
+ }
28
+ static tryParseFraction(fractionish) {
29
+ if (fractionish instanceof jsbi_1.default || typeof fractionish === 'number' || typeof fractionish === 'string')
30
+ return new Fraction(fractionish);
31
+ if ('numerator' in fractionish && 'denominator' in fractionish)
32
+ return fractionish;
33
+ throw new Error('Could not parse fraction');
34
+ }
35
+ // performs floor division
36
+ get quotient() {
37
+ return jsbi_1.default.divide(this.numerator, this.denominator);
38
+ }
39
+ // remainder after floor division
40
+ get remainder() {
41
+ return new Fraction(jsbi_1.default.remainder(this.numerator, this.denominator), this.denominator);
42
+ }
43
+ invert() {
44
+ return new Fraction(this.denominator, this.numerator);
45
+ }
46
+ add(other) {
47
+ const otherParsed = Fraction.tryParseFraction(other);
48
+ if (jsbi_1.default.equal(this.denominator, otherParsed.denominator)) {
49
+ return new Fraction(jsbi_1.default.add(this.numerator, otherParsed.numerator), this.denominator);
50
+ }
51
+ return new Fraction(jsbi_1.default.add(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator)), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
52
+ }
53
+ subtract(other) {
54
+ const otherParsed = Fraction.tryParseFraction(other);
55
+ if (jsbi_1.default.equal(this.denominator, otherParsed.denominator)) {
56
+ return new Fraction(jsbi_1.default.subtract(this.numerator, otherParsed.numerator), this.denominator);
57
+ }
58
+ return new Fraction(jsbi_1.default.subtract(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator)), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
59
+ }
60
+ lessThan(other) {
61
+ const otherParsed = Fraction.tryParseFraction(other);
62
+ return jsbi_1.default.lessThan(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
63
+ }
64
+ equalTo(other) {
65
+ const otherParsed = Fraction.tryParseFraction(other);
66
+ return jsbi_1.default.equal(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
67
+ }
68
+ greaterThan(other) {
69
+ const otherParsed = Fraction.tryParseFraction(other);
70
+ return jsbi_1.default.greaterThan(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
71
+ }
72
+ multiply(other) {
73
+ const otherParsed = Fraction.tryParseFraction(other);
74
+ return new Fraction(jsbi_1.default.multiply(this.numerator, otherParsed.numerator), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
75
+ }
76
+ divide(other) {
77
+ const otherParsed = Fraction.tryParseFraction(other);
78
+ return new Fraction(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(this.denominator, otherParsed.numerator));
79
+ }
80
+ toSignificant(significantDigits, format = { groupSeparator: '' }, rounding = constants_1.Rounding.ROUND_HALF_UP) {
81
+ (0, tiny_invariant_1.default)(Number.isInteger(significantDigits), `${significantDigits} is not an integer.`);
82
+ (0, tiny_invariant_1.default)(significantDigits > 0, `${significantDigits} is not positive.`);
83
+ Decimal.set({ precision: significantDigits + 1, rounding: toSignificantRounding[rounding] });
84
+ const quotient = new Decimal(this.numerator.toString())
85
+ .div(this.denominator.toString())
86
+ .toSignificantDigits(significantDigits);
87
+ return quotient.toFormat(quotient.decimalPlaces(), format);
88
+ }
89
+ toFixed(decimalPlaces, format = { groupSeparator: '' }, rounding = constants_1.Rounding.ROUND_HALF_UP) {
90
+ (0, tiny_invariant_1.default)(Number.isInteger(decimalPlaces), `${decimalPlaces} is not an integer.`);
91
+ (0, tiny_invariant_1.default)(decimalPlaces >= 0, `${decimalPlaces} is negative.`);
92
+ Big.DP = decimalPlaces;
93
+ Big.RM = toFixedRounding[rounding];
94
+ return new Big(this.numerator.toString()).div(this.denominator.toString()).toFormat(decimalPlaces, format);
95
+ }
96
+ /**
97
+ * Helper method for converting any super class back to a fraction
98
+ */
99
+ get asFraction() {
100
+ return new Fraction(this.numerator, this.denominator);
101
+ }
102
+ }
103
+ exports.Fraction = Fraction;
104
+ //# sourceMappingURL=fraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fraction.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/fraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
5
+ const fraction_1 = require("./fraction");
6
+ describe('Fraction', () => {
7
+ describe('#quotient', () => {
8
+ it('floor division', () => {
9
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(8), jsbi_1.default.BigInt(3)).quotient).toEqual(jsbi_1.default.BigInt(2)); // one below
10
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(4)).quotient).toEqual(jsbi_1.default.BigInt(3)); // exact
11
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(16), jsbi_1.default.BigInt(5)).quotient).toEqual(jsbi_1.default.BigInt(3)); // one above
12
+ });
13
+ });
14
+ describe('#remainder', () => {
15
+ it('returns fraction after divison', () => {
16
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(8), jsbi_1.default.BigInt(3)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(3)));
17
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(4)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(0), jsbi_1.default.BigInt(4)));
18
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(16), jsbi_1.default.BigInt(5)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)));
19
+ });
20
+ });
21
+ describe('#invert', () => {
22
+ it('flips num and denom', () => {
23
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(10)).invert().numerator).toEqual(jsbi_1.default.BigInt(10));
24
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(10)).invert().denominator).toEqual(jsbi_1.default.BigInt(5));
25
+ });
26
+ });
27
+ describe('#add', () => {
28
+ it('multiples denoms and adds nums', () => {
29
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).add(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(52), jsbi_1.default.BigInt(120)));
30
+ });
31
+ it('same denom', () => {
32
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)).add(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(5)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(3), jsbi_1.default.BigInt(5)));
33
+ });
34
+ });
35
+ describe('#subtract', () => {
36
+ it('multiples denoms and subtracts nums', () => {
37
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).subtract(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(-28), jsbi_1.default.BigInt(120)));
38
+ });
39
+ it('same denom', () => {
40
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(3), jsbi_1.default.BigInt(5)).subtract(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(5)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)));
41
+ });
42
+ });
43
+ describe('#lessThan', () => {
44
+ it('correct', () => {
45
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
46
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
47
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
48
+ });
49
+ });
50
+ describe('#equalTo', () => {
51
+ it('correct', () => {
52
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
53
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
54
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
55
+ });
56
+ });
57
+ describe('#greaterThan', () => {
58
+ it('correct', () => {
59
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
60
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
61
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
62
+ });
63
+ });
64
+ describe('#multiplty', () => {
65
+ it('correct', () => {
66
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(120)));
67
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(36)));
68
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(20), jsbi_1.default.BigInt(144)));
69
+ });
70
+ });
71
+ describe('#divide', () => {
72
+ it('correct', () => {
73
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(40)));
74
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(12)));
75
+ expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(60), jsbi_1.default.BigInt(48)));
76
+ });
77
+ });
78
+ describe('#asFraction', () => {
79
+ it('returns an equivalent but not the same reference fraction', () => {
80
+ const f = new fraction_1.Fraction(1, 2);
81
+ expect(f.asFraction).toEqual(f);
82
+ expect(f === f.asFraction).toEqual(false);
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=fraction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fraction.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/fraction.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { CurrencyAmount } from './currencyAmount';
2
- export { Fraction } from './fraction';
3
- export { Percent } from './percent';
4
- export { Price } from './price';
1
+ export { CurrencyAmount } from './currencyAmount';
2
+ export { Fraction } from './fraction';
3
+ export { Percent } from './percent';
4
+ export { Price } from './price';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Price = exports.Percent = exports.Fraction = exports.CurrencyAmount = void 0;
4
+ var currencyAmount_1 = require("./currencyAmount");
5
+ Object.defineProperty(exports, "CurrencyAmount", { enumerable: true, get: function () { return currencyAmount_1.CurrencyAmount; } });
6
+ var fraction_1 = require("./fraction");
7
+ Object.defineProperty(exports, "Fraction", { enumerable: true, get: function () { return fraction_1.Fraction; } });
8
+ var percent_1 = require("./percent");
9
+ Object.defineProperty(exports, "Percent", { enumerable: true, get: function () { return percent_1.Percent; } });
10
+ var price_1 = require("./price");
11
+ Object.defineProperty(exports, "Price", { enumerable: true, get: function () { return price_1.Price; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA"}
@@ -1,14 +1,14 @@
1
- import { BigintIsh, Rounding } from '../../constants';
2
- import { Fraction } from './fraction';
3
- export declare class Percent extends Fraction {
4
- /**
5
- * This boolean prevents a fraction from being interpreted as a Percent
6
- */
7
- readonly isPercent: true;
8
- add(other: Fraction | BigintIsh): Percent;
9
- subtract(other: Fraction | BigintIsh): Percent;
10
- multiply(other: Fraction | BigintIsh): Percent;
11
- divide(other: Fraction | BigintIsh): Percent;
12
- toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;
13
- toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string;
14
- }
1
+ import { BigintIsh, Rounding } from '../../constants';
2
+ import { Fraction } from './fraction';
3
+ export declare class Percent extends Fraction {
4
+ /**
5
+ * This boolean prevents a fraction from being interpreted as a Percent
6
+ */
7
+ readonly isPercent: true;
8
+ add(other: Fraction | BigintIsh): Percent;
9
+ subtract(other: Fraction | BigintIsh): Percent;
10
+ multiply(other: Fraction | BigintIsh): Percent;
11
+ divide(other: Fraction | BigintIsh): Percent;
12
+ toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;
13
+ toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string;
14
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Percent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
6
+ const fraction_1 = require("./fraction");
7
+ const ONE_HUNDRED = new fraction_1.Fraction(jsbi_1.default.BigInt(100));
8
+ /**
9
+ * Converts a fraction to a percent
10
+ * @param fraction the fraction to convert
11
+ */
12
+ function toPercent(fraction) {
13
+ return new Percent(fraction.numerator, fraction.denominator);
14
+ }
15
+ class Percent extends fraction_1.Fraction {
16
+ constructor() {
17
+ super(...arguments);
18
+ /**
19
+ * This boolean prevents a fraction from being interpreted as a Percent
20
+ */
21
+ this.isPercent = true;
22
+ }
23
+ add(other) {
24
+ return toPercent(super.add(other));
25
+ }
26
+ subtract(other) {
27
+ return toPercent(super.subtract(other));
28
+ }
29
+ multiply(other) {
30
+ return toPercent(super.multiply(other));
31
+ }
32
+ divide(other) {
33
+ return toPercent(super.divide(other));
34
+ }
35
+ toSignificant(significantDigits = 5, format, rounding) {
36
+ return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);
37
+ }
38
+ toFixed(decimalPlaces = 2, format, rounding) {
39
+ return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);
40
+ }
41
+ }
42
+ exports.Percent = Percent;
43
+ //# sourceMappingURL=percent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percent.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/percent.ts"],"names":[],"mappings":";;;;AAAA,wDAAuB;AAEvB,yCAAqC;AAErC,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAElD;;;GAGG;AACH,SAAS,SAAS,CAAC,QAAkB;IACnC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9D,CAAC;AAED,MAAa,OAAQ,SAAQ,mBAAQ;IAArC;;QACE;;WAEG;QACa,cAAS,GAAS,IAAI,CAAA;IAyBxC,CAAC;IAvBC,GAAG,CAAC,KAA2B;QAC7B,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,KAA2B;QAChC,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,aAAa,CAAC,oBAA4B,CAAC,EAAE,MAAe,EAAE,QAAmB;QACtF,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACvF,CAAC;IAEM,OAAO,CAAC,gBAAwB,CAAC,EAAE,MAAe,EAAE,QAAmB;QAC5E,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7E,CAAC;CACF;AA7BD,0BA6BC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const percent_1 = require("./percent");
4
+ describe('Percent', () => {
5
+ describe('constructor', () => {
6
+ it('defaults to 1 denominator', () => {
7
+ expect(new percent_1.Percent(1)).toEqual(new percent_1.Percent(1, 1));
8
+ });
9
+ });
10
+ describe('#add', () => {
11
+ it('returns a percent', () => {
12
+ expect(new percent_1.Percent(1, 100).add(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(3, 100));
13
+ });
14
+ it('different denominators', () => {
15
+ expect(new percent_1.Percent(1, 25).add(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(150, 2500));
16
+ });
17
+ });
18
+ describe('#subtract', () => {
19
+ it('returns a percent', () => {
20
+ expect(new percent_1.Percent(1, 100).subtract(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(-1, 100));
21
+ });
22
+ it('different denominators', () => {
23
+ expect(new percent_1.Percent(1, 25).subtract(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(50, 2500));
24
+ });
25
+ });
26
+ describe('#multiply', () => {
27
+ it('returns a percent', () => {
28
+ expect(new percent_1.Percent(1, 100).multiply(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(2, 10000));
29
+ });
30
+ it('different denominators', () => {
31
+ expect(new percent_1.Percent(1, 25).multiply(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(2, 2500));
32
+ });
33
+ });
34
+ describe('#divide', () => {
35
+ it('returns a percent', () => {
36
+ expect(new percent_1.Percent(1, 100).divide(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(100, 200));
37
+ });
38
+ it('different denominators', () => {
39
+ expect(new percent_1.Percent(1, 25).divide(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(100, 50));
40
+ });
41
+ });
42
+ describe('#toSignificant', () => {
43
+ it('returns the value scaled by 100', () => {
44
+ expect(new percent_1.Percent(154, 10000).toSignificant(3)).toEqual('1.54');
45
+ });
46
+ });
47
+ describe('#toFixed', () => {
48
+ it('returns the value scaled by 100', () => {
49
+ expect(new percent_1.Percent(154, 10000).toFixed(2)).toEqual('1.54');
50
+ });
51
+ });
52
+ });
53
+ //# sourceMappingURL=percent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percent.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/percent.test.ts"],"names":[],"mappings":"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"}