@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.
- package/dist/{addresses.d.ts → cjs/src/addresses.d.ts} +58 -58
- package/dist/cjs/src/addresses.js +433 -0
- package/dist/cjs/src/addresses.js.map +1 -0
- package/dist/cjs/src/addresses.test.d.ts +1 -0
- package/dist/cjs/src/addresses.test.js +41 -0
- package/dist/cjs/src/addresses.test.js.map +1 -0
- package/dist/{chains.d.ts → cjs/src/chains.d.ts} +44 -44
- package/dist/cjs/src/chains.js +79 -0
- package/dist/cjs/src/chains.js.map +1 -0
- package/dist/{constants.d.ts → cjs/src/constants.d.ts} +12 -12
- package/dist/cjs/src/constants.js +18 -0
- package/dist/cjs/src/constants.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/baseCurrency.d.ts +49 -49
- package/dist/cjs/src/entities/baseCurrency.js +27 -0
- package/dist/cjs/src/entities/baseCurrency.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/currency.d.ts +3 -3
- package/dist/cjs/src/entities/currency.js +3 -0
- package/dist/cjs/src/entities/currency.js.map +1 -0
- package/dist/cjs/src/entities/currency.test.d.ts +1 -0
- package/dist/cjs/src/entities/currency.test.js +27 -0
- package/dist/cjs/src/entities/currency.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/ether.d.ts +13 -13
- package/dist/cjs/src/entities/ether.js +30 -0
- package/dist/cjs/src/entities/ether.js.map +1 -0
- package/dist/cjs/src/entities/ether.test.d.ts +1 -0
- package/dist/cjs/src/entities/ether.test.js +19 -0
- package/dist/cjs/src/entities/ether.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/currencyAmount.d.ts +31 -31
- package/dist/cjs/src/entities/fractions/currencyAmount.js +72 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.js.map +1 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.js +99 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/fraction.d.ts +24 -24
- package/dist/cjs/src/entities/fractions/fraction.js +104 -0
- package/dist/cjs/src/entities/fractions/fraction.js.map +1 -0
- package/dist/cjs/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/fraction.test.js +86 -0
- package/dist/cjs/src/entities/fractions/fraction.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/index.d.ts +4 -4
- package/dist/cjs/src/entities/fractions/index.js +12 -0
- package/dist/cjs/src/entities/fractions/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/percent.d.ts +14 -14
- package/dist/cjs/src/entities/fractions/percent.js +43 -0
- package/dist/cjs/src/entities/fractions/percent.js.map +1 -0
- package/dist/cjs/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/percent.test.js +53 -0
- package/dist/cjs/src/entities/fractions/percent.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/price.d.ts +38 -38
- package/dist/cjs/src/entities/fractions/price.js +73 -0
- package/dist/cjs/src/entities/fractions/price.js.map +1 -0
- package/dist/cjs/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/price.test.js +58 -0
- package/dist/cjs/src/entities/fractions/price.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/index.d.ts +6 -6
- package/dist/cjs/src/entities/index.js +10 -0
- package/dist/cjs/src/entities/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/nativeCurrency.d.ts +8 -8
- package/dist/cjs/src/entities/nativeCurrency.js +16 -0
- package/dist/cjs/src/entities/nativeCurrency.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/token.d.ts +48 -48
- package/dist/cjs/src/entities/token.js +69 -0
- package/dist/cjs/src/entities/token.js.map +1 -0
- package/dist/cjs/src/entities/token.test.d.ts +1 -0
- package/dist/cjs/src/entities/token.test.js +74 -0
- package/dist/cjs/src/entities/token.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/weth9.d.ts +7 -7
- package/dist/cjs/src/entities/weth9.js +35 -0
- package/dist/cjs/src/entities/weth9.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +5 -5
- package/dist/cjs/src/index.js +9 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/computePriceImpact.d.ts +8 -8
- package/dist/cjs/src/utils/computePriceImpact.js +18 -0
- package/dist/cjs/src/utils/computePriceImpact.js.map +1 -0
- package/dist/cjs/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/cjs/src/utils/computePriceImpact.test.js +20 -0
- package/dist/cjs/src/utils/computePriceImpact.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/computeZksyncCreate2Address.d.ts +2 -2
- package/dist/cjs/src/utils/computeZksyncCreate2Address.js +15 -0
- package/dist/cjs/src/utils/computeZksyncCreate2Address.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/index.d.ts +5 -5
- package/dist/cjs/src/utils/index.js +14 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/sortedInsert.d.ts +1 -1
- package/dist/cjs/src/utils/sortedInsert.js +38 -0
- package/dist/cjs/src/utils/sortedInsert.js.map +1 -0
- package/dist/cjs/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/cjs/src/utils/sortedInsert.test.js +60 -0
- package/dist/cjs/src/utils/sortedInsert.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/sqrt.d.ts +7 -7
- package/dist/cjs/src/utils/sqrt.js +32 -0
- package/dist/cjs/src/utils/sqrt.js.map +1 -0
- package/dist/cjs/src/utils/sqrt.test.d.ts +1 -0
- package/dist/cjs/src/utils/sqrt.test.js +26 -0
- package/dist/cjs/src/utils/sqrt.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/validateAndParseAddress.d.ts +10 -10
- package/dist/cjs/src/utils/validateAndParseAddress.js +31 -0
- package/dist/cjs/src/utils/validateAndParseAddress.js.map +1 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.js +32 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.js.map +1 -0
- package/dist/esm/src/addresses.d.ts +58 -0
- package/dist/esm/src/addresses.js +429 -0
- package/dist/esm/src/addresses.js.map +1 -0
- package/dist/esm/src/addresses.test.d.ts +1 -0
- package/dist/esm/src/addresses.test.js +39 -0
- package/dist/esm/src/addresses.test.js.map +1 -0
- package/dist/esm/src/chains.d.ts +44 -0
- package/dist/esm/src/chains.js +76 -0
- package/dist/esm/src/chains.js.map +1 -0
- package/dist/esm/src/constants.d.ts +12 -0
- package/dist/esm/src/constants.js +14 -0
- package/dist/esm/src/constants.js.map +1 -0
- package/dist/esm/src/entities/baseCurrency.d.ts +49 -0
- package/dist/esm/src/entities/baseCurrency.js +22 -0
- package/dist/esm/src/entities/baseCurrency.js.map +1 -0
- package/dist/esm/src/entities/currency.d.ts +3 -0
- package/dist/esm/src/entities/currency.js +2 -0
- package/dist/esm/src/entities/currency.js.map +1 -0
- package/dist/esm/src/entities/currency.test.d.ts +1 -0
- package/dist/esm/src/entities/currency.test.js +25 -0
- package/dist/esm/src/entities/currency.test.js.map +1 -0
- package/dist/esm/src/entities/ether.d.ts +13 -0
- package/dist/esm/src/entities/ether.js +25 -0
- package/dist/esm/src/entities/ether.js.map +1 -0
- package/dist/esm/src/entities/ether.test.d.ts +1 -0
- package/dist/esm/src/entities/ether.test.js +17 -0
- package/dist/esm/src/entities/ether.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.d.ts +31 -0
- package/dist/esm/src/entities/fractions/currencyAmount.js +67 -0
- package/dist/esm/src/entities/fractions/currencyAmount.js.map +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.js +96 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/fraction.d.ts +24 -0
- package/dist/esm/src/entities/fractions/fraction.js +99 -0
- package/dist/esm/src/entities/fractions/fraction.js.map +1 -0
- package/dist/esm/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/fraction.test.js +83 -0
- package/dist/esm/src/entities/fractions/fraction.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/index.d.ts +4 -0
- package/dist/esm/src/entities/fractions/index.js +5 -0
- package/dist/esm/src/entities/fractions/index.js.map +1 -0
- package/dist/esm/src/entities/fractions/percent.d.ts +14 -0
- package/dist/esm/src/entities/fractions/percent.js +38 -0
- package/dist/esm/src/entities/fractions/percent.js.map +1 -0
- package/dist/esm/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/percent.test.js +51 -0
- package/dist/esm/src/entities/fractions/percent.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/price.d.ts +38 -0
- package/dist/esm/src/entities/fractions/price.js +68 -0
- package/dist/esm/src/entities/fractions/price.js.map +1 -0
- package/dist/esm/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/price.test.js +56 -0
- package/dist/esm/src/entities/fractions/price.test.js.map +1 -0
- package/dist/esm/src/entities/index.d.ts +6 -0
- package/dist/esm/src/entities/index.js +7 -0
- package/dist/esm/src/entities/index.js.map +1 -0
- package/dist/esm/src/entities/nativeCurrency.d.ts +8 -0
- package/dist/esm/src/entities/nativeCurrency.js +12 -0
- package/dist/esm/src/entities/nativeCurrency.js.map +1 -0
- package/dist/esm/src/entities/token.d.ts +48 -0
- package/dist/esm/src/entities/token.js +64 -0
- package/dist/esm/src/entities/token.js.map +1 -0
- package/dist/esm/src/entities/token.test.d.ts +1 -0
- package/dist/esm/src/entities/token.test.js +72 -0
- package/dist/esm/src/entities/token.test.js.map +1 -0
- package/dist/esm/src/entities/weth9.d.ts +7 -0
- package/dist/esm/src/entities/weth9.js +32 -0
- package/dist/esm/src/entities/weth9.js.map +1 -0
- package/dist/esm/src/index.d.ts +5 -0
- package/dist/esm/src/index.js +6 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/utils/computePriceImpact.d.ts +8 -0
- package/dist/esm/src/utils/computePriceImpact.js +14 -0
- package/dist/esm/src/utils/computePriceImpact.js.map +1 -0
- package/dist/esm/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/esm/src/utils/computePriceImpact.test.js +18 -0
- package/dist/esm/src/utils/computePriceImpact.test.js.map +1 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.d.ts +2 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.js +11 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.js.map +1 -0
- package/dist/esm/src/utils/index.d.ts +5 -0
- package/dist/esm/src/utils/index.js +6 -0
- package/dist/esm/src/utils/index.js.map +1 -0
- package/dist/esm/src/utils/sortedInsert.d.ts +1 -0
- package/dist/esm/src/utils/sortedInsert.js +33 -0
- package/dist/esm/src/utils/sortedInsert.js.map +1 -0
- package/dist/esm/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/esm/src/utils/sortedInsert.test.js +58 -0
- package/dist/esm/src/utils/sortedInsert.test.js.map +1 -0
- package/dist/esm/src/utils/sqrt.d.ts +7 -0
- package/dist/esm/src/utils/sqrt.js +27 -0
- package/dist/esm/src/utils/sqrt.js.map +1 -0
- package/dist/esm/src/utils/sqrt.test.d.ts +1 -0
- package/dist/esm/src/utils/sqrt.test.js +23 -0
- package/dist/esm/src/utils/sqrt.test.js.map +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.d.ts +10 -0
- package/dist/esm/src/utils/validateAndParseAddress.js +26 -0
- package/dist/esm/src/utils/validateAndParseAddress.js.map +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.js +30 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.js.map +1 -0
- package/dist/types/src/addresses.d.ts +58 -0
- package/dist/types/src/addresses.test.d.ts +1 -0
- package/dist/types/src/chains.d.ts +44 -0
- package/dist/types/src/constants.d.ts +12 -0
- package/dist/types/src/entities/baseCurrency.d.ts +49 -0
- package/dist/types/src/entities/currency.d.ts +3 -0
- package/dist/types/src/entities/currency.test.d.ts +1 -0
- package/dist/types/src/entities/ether.d.ts +13 -0
- package/dist/types/src/entities/ether.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/currencyAmount.d.ts +31 -0
- package/dist/types/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/fraction.d.ts +24 -0
- package/dist/types/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/index.d.ts +4 -0
- package/dist/types/src/entities/fractions/percent.d.ts +14 -0
- package/dist/types/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/price.d.ts +38 -0
- package/dist/types/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/types/src/entities/index.d.ts +6 -0
- package/dist/types/src/entities/nativeCurrency.d.ts +8 -0
- package/dist/types/src/entities/token.d.ts +48 -0
- package/dist/types/src/entities/token.test.d.ts +1 -0
- package/dist/types/src/entities/weth9.d.ts +7 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/utils/computePriceImpact.d.ts +8 -0
- package/dist/types/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/types/src/utils/computeZksyncCreate2Address.d.ts +2 -0
- package/dist/types/src/utils/index.d.ts +5 -0
- package/dist/types/src/utils/sortedInsert.d.ts +1 -0
- package/dist/types/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/types/src/utils/sqrt.d.ts +7 -0
- package/dist/types/src/utils/sqrt.test.d.ts +1 -0
- package/dist/types/src/utils/validateAndParseAddress.d.ts +10 -0
- package/dist/types/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/package.json +28 -10
- package/dist/index.js +0 -8
- package/dist/sdk-core.cjs.development.js +0 -1138
- package/dist/sdk-core.cjs.development.js.map +0 -1
- package/dist/sdk-core.cjs.production.min.js +0 -2
- package/dist/sdk-core.cjs.production.min.js.map +0 -1
- package/dist/sdk-core.esm.js +0 -1099
- package/dist/sdk-core.esm.js.map +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import JSBI from 'jsbi';
|
|
2
|
+
import { Fraction } from './fraction';
|
|
3
|
+
describe('Fraction', () => {
|
|
4
|
+
describe('#quotient', () => {
|
|
5
|
+
it('floor division', () => {
|
|
6
|
+
expect(new Fraction(JSBI.BigInt(8), JSBI.BigInt(3)).quotient).toEqual(JSBI.BigInt(2)); // one below
|
|
7
|
+
expect(new Fraction(JSBI.BigInt(12), JSBI.BigInt(4)).quotient).toEqual(JSBI.BigInt(3)); // exact
|
|
8
|
+
expect(new Fraction(JSBI.BigInt(16), JSBI.BigInt(5)).quotient).toEqual(JSBI.BigInt(3)); // one above
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
describe('#remainder', () => {
|
|
12
|
+
it('returns fraction after divison', () => {
|
|
13
|
+
expect(new Fraction(JSBI.BigInt(8), JSBI.BigInt(3)).remainder).toEqual(new Fraction(JSBI.BigInt(2), JSBI.BigInt(3)));
|
|
14
|
+
expect(new Fraction(JSBI.BigInt(12), JSBI.BigInt(4)).remainder).toEqual(new Fraction(JSBI.BigInt(0), JSBI.BigInt(4)));
|
|
15
|
+
expect(new Fraction(JSBI.BigInt(16), JSBI.BigInt(5)).remainder).toEqual(new Fraction(JSBI.BigInt(1), JSBI.BigInt(5)));
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('#invert', () => {
|
|
19
|
+
it('flips num and denom', () => {
|
|
20
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(10)).invert().numerator).toEqual(JSBI.BigInt(10));
|
|
21
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(10)).invert().denominator).toEqual(JSBI.BigInt(5));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('#add', () => {
|
|
25
|
+
it('multiples denoms and adds nums', () => {
|
|
26
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).add(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(52), JSBI.BigInt(120)));
|
|
27
|
+
});
|
|
28
|
+
it('same denom', () => {
|
|
29
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(5)).add(new Fraction(JSBI.BigInt(2), JSBI.BigInt(5)))).toEqual(new Fraction(JSBI.BigInt(3), JSBI.BigInt(5)));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('#subtract', () => {
|
|
33
|
+
it('multiples denoms and subtracts nums', () => {
|
|
34
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).subtract(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(-28), JSBI.BigInt(120)));
|
|
35
|
+
});
|
|
36
|
+
it('same denom', () => {
|
|
37
|
+
expect(new Fraction(JSBI.BigInt(3), JSBI.BigInt(5)).subtract(new Fraction(JSBI.BigInt(2), JSBI.BigInt(5)))).toEqual(new Fraction(JSBI.BigInt(1), JSBI.BigInt(5)));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('#lessThan', () => {
|
|
41
|
+
it('correct', () => {
|
|
42
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).lessThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(true);
|
|
43
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(3)).lessThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
44
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(12)).lessThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('#equalTo', () => {
|
|
48
|
+
it('correct', () => {
|
|
49
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).equalTo(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
50
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(3)).equalTo(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(true);
|
|
51
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(12)).equalTo(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('#greaterThan', () => {
|
|
55
|
+
it('correct', () => {
|
|
56
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).greaterThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
57
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(3)).greaterThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(false);
|
|
58
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(12)).greaterThan(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('#multiplty', () => {
|
|
62
|
+
it('correct', () => {
|
|
63
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).multiply(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(4), JSBI.BigInt(120)));
|
|
64
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(3)).multiply(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(4), JSBI.BigInt(36)));
|
|
65
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(12)).multiply(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(20), JSBI.BigInt(144)));
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe('#divide', () => {
|
|
69
|
+
it('correct', () => {
|
|
70
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(10)).divide(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(12), JSBI.BigInt(40)));
|
|
71
|
+
expect(new Fraction(JSBI.BigInt(1), JSBI.BigInt(3)).divide(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(12), JSBI.BigInt(12)));
|
|
72
|
+
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(12)).divide(new Fraction(JSBI.BigInt(4), JSBI.BigInt(12)))).toEqual(new Fraction(JSBI.BigInt(60), JSBI.BigInt(48)));
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('#asFraction', () => {
|
|
76
|
+
it('returns an equivalent but not the same reference fraction', () => {
|
|
77
|
+
const f = new Fraction(1, 2);
|
|
78
|
+
expect(f.asFraction).toEqual(f);
|
|
79
|
+
expect(f === f.asFraction).toEqual(false);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import JSBI from 'jsbi';
|
|
2
|
+
import { Fraction } from './fraction';
|
|
3
|
+
const ONE_HUNDRED = new Fraction(JSBI.BigInt(100));
|
|
4
|
+
/**
|
|
5
|
+
* Converts a fraction to a percent
|
|
6
|
+
* @param fraction the fraction to convert
|
|
7
|
+
*/
|
|
8
|
+
function toPercent(fraction) {
|
|
9
|
+
return new Percent(fraction.numerator, fraction.denominator);
|
|
10
|
+
}
|
|
11
|
+
export class Percent extends Fraction {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* This boolean prevents a fraction from being interpreted as a Percent
|
|
16
|
+
*/
|
|
17
|
+
this.isPercent = true;
|
|
18
|
+
}
|
|
19
|
+
add(other) {
|
|
20
|
+
return toPercent(super.add(other));
|
|
21
|
+
}
|
|
22
|
+
subtract(other) {
|
|
23
|
+
return toPercent(super.subtract(other));
|
|
24
|
+
}
|
|
25
|
+
multiply(other) {
|
|
26
|
+
return toPercent(super.multiply(other));
|
|
27
|
+
}
|
|
28
|
+
divide(other) {
|
|
29
|
+
return toPercent(super.divide(other));
|
|
30
|
+
}
|
|
31
|
+
toSignificant(significantDigits = 5, format, rounding) {
|
|
32
|
+
return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);
|
|
33
|
+
}
|
|
34
|
+
toFixed(decimalPlaces = 2, format, rounding) {
|
|
35
|
+
return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=percent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"percent.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/percent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,IAAI,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,MAAM,OAAO,OAAQ,SAAQ,QAAQ;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Percent } from './percent';
|
|
2
|
+
describe('Percent', () => {
|
|
3
|
+
describe('constructor', () => {
|
|
4
|
+
it('defaults to 1 denominator', () => {
|
|
5
|
+
expect(new Percent(1)).toEqual(new Percent(1, 1));
|
|
6
|
+
});
|
|
7
|
+
});
|
|
8
|
+
describe('#add', () => {
|
|
9
|
+
it('returns a percent', () => {
|
|
10
|
+
expect(new Percent(1, 100).add(new Percent(2, 100))).toEqual(new Percent(3, 100));
|
|
11
|
+
});
|
|
12
|
+
it('different denominators', () => {
|
|
13
|
+
expect(new Percent(1, 25).add(new Percent(2, 100))).toEqual(new Percent(150, 2500));
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe('#subtract', () => {
|
|
17
|
+
it('returns a percent', () => {
|
|
18
|
+
expect(new Percent(1, 100).subtract(new Percent(2, 100))).toEqual(new Percent(-1, 100));
|
|
19
|
+
});
|
|
20
|
+
it('different denominators', () => {
|
|
21
|
+
expect(new Percent(1, 25).subtract(new Percent(2, 100))).toEqual(new Percent(50, 2500));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('#multiply', () => {
|
|
25
|
+
it('returns a percent', () => {
|
|
26
|
+
expect(new Percent(1, 100).multiply(new Percent(2, 100))).toEqual(new Percent(2, 10000));
|
|
27
|
+
});
|
|
28
|
+
it('different denominators', () => {
|
|
29
|
+
expect(new Percent(1, 25).multiply(new Percent(2, 100))).toEqual(new Percent(2, 2500));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('#divide', () => {
|
|
33
|
+
it('returns a percent', () => {
|
|
34
|
+
expect(new Percent(1, 100).divide(new Percent(2, 100))).toEqual(new Percent(100, 200));
|
|
35
|
+
});
|
|
36
|
+
it('different denominators', () => {
|
|
37
|
+
expect(new Percent(1, 25).divide(new Percent(2, 100))).toEqual(new Percent(100, 50));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('#toSignificant', () => {
|
|
41
|
+
it('returns the value scaled by 100', () => {
|
|
42
|
+
expect(new Percent(154, 10000).toSignificant(3)).toEqual('1.54');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('#toFixed', () => {
|
|
46
|
+
it('returns the value scaled by 100', () => {
|
|
47
|
+
expect(new Percent(154, 10000).toFixed(2)).toEqual('1.54');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# 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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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BigintIsh, Rounding } from '../../constants';
|
|
2
|
+
import { Currency } from '../currency';
|
|
3
|
+
import { Fraction } from './fraction';
|
|
4
|
+
import { CurrencyAmount } from './currencyAmount';
|
|
5
|
+
export declare class Price<TBase extends Currency, TQuote extends Currency> extends Fraction {
|
|
6
|
+
readonly baseCurrency: TBase;
|
|
7
|
+
readonly quoteCurrency: TQuote;
|
|
8
|
+
readonly scalar: Fraction;
|
|
9
|
+
/**
|
|
10
|
+
* Construct a price, either with the base and quote currency amount, or the
|
|
11
|
+
* @param args
|
|
12
|
+
*/
|
|
13
|
+
constructor(...args: [TBase, TQuote, BigintIsh, BigintIsh] | [{
|
|
14
|
+
baseAmount: CurrencyAmount<TBase>;
|
|
15
|
+
quoteAmount: CurrencyAmount<TQuote>;
|
|
16
|
+
}]);
|
|
17
|
+
/**
|
|
18
|
+
* Flip the price, switching the base and quote currency
|
|
19
|
+
*/
|
|
20
|
+
invert(): Price<TQuote, TBase>;
|
|
21
|
+
/**
|
|
22
|
+
* Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency
|
|
23
|
+
* @param other the other price
|
|
24
|
+
*/
|
|
25
|
+
multiply<TOtherQuote extends Currency>(other: Price<TQuote, TOtherQuote>): Price<TBase, TOtherQuote>;
|
|
26
|
+
/**
|
|
27
|
+
* Return the amount of quote currency corresponding to a given amount of the base currency
|
|
28
|
+
* @param currencyAmount the amount of base currency to quote against the price
|
|
29
|
+
*/
|
|
30
|
+
quote(currencyAmount: CurrencyAmount<TBase>): CurrencyAmount<TQuote>;
|
|
31
|
+
/**
|
|
32
|
+
* Get the value scaled by decimals for formatting
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
private get adjustedForDecimals();
|
|
36
|
+
toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;
|
|
37
|
+
toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string;
|
|
38
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import JSBI from 'jsbi';
|
|
2
|
+
import invariant from 'tiny-invariant';
|
|
3
|
+
import { Fraction } from './fraction';
|
|
4
|
+
import { CurrencyAmount } from './currencyAmount';
|
|
5
|
+
export class Price extends Fraction {
|
|
6
|
+
/**
|
|
7
|
+
* Construct a price, either with the base and quote currency amount, or the
|
|
8
|
+
* @param args
|
|
9
|
+
*/
|
|
10
|
+
constructor(...args) {
|
|
11
|
+
let baseCurrency, quoteCurrency, denominator, numerator;
|
|
12
|
+
if (args.length === 4) {
|
|
13
|
+
;
|
|
14
|
+
[baseCurrency, quoteCurrency, denominator, numerator] = args;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const result = args[0].quoteAmount.divide(args[0].baseAmount);
|
|
18
|
+
[baseCurrency, quoteCurrency, denominator, numerator] = [
|
|
19
|
+
args[0].baseAmount.currency,
|
|
20
|
+
args[0].quoteAmount.currency,
|
|
21
|
+
result.denominator,
|
|
22
|
+
result.numerator,
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
super(numerator, denominator);
|
|
26
|
+
this.baseCurrency = baseCurrency;
|
|
27
|
+
this.quoteCurrency = quoteCurrency;
|
|
28
|
+
this.scalar = new Fraction(JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)), JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals)));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Flip the price, switching the base and quote currency
|
|
32
|
+
*/
|
|
33
|
+
invert() {
|
|
34
|
+
return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency
|
|
38
|
+
* @param other the other price
|
|
39
|
+
*/
|
|
40
|
+
multiply(other) {
|
|
41
|
+
invariant(this.quoteCurrency.equals(other.baseCurrency), 'TOKEN');
|
|
42
|
+
const fraction = super.multiply(other);
|
|
43
|
+
return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Return the amount of quote currency corresponding to a given amount of the base currency
|
|
47
|
+
* @param currencyAmount the amount of base currency to quote against the price
|
|
48
|
+
*/
|
|
49
|
+
quote(currencyAmount) {
|
|
50
|
+
invariant(currencyAmount.currency.equals(this.baseCurrency), 'TOKEN');
|
|
51
|
+
const result = super.multiply(currencyAmount);
|
|
52
|
+
return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the value scaled by decimals for formatting
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
get adjustedForDecimals() {
|
|
59
|
+
return super.multiply(this.scalar);
|
|
60
|
+
}
|
|
61
|
+
toSignificant(significantDigits = 6, format, rounding) {
|
|
62
|
+
return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding);
|
|
63
|
+
}
|
|
64
|
+
toFixed(decimalPlaces = 4, format, rounding) {
|
|
65
|
+
return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/price.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Token } from '../token';
|
|
2
|
+
import { CurrencyAmount } from './currencyAmount';
|
|
3
|
+
import { Price } from './price';
|
|
4
|
+
describe('Price', () => {
|
|
5
|
+
const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000';
|
|
6
|
+
const ADDRESS_ONE = '0x0000000000000000000000000000000000000001';
|
|
7
|
+
const t0 = new Token(1, ADDRESS_ZERO, 18);
|
|
8
|
+
const t0_6 = new Token(1, ADDRESS_ZERO, 6);
|
|
9
|
+
const t1 = new Token(1, ADDRESS_ONE, 18);
|
|
10
|
+
describe('#constructor', () => {
|
|
11
|
+
it('array format works', () => {
|
|
12
|
+
const price = new Price(t0, t1, 1, 54321);
|
|
13
|
+
expect(price.toSignificant(5)).toEqual('54321');
|
|
14
|
+
expect(price.baseCurrency.equals(t0));
|
|
15
|
+
expect(price.quoteCurrency.equals(t1));
|
|
16
|
+
});
|
|
17
|
+
it('object format works', () => {
|
|
18
|
+
const price = new Price({
|
|
19
|
+
baseAmount: CurrencyAmount.fromRawAmount(t0, 1),
|
|
20
|
+
quoteAmount: CurrencyAmount.fromRawAmount(t1, 54321),
|
|
21
|
+
});
|
|
22
|
+
expect(price.toSignificant(5)).toEqual('54321');
|
|
23
|
+
expect(price.baseCurrency.equals(t0));
|
|
24
|
+
expect(price.quoteCurrency.equals(t1));
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('#quote', () => {
|
|
28
|
+
it('returns correct value', () => {
|
|
29
|
+
const price = new Price(t0, t1, 1, 5);
|
|
30
|
+
expect(price.quote(CurrencyAmount.fromRawAmount(t0, 10))).toEqual(CurrencyAmount.fromRawAmount(t1, 50));
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('#toSignificant', () => {
|
|
34
|
+
it('no decimals', () => {
|
|
35
|
+
const p = new Price(t0, t1, 123, 456);
|
|
36
|
+
expect(p.toSignificant(4)).toEqual('3.707');
|
|
37
|
+
});
|
|
38
|
+
it('no decimals flip ratio', () => {
|
|
39
|
+
const p = new Price(t0, t1, 456, 123);
|
|
40
|
+
expect(p.toSignificant(4)).toEqual('0.2697');
|
|
41
|
+
});
|
|
42
|
+
it('with decimal difference', () => {
|
|
43
|
+
const p = new Price(t0_6, t1, 123, 456);
|
|
44
|
+
expect(p.toSignificant(4)).toEqual('0.000000000003707');
|
|
45
|
+
});
|
|
46
|
+
it('with decimal difference flipped', () => {
|
|
47
|
+
const p = new Price(t0_6, t1, 456, 123);
|
|
48
|
+
expect(p.toSignificant(4)).toEqual('0.0000000000002697');
|
|
49
|
+
});
|
|
50
|
+
it('with decimal difference flipped base quote flipped', () => {
|
|
51
|
+
const p = new Price(t1, t0_6, 456, 123);
|
|
52
|
+
expect(p.toSignificant(4)).toEqual('269700000000');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=price.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/price.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAE3B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCurrency } from './baseCurrency';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the native currency of the chain on which it resides, e.g.
|
|
4
|
+
*/
|
|
5
|
+
export class NativeCurrency extends BaseCurrency {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.isNative = true;
|
|
9
|
+
this.isToken = false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=nativeCurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeCurrency.js","sourceRoot":"","sources":["../../../../src/entities/nativeCurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;GAEG;AACH,MAAM,OAAgB,cAAe,SAAQ,YAAY;IAAzD;;QACkB,aAAQ,GAAS,IAAI,CAAA;QACrB,YAAO,GAAU,KAAK,CAAA;IACxC,CAAC;CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
import { BaseCurrency } from './baseCurrency';
|
|
3
|
+
import { Currency } from './currency';
|
|
4
|
+
/**
|
|
5
|
+
* Represents an ERC20 token with a unique address and some metadata.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Token extends BaseCurrency {
|
|
8
|
+
readonly isNative: false;
|
|
9
|
+
readonly isToken: true;
|
|
10
|
+
/**
|
|
11
|
+
* The contract address on the chain on which this token lives
|
|
12
|
+
*/
|
|
13
|
+
readonly address: string;
|
|
14
|
+
/**
|
|
15
|
+
* Relevant for fee-on-transfer (FOT) token taxes,
|
|
16
|
+
* Not every ERC20 token is FOT token, so this field is optional
|
|
17
|
+
*/
|
|
18
|
+
readonly buyFeeBps?: BigNumber;
|
|
19
|
+
readonly sellFeeBps?: BigNumber;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param chainId {@link BaseCurrency#chainId}
|
|
23
|
+
* @param address The contract address on the chain on which this token lives
|
|
24
|
+
* @param decimals {@link BaseCurrency#decimals}
|
|
25
|
+
* @param symbol {@link BaseCurrency#symbol}
|
|
26
|
+
* @param name {@link BaseCurrency#name}
|
|
27
|
+
* @param bypassChecksum If true it only checks for length === 42, startsWith 0x and contains only hex characters
|
|
28
|
+
* @param buyFeeBps Buy fee tax for FOT tokens, in basis points
|
|
29
|
+
* @param sellFeeBps Sell fee tax for FOT tokens, in basis points
|
|
30
|
+
*/
|
|
31
|
+
constructor(chainId: number, address: string, decimals: number, symbol?: string, name?: string, bypassChecksum?: boolean, buyFeeBps?: BigNumber, sellFeeBps?: BigNumber);
|
|
32
|
+
/**
|
|
33
|
+
* Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
|
|
34
|
+
* @param other other token to compare
|
|
35
|
+
*/
|
|
36
|
+
equals(other: Currency): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Returns true if the address of this token sorts before the address of the other token
|
|
39
|
+
* @param other other token to compare
|
|
40
|
+
* @throws if the tokens have the same address
|
|
41
|
+
* @throws if the tokens are on different chains
|
|
42
|
+
*/
|
|
43
|
+
sortsBefore(other: Token): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Return this token, which does not need to be wrapped
|
|
46
|
+
*/
|
|
47
|
+
get wrapped(): Token;
|
|
48
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
import invariant from 'tiny-invariant';
|
|
3
|
+
import { checkValidAddress, validateAndParseAddress } from '../utils/validateAndParseAddress';
|
|
4
|
+
import { BaseCurrency } from './baseCurrency';
|
|
5
|
+
/**
|
|
6
|
+
* Represents an ERC20 token with a unique address and some metadata.
|
|
7
|
+
*/
|
|
8
|
+
export class Token extends BaseCurrency {
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param chainId {@link BaseCurrency#chainId}
|
|
12
|
+
* @param address The contract address on the chain on which this token lives
|
|
13
|
+
* @param decimals {@link BaseCurrency#decimals}
|
|
14
|
+
* @param symbol {@link BaseCurrency#symbol}
|
|
15
|
+
* @param name {@link BaseCurrency#name}
|
|
16
|
+
* @param bypassChecksum If true it only checks for length === 42, startsWith 0x and contains only hex characters
|
|
17
|
+
* @param buyFeeBps Buy fee tax for FOT tokens, in basis points
|
|
18
|
+
* @param sellFeeBps Sell fee tax for FOT tokens, in basis points
|
|
19
|
+
*/
|
|
20
|
+
constructor(chainId, address, decimals, symbol, name, bypassChecksum, buyFeeBps, sellFeeBps) {
|
|
21
|
+
super(chainId, decimals, symbol, name);
|
|
22
|
+
this.isNative = false;
|
|
23
|
+
this.isToken = true;
|
|
24
|
+
if (bypassChecksum) {
|
|
25
|
+
this.address = checkValidAddress(address);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.address = validateAndParseAddress(address);
|
|
29
|
+
}
|
|
30
|
+
if (buyFeeBps) {
|
|
31
|
+
invariant(buyFeeBps.gte(BigNumber.from(0)), 'NON-NEGATIVE FOT FEES');
|
|
32
|
+
}
|
|
33
|
+
if (sellFeeBps) {
|
|
34
|
+
invariant(sellFeeBps.gte(BigNumber.from(0)), 'NON-NEGATIVE FOT FEES');
|
|
35
|
+
}
|
|
36
|
+
this.buyFeeBps = buyFeeBps;
|
|
37
|
+
this.sellFeeBps = sellFeeBps;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
|
|
41
|
+
* @param other other token to compare
|
|
42
|
+
*/
|
|
43
|
+
equals(other) {
|
|
44
|
+
return other.isToken && this.chainId === other.chainId && this.address.toLowerCase() === other.address.toLowerCase();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns true if the address of this token sorts before the address of the other token
|
|
48
|
+
* @param other other token to compare
|
|
49
|
+
* @throws if the tokens have the same address
|
|
50
|
+
* @throws if the tokens are on different chains
|
|
51
|
+
*/
|
|
52
|
+
sortsBefore(other) {
|
|
53
|
+
invariant(this.chainId === other.chainId, 'CHAIN_IDS');
|
|
54
|
+
invariant(this.address.toLowerCase() !== other.address.toLowerCase(), 'ADDRESSES');
|
|
55
|
+
return this.address.toLowerCase() < other.address.toLowerCase();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Return this token, which does not need to be wrapped
|
|
59
|
+
*/
|
|
60
|
+
get wrapped() {
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../src/entities/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C;;GAEG;AACH,MAAM,OAAO,KAAM,SAAQ,YAAY;IAgBrC;;;;;;;;;;OAUG;IACH,YACE,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,MAAe,EACf,IAAa,EACb,cAAwB,EACxB,SAAqB,EACrB,UAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QApCxB,aAAQ,GAAU,KAAK,CAAA;QACvB,YAAO,GAAS,IAAI,CAAA;QAoClC,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;SAC1C;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;SAChD;QACD,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAA;SACrE;QACD,IAAI,UAAU,EAAE;YACd,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAA;SACtE;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAe;QAC3B,OAAO,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IACtH,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,KAAY;QAC7B,SAAS,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QACtD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;QAClF,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|