@paraswap/dex-lib 4.0.10-destTokenPos-fix-ex02.1 → 4.0.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.
Files changed (156) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/integral/factory.json +333 -0
  10. package/build/abi/integral/oracle.json +501 -0
  11. package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
  12. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  13. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  14. package/build/dex/aave-v1/aave-v1.js +0 -23
  15. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  16. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  17. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  18. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  19. package/build/dex/integral/config.d.ts +4 -0
  20. package/build/dex/integral/config.js +20 -0
  21. package/build/dex/integral/config.js.map +1 -0
  22. package/build/dex/integral/context.d.ts +40 -0
  23. package/build/dex/integral/context.js +158 -0
  24. package/build/dex/integral/context.js.map +1 -0
  25. package/build/dex/integral/integral-factory.d.ts +24 -0
  26. package/build/dex/integral/integral-factory.js +95 -0
  27. package/build/dex/integral/integral-factory.js.map +1 -0
  28. package/build/dex/integral/integral-pool.d.ts +50 -0
  29. package/build/dex/integral/integral-pool.js +149 -0
  30. package/build/dex/integral/integral-pool.js.map +1 -0
  31. package/build/dex/integral/integral-pricing.d.ts +18 -0
  32. package/build/dex/integral/integral-pricing.js +114 -0
  33. package/build/dex/integral/integral-pricing.js.map +1 -0
  34. package/build/dex/integral/integral-relayer.d.ts +42 -0
  35. package/build/dex/integral/integral-relayer.js +192 -0
  36. package/build/dex/integral/integral-relayer.js.map +1 -0
  37. package/build/dex/integral/integral-token.d.ts +27 -0
  38. package/build/dex/integral/integral-token.js +59 -0
  39. package/build/dex/integral/integral-token.js.map +1 -0
  40. package/build/dex/integral/integral.d.ts +41 -0
  41. package/build/dex/integral/integral.js +376 -0
  42. package/build/dex/integral/integral.js.map +1 -0
  43. package/build/dex/integral/types.d.ts +85 -0
  44. package/build/dex/integral/types.js +9 -0
  45. package/build/dex/integral/types.js.map +1 -0
  46. package/build/dex/integral/utils-e2e.d.ts +9 -0
  47. package/build/dex/integral/utils-e2e.js +131 -0
  48. package/build/dex/integral/utils-e2e.js.map +1 -0
  49. package/build/dex/integral/utils.d.ts +17 -0
  50. package/build/dex/integral/utils.js +94 -0
  51. package/build/dex/integral/utils.js.map +1 -0
  52. package/build/dex/jarvis.d.ts +1 -2
  53. package/build/dex/jarvis.js +0 -58
  54. package/build/dex/jarvis.js.map +1 -1
  55. package/build/dex/platypus/platypus.d.ts +1 -2
  56. package/build/dex/platypus/platypus.js +0 -45
  57. package/build/dex/platypus/platypus.js.map +1 -1
  58. package/build/dex/stable-pool.js +8 -1
  59. package/build/dex/stable-pool.js.map +1 -1
  60. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  61. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  62. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  63. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  64. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  65. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  66. package/build/dex/zerox/index.d.ts +26 -4
  67. package/build/dex/zerox/index.js +42 -50
  68. package/build/dex/zerox/index.js.map +1 -1
  69. package/build/dex/zerox/types.d.ts +0 -29
  70. package/build/dex/zerox/types.js +1 -8
  71. package/build/dex/zerox/types.js.map +1 -1
  72. package/package.json +1 -1
  73. package/.vscode/launch.json +0 -53
  74. package/.vscode/settings.json +0 -2
  75. package/.vscode/tasks.json +0 -15
  76. package/build/abi/inception/inception-ratio-feed.json +0 -329
  77. package/build/abi/inception/inception-vault.json +0 -991
  78. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  79. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  80. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  81. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  82. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  83. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  84. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  85. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  86. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  87. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  88. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  89. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  90. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  91. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  92. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  93. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  94. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  95. package/build/dex/inception/config.d.ts +0 -4
  96. package/build/dex/inception/config.js +0 -109
  97. package/build/dex/inception/config.js.map +0 -1
  98. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  99. package/build/dex/inception/inception-event-pool.js +0 -49
  100. package/build/dex/inception/inception-event-pool.js.map +0 -1
  101. package/build/dex/inception/inception.d.ts +0 -43
  102. package/build/dex/inception/inception.js +0 -180
  103. package/build/dex/inception/inception.js.map +0 -1
  104. package/build/dex/inception/tokens.d.ts +0 -9
  105. package/build/dex/inception/tokens.js +0 -28
  106. package/build/dex/inception/tokens.js.map +0 -1
  107. package/build/dex/inception/types.d.ts +0 -22
  108. package/build/dex/inception/types.js +0 -3
  109. package/build/dex/inception/types.js.map +0 -1
  110. package/build/dex/inception/utils.d.ts +0 -7
  111. package/build/dex/inception/utils.js +0 -58
  112. package/build/dex/inception/utils.js.map +0 -1
  113. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  114. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  115. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  116. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  117. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  118. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  119. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  120. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  121. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  122. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  123. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  124. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  125. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  126. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  127. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  128. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  129. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  130. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  131. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  132. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  133. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  134. package/build/dex/usual/usual-m-smart-m.js +0 -50
  135. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  136. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  137. package/build/dex/usual-m-smart-m/config.js +0 -13
  138. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  139. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  140. package/build/dex/usual-m-smart-m/types.js +0 -3
  141. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  142. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  143. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  144. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  145. package/build/dex/usual-m-usd0/config.d.ts +0 -3
  146. package/build/dex/usual-m-usd0/config.js +0 -14
  147. package/build/dex/usual-m-usd0/config.js.map +0 -1
  148. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  149. package/build/dex/usual-m-usd0/types.js +0 -3
  150. package/build/dex/usual-m-usd0/types.js.map +0 -1
  151. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  152. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  153. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  154. package/build/lib/pub-sub.d.ts +0 -39
  155. package/build/lib/pub-sub.js +0 -153
  156. package/build/lib/pub-sub.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntegralToken = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
6
+ class IntegralToken extends stateful_event_subscriber_1.StatefulEventSubscriber {
7
+ constructor(network, dexHelper, parentName, erc20Interface, tokenAddress, relayerAddress, onTransfer, logger, mapKey = '') {
8
+ super(parentName, `ERC20 Token`, dexHelper, logger, true, mapKey);
9
+ this.network = network;
10
+ this.dexHelper = dexHelper;
11
+ this.erc20Interface = erc20Interface;
12
+ this.tokenAddress = tokenAddress;
13
+ this.relayerAddress = relayerAddress;
14
+ this.onTransfer = onTransfer;
15
+ this.handlers = {};
16
+ this.addressesSubscribed = [tokenAddress];
17
+ this.logDecoder = (log) => {
18
+ let ret;
19
+ try {
20
+ ret = this.erc20Interface.parseLog(log);
21
+ }
22
+ catch (error) {
23
+ if (error instanceof Error) {
24
+ if (error.message.startsWith('no matching event')) {
25
+ // ignore custom events for some tokens
26
+ return null;
27
+ }
28
+ }
29
+ throw error;
30
+ }
31
+ return ret;
32
+ };
33
+ this.handlers['Transfer'] = this.handleTransfer.bind(this);
34
+ }
35
+ async generateState() {
36
+ return {};
37
+ }
38
+ getPoolIdentifierData() {
39
+ return { token: this.tokenAddress };
40
+ }
41
+ async processLog(state, log, blockHeader) {
42
+ const event = this.logDecoder(log);
43
+ if (event && event.name in this.handlers) {
44
+ await this.handlers[event.name](event, state, blockHeader);
45
+ }
46
+ return state;
47
+ }
48
+ async handleTransfer(event, state, _blockHeader) {
49
+ const from = event.args[0].toLowerCase();
50
+ const to = event.args[1].toLowerCase();
51
+ if (from === this.relayerAddress || to === this.relayerAddress) {
52
+ const amount = ethers_1.BigNumber.from(event.args[2]).toBigInt();
53
+ await this.onTransfer(this.tokenAddress, from, to, amount, _blockHeader.number);
54
+ }
55
+ return state;
56
+ }
57
+ }
58
+ exports.IntegralToken = IntegralToken;
59
+ //# sourceMappingURL=integral-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integral-token.js","sourceRoot":"","sources":["../../../src/dex/integral/integral-token.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAInC,+EAA0E;AAa1E,MAAa,aAAc,SAAQ,mDAAmC;IAWpE,YACW,OAAgB,EAChB,SAAqB,EAC9B,UAAkB,EACC,cAAyB,EACnC,YAAqB,EACrB,cAAuB,EACb,UAA8B,EACjD,MAAc,EACd,SAAiB,EAAE;QAEnB,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAVzD,YAAO,GAAP,OAAO,CAAS;QAChB,cAAS,GAAT,SAAS,CAAY;QAEX,mBAAc,GAAd,cAAc,CAAW;QACnC,iBAAY,GAAZ,YAAY,CAAS;QACrB,mBAAc,GAAd,cAAc,CAAS;QACb,eAAU,GAAV,UAAU,CAAoB;QAjBnD,aAAQ,GAMJ,EAAE,CAAC;QAgBL,IAAI,CAAC,mBAAmB,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC;YACR,IAAI;gBACF,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACzC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,KAAK,EAAE;oBAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;wBACjD,uCAAuC;wBACvC,OAAO,IAAI,CAAC;qBACb;iBACF;gBACD,MAAM,KAAK,CAAC;aACb;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,qBAAqB;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,KAAiB,EACjB,GAAkB,EAClB,WAAkC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SAC5D;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,KAAqB,EACrB,KAAiB,EACjB,YAAmC;QAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,IAAI,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE;YAC9D,MAAM,MAAM,GAAG,kBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,CAAC,UAAU,CACnB,IAAI,CAAC,YAAY,EACjB,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,CAAC,MAAM,CACpB,CAAC;SACH;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAjFD,sCAiFC"}
@@ -0,0 +1,41 @@
1
+ import { Token, Address, ExchangePrices, AdapterExchangeParam, PoolLiquidity, Logger, PoolPrices, NumberAsString, DexExchangeParam } from '../../types';
2
+ import { SwapSide, Network } from '../../constants';
3
+ import { Context, IDex } from '../idex';
4
+ import { IDexHelper } from '../../dex-helper/idex-helper';
5
+ import { IntegralData, QuotingProps } from './types';
6
+ import { SimpleExchange } from '../simple-exchange';
7
+ export declare class Integral extends SimpleExchange implements IDex<IntegralData> {
8
+ readonly network: Network;
9
+ readonly dexKey: string;
10
+ readonly dexHelper: IDexHelper;
11
+ protected adapters: import("../../types").AdapterMappings;
12
+ protected subgraphURL: string | undefined;
13
+ readonly hasConstantPriceLargeAmounts = false;
14
+ private readonly context;
15
+ readonly isFeeOnTransferSupported = false;
16
+ static dexKeysWithNetwork: {
17
+ key: string;
18
+ networks: Network[];
19
+ }[];
20
+ logger: Logger;
21
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings);
22
+ initializePricing(blockNumber: number): Promise<void>;
23
+ getAdapters(side: SwapSide): {
24
+ name: string;
25
+ index: number;
26
+ }[] | null;
27
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
28
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<IntegralData>>;
29
+ getCalldataGasCost(poolPrices: PoolPrices<IntegralData>): number | number[];
30
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: IntegralData, side: SwapSide): AdapterExchangeParam;
31
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: IntegralData, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam;
32
+ updatePoolState(): Promise<void>;
33
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
34
+ getPriceOnChain(tokenIn: Token, tokenOut: Token, inverted: boolean, blockNumber: number): Promise<QuotingProps | null>;
35
+ private getQuotingProps;
36
+ private quoteSell;
37
+ private quoteBuy;
38
+ private checkLimits;
39
+ private getStates;
40
+ private getMaxLimits;
41
+ }
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Integral = void 0;
30
+ const lodash_1 = __importDefault(require("lodash"));
31
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
32
+ const constants_1 = require("../../constants");
33
+ const utils_1 = require("../../utils");
34
+ const types_1 = require("./types");
35
+ const simple_exchange_1 = require("../simple-exchange");
36
+ const config_1 = require("./config");
37
+ const relayer_json_1 = __importDefault(require("../../abi/integral/relayer.json"));
38
+ const abi_1 = require("@ethersproject/abi");
39
+ const bigint_constants_1 = require("../../bigint-constants");
40
+ const utils_2 = require("./utils");
41
+ const context_1 = require("./context");
42
+ const utils_3 = require("./utils");
43
+ const PRECISION = bigint_constants_1.BI_POWS[18];
44
+ const SUBGRAPH_TIMEOUT = 20 * 1000;
45
+ const SWAP_ORDER_TIMEOUT = Math.floor(Date.now() / 1000) + 24 * 3600;
46
+ const relayerInterface = new abi_1.Interface(relayer_json_1.default);
47
+ class Integral extends simple_exchange_1.SimpleExchange {
48
+ constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}) {
49
+ super(dexHelper, dexKey);
50
+ this.network = network;
51
+ this.dexKey = dexKey;
52
+ this.dexHelper = dexHelper;
53
+ this.adapters = adapters;
54
+ this.hasConstantPriceLargeAmounts = false;
55
+ this.isFeeOnTransferSupported = false;
56
+ this.logger = dexHelper.getLogger(dexKey);
57
+ this.context = context_1.IntegralContext.initialize(network, dexKey, dexHelper, this.erc20Interface, config_1.IntegralConfig[dexKey][network].factoryAddress.toLowerCase(), config_1.IntegralConfig[dexKey][network].relayerAddress.toLowerCase());
58
+ this.subgraphURL = config_1.IntegralConfig[dexKey][network].subgraphURL;
59
+ }
60
+ async initializePricing(blockNumber) {
61
+ await this.context.factory.initialize(blockNumber);
62
+ const factoryState = this.context.factory.getState(blockNumber);
63
+ if (factoryState) {
64
+ await this.context.addPools(factoryState.pools, blockNumber, true);
65
+ }
66
+ }
67
+ // Returns the list of contract adapters (name and index)
68
+ // for a buy/sell. Return null if there are no adapters.
69
+ getAdapters(side) {
70
+ return this.adapters[side] ? this.adapters[side] : null;
71
+ }
72
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
73
+ const src = this.dexHelper.config.wrapETH(srcToken);
74
+ const dest = this.dexHelper.config.wrapETH(destToken);
75
+ if (src.address.toLowerCase() === dest.address.toLowerCase()) {
76
+ return [];
77
+ }
78
+ const tokenAddresses = [
79
+ src.address.toLowerCase(),
80
+ dest.address.toLowerCase(),
81
+ ]
82
+ .sort((a, b) => (a > b ? 1 : -1))
83
+ .join('_');
84
+ const poolIdentifier = `${this.dexKey}_${tokenAddresses}`;
85
+ return [poolIdentifier];
86
+ }
87
+ // Returns pool prices for amounts.
88
+ // If limitPools is defined only pools in limitPools
89
+ // should be used. If limitPools is undefined then
90
+ // any pools can be used.
91
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
92
+ const src = this.dexHelper.config.wrapETH(srcToken);
93
+ const dest = this.dexHelper.config.wrapETH(destToken);
94
+ if (src.address.toLowerCase() === dest.address.toLowerCase()) {
95
+ return null;
96
+ }
97
+ const poolIdentifier = (0, utils_2.getPoolIdentifier)(this.dexKey, src.address, dest.address);
98
+ if (limitPools && limitPools.every(p => p !== poolIdentifier)) {
99
+ return null;
100
+ }
101
+ const props = await this.getQuotingProps(src, dest, blockNumber);
102
+ if (!props) {
103
+ return null;
104
+ }
105
+ const unitAmount = (0, utils_1.getBigIntPow)(side == constants_1.SwapSide.SELL ? src.decimals : dest.decimals);
106
+ const unit = side == constants_1.SwapSide.SELL
107
+ ? this.quoteSell(unitAmount, props, false)
108
+ : this.quoteBuy(unitAmount, props, false);
109
+ try {
110
+ const prices = side == constants_1.SwapSide.SELL
111
+ ? amounts.map(amount => this.quoteSell(amount, props))
112
+ : amounts.map(amount => this.quoteBuy(amount, props));
113
+ return [
114
+ {
115
+ prices: prices,
116
+ unit: unit,
117
+ data: {
118
+ relayer: this.context.relayerAddress,
119
+ },
120
+ exchange: this.dexKey,
121
+ poolIdentifier,
122
+ gasCost: 350000,
123
+ poolAddresses: [props.poolAddress],
124
+ },
125
+ ];
126
+ }
127
+ catch (e) {
128
+ this.logger.error(`Error_getPricesVolume could not get price with error:`, e);
129
+ return null;
130
+ }
131
+ }
132
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
133
+ getCalldataGasCost(poolPrices) {
134
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
135
+ }
136
+ // Encode params required by the exchange adapter
137
+ // Used for multiSwap, buy & megaSwap
138
+ // Hint: abiCoder.encodeParameter() could be useful
139
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
140
+ const { relayer: exchange } = data;
141
+ // Encode here the payload for adapter
142
+ const payload = '0x';
143
+ return {
144
+ targetExchange: exchange,
145
+ payload,
146
+ networkFee: '0',
147
+ };
148
+ }
149
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side, _, executorAddress) {
150
+ const tokenIn = this.dexHelper.config.wrapETH(srcToken);
151
+ const tokenOut = this.dexHelper.config.wrapETH(destToken);
152
+ const swapData = relayerInterface.encodeFunctionData(side === constants_1.SwapSide.SELL ? types_1.IntegralFunctions.swap : types_1.IntegralFunctions.buy, [
153
+ {
154
+ ...{
155
+ tokenIn,
156
+ tokenOut,
157
+ wrapUnwrap: (0, utils_1.isETHAddress)(srcToken) || (0, utils_1.isETHAddress)(destToken),
158
+ to: recipient,
159
+ submitDeadline: SWAP_ORDER_TIMEOUT,
160
+ },
161
+ ...(side === constants_1.SwapSide.SELL
162
+ ? { amountIn: srcAmount, amountOutMin: destAmount }
163
+ : { amountInMax: srcAmount, amountOut: destAmount }),
164
+ },
165
+ ]);
166
+ return {
167
+ needWrapNative: this.needWrapNative,
168
+ dexFuncHasRecipient: true,
169
+ exchangeData: swapData,
170
+ targetExchange: this.context.relayerAddress,
171
+ returnAmountPos: undefined,
172
+ };
173
+ }
174
+ async updatePoolState() { }
175
+ async getTopPoolsForToken(tokenAddress, limit) {
176
+ if (!this.subgraphURL) {
177
+ return [];
178
+ }
179
+ const query = `
180
+ query ($token: Bytes!, $limit: Int) {
181
+ pools0: pairs(
182
+ first: $limit
183
+ orderBy: reserveUSD
184
+ orderDirection: desc
185
+ where: {token0: $token}
186
+ ) {
187
+ id
188
+ token0 {
189
+ id
190
+ decimals
191
+ }
192
+ token1 {
193
+ id
194
+ decimals
195
+ }
196
+ reserveUSD
197
+ }
198
+ pools1: pairs(
199
+ first: $limit
200
+ orderBy: reserveUSD
201
+ orderDirection: desc
202
+ where: {token1: $token}
203
+ ) {
204
+ id
205
+ token0 {
206
+ id
207
+ decimals
208
+ }
209
+ token1 {
210
+ id
211
+ decimals
212
+ }
213
+ reserveUSD
214
+ }
215
+ }`;
216
+ const { data } = await this.dexHelper.httpRequest.querySubgraph(this.subgraphURL, {
217
+ query,
218
+ variables: { token: tokenAddress.toLowerCase(), limit },
219
+ }, { timeout: SUBGRAPH_TIMEOUT });
220
+ if (!(data && data.pools0 && data.pools1))
221
+ throw new Error("Couldn't fetch the pools from the subgraph");
222
+ const pools0 = lodash_1.default.map(data.pools0, pool => ({
223
+ exchange: this.dexKey,
224
+ address: pool.id.toLowerCase(),
225
+ connectorTokens: [
226
+ {
227
+ address: pool.token1.id.toLowerCase(),
228
+ decimals: parseInt(pool.token1.decimals),
229
+ },
230
+ ],
231
+ liquidityUSD: parseFloat(pool.reserveUSD),
232
+ }));
233
+ const pools1 = lodash_1.default.map(data.pools1, pool => ({
234
+ exchange: this.dexKey,
235
+ address: pool.id.toLowerCase(),
236
+ connectorTokens: [
237
+ {
238
+ address: pool.token0.id.toLowerCase(),
239
+ decimals: parseInt(pool.token0.decimals),
240
+ },
241
+ ],
242
+ liquidityUSD: parseFloat(pool.reserveUSD),
243
+ }));
244
+ return lodash_1.default.slice(lodash_1.default.sortBy(lodash_1.default.concat(pools0, pools1), [pool => -1 * pool.liquidityUSD]), 0, limit);
245
+ }
246
+ async getPriceOnChain(tokenIn, tokenOut, inverted, blockNumber) {
247
+ try {
248
+ const calldata = [
249
+ {
250
+ target: this.context.relayerAddress,
251
+ callData: relayerInterface.encodeFunctionData('getPoolState', [
252
+ tokenIn.address,
253
+ tokenOut.address,
254
+ ]),
255
+ },
256
+ ];
257
+ const data = await this.dexHelper.multiContract.methods
258
+ .aggregate(calldata)
259
+ .call({}, blockNumber);
260
+ const result = relayerInterface.decodeFunctionResult('getPoolState', data.returnData[0]);
261
+ const _limits = inverted
262
+ ? [result.limitMin1, result.limitMax1]
263
+ : [result.limitMin0, result.limitMax0];
264
+ const limits = [
265
+ BigInt(_limits[0].toString()),
266
+ BigInt(_limits[1].toString()),
267
+ ];
268
+ const [decimals0, decimals1] = inverted
269
+ ? [tokenOut.decimals, tokenIn.decimals]
270
+ : [tokenIn.decimals, tokenOut.decimals];
271
+ return {
272
+ price: BigInt(result.price.toString()),
273
+ poolAddress: result.poolAddress,
274
+ fee: BigInt(result.fee.toString()),
275
+ tokenOutLimits: limits,
276
+ decimalsConverter: (0, utils_2.getDecimalsConverter)(decimals0, decimals1, inverted),
277
+ };
278
+ }
279
+ catch (e) {
280
+ this.logger.error(`Error_getPriceOnChain could not get data with error:`, e);
281
+ return null;
282
+ }
283
+ }
284
+ async getQuotingProps(src, dest, blockNumber) {
285
+ const poolId = (0, utils_2.getPoolIdentifier)(this.dexKey, src.address, dest.address);
286
+ const inverted = (0, utils_2.isInverted)(src.address, dest.address);
287
+ const states = this.getStates(poolId, blockNumber);
288
+ if (!states) {
289
+ const resp = await this.getPriceOnChain(src, dest, inverted, blockNumber);
290
+ return resp;
291
+ }
292
+ const { base, poolAddress, relayer, relayerTokens } = states;
293
+ const price = (0, utils_2.getPrice)(states, inverted);
294
+ const token0 = (0, utils_2.sortTokens)(src.address, dest.address)[0];
295
+ const { max0, max1 } = this.getMaxLimits(poolAddress, relayer, relayerTokens);
296
+ return {
297
+ price,
298
+ poolAddress: states.poolAddress,
299
+ fee: relayer.swapFee,
300
+ tokenOutLimits: dest.address === token0
301
+ ? [relayer.limits.min0, max0]
302
+ : [relayer.limits.min1, max1],
303
+ decimalsConverter: (0, utils_2.getDecimalsConverter)(base.decimals0, base.decimals1, inverted),
304
+ };
305
+ }
306
+ quoteSell(amountIn, props, checkLimit = true) {
307
+ if (amountIn === 0n) {
308
+ return 0n;
309
+ }
310
+ const fee = (amountIn * props.fee) / PRECISION;
311
+ const amountInMinusFee = amountIn - fee;
312
+ const amountOut = (amountInMinusFee * props.price) / props.decimalsConverter;
313
+ if (checkLimit && !this.checkLimits(amountOut, props.tokenOutLimits)) {
314
+ return 0n;
315
+ // throw new Error(
316
+ // `Out of Limits - amountOut ${amountOut} not in between limits ${props.tokenOutLimits}`,
317
+ // );
318
+ }
319
+ return amountOut;
320
+ }
321
+ quoteBuy(amountOut, props, checkLimit = true) {
322
+ if (amountOut === 0n) {
323
+ return 0n;
324
+ }
325
+ if (checkLimit && !this.checkLimits(amountOut, props.tokenOutLimits)) {
326
+ return 0n;
327
+ // throw new Error(
328
+ // `Out of Limits - amountOut ${amountOut} not in between limits ${props.tokenOutLimits}`,
329
+ // );
330
+ }
331
+ const amountIn = (0, utils_3.ceil_div)(amountOut * props.decimalsConverter, props.price);
332
+ if (amountIn <= 0n) {
333
+ return 0n;
334
+ }
335
+ const amountInPlusFee = (0, utils_3.ceil_div)(amountIn * PRECISION, PRECISION - props.fee);
336
+ return amountInPlusFee;
337
+ }
338
+ checkLimits(amount, limits) {
339
+ if (amount < limits[0] || amount > limits[1]) {
340
+ return false;
341
+ }
342
+ return true;
343
+ }
344
+ getStates(poolId, blockNumber) {
345
+ const poolStates = this.context.pools[poolId];
346
+ if (poolStates && poolStates.base) {
347
+ const base = poolStates.base.getState(blockNumber);
348
+ const pricing = poolStates.pricing && poolStates.pricing.getState(blockNumber);
349
+ const relayerState = this.context.relayer.getState(blockNumber);
350
+ const relayer = relayerState && relayerState.pools[poolStates.base.poolAddress];
351
+ return base && pricing && relayer
352
+ ? {
353
+ base,
354
+ pricing,
355
+ relayer,
356
+ relayerTokens: relayerState.tokens,
357
+ poolAddress: poolStates.base.poolAddress,
358
+ }
359
+ : null;
360
+ }
361
+ else {
362
+ return null;
363
+ }
364
+ }
365
+ getMaxLimits(poolAddress, relayer, relayerTokens) {
366
+ const { token0, token1 } = this.context.relayer.getPools()[poolAddress.toLowerCase()];
367
+ const max0 = (relayerTokens[token0].balance * relayer.limits.maxMultiplier0) /
368
+ 10n ** 18n;
369
+ const max1 = (relayerTokens[token1].balance * relayer.limits.maxMultiplier1) /
370
+ 10n ** 18n;
371
+ return { max0, max1 };
372
+ }
373
+ }
374
+ exports.Integral = Integral;
375
+ Integral.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.IntegralConfig);
376
+ //# sourceMappingURL=integral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integral.js","sourceRoot":"","sources":["../../../src/dex/integral/integral.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { Address } from '../../types';
2
+ import { IntegralEventPool } from './integral-pool';
3
+ import { PoolState as UniswapPoolState } from '../uniswap-v3/types';
4
+ import { BigNumber } from 'ethers';
5
+ import { IntegralPricing } from './integral-pricing';
6
+ export declare type Requires<Class, Prop extends keyof Class> = Class & Required<Pick<Class, Prop>>;
7
+ export declare type IntegralPool = {
8
+ base?: IntegralEventPool;
9
+ pricing?: IntegralPricing;
10
+ enabled: boolean;
11
+ };
12
+ export declare type QuotingProps = {
13
+ poolAddress: Address;
14
+ price: bigint;
15
+ fee: bigint;
16
+ tokenOutLimits: [bigint, bigint];
17
+ decimalsConverter: bigint;
18
+ };
19
+ export declare type PoolState = {
20
+ swapFee: bigint;
21
+ mintFee: bigint;
22
+ burnFee: bigint;
23
+ decimals0: number;
24
+ decimals1: number;
25
+ oracle: Address;
26
+ uniswapPool: Address;
27
+ uniswapPoolFee: bigint;
28
+ };
29
+ export declare type RelayerPoolState = {
30
+ isEnabled: boolean;
31
+ swapFee: bigint;
32
+ twapInterval: number;
33
+ limits: {
34
+ min0: bigint;
35
+ min1: bigint;
36
+ maxMultiplier0: bigint;
37
+ maxMultiplier1: bigint;
38
+ };
39
+ };
40
+ export declare type RelayerTokensState = {
41
+ [tokenAddress: string]: {
42
+ balance: bigint;
43
+ };
44
+ };
45
+ export declare type RelayerState = {
46
+ pools: {
47
+ [poolAddress: string]: RelayerPoolState;
48
+ };
49
+ tokens: RelayerTokensState;
50
+ };
51
+ export declare type PoolInitProps = {
52
+ [poolAddress: string]: {
53
+ token0: Address;
54
+ token1: Address;
55
+ };
56
+ };
57
+ export declare type FactoryState = {
58
+ pools: PoolInitProps;
59
+ };
60
+ export declare type PoolStates = {
61
+ base: PoolState;
62
+ relayer: RelayerPoolState;
63
+ relayerTokens: RelayerTokensState;
64
+ pricing: UniswapPoolState;
65
+ poolAddress: Address;
66
+ };
67
+ export declare type TokenState = Record<string, never>;
68
+ export declare type IntegralData = {
69
+ relayer: Address;
70
+ };
71
+ export declare type DexParams = {
72
+ factoryAddress: string;
73
+ relayerAddress: string;
74
+ subgraphURL?: string;
75
+ };
76
+ export declare enum IntegralFunctions {
77
+ swap = "sell",
78
+ buy = "buy"
79
+ }
80
+ export declare type Observation = {
81
+ blockTimestamp: number;
82
+ initialized: boolean;
83
+ secondsPerLiquidityCumulativeX128: BigNumber;
84
+ tickCumulative: BigNumber;
85
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntegralFunctions = void 0;
4
+ var IntegralFunctions;
5
+ (function (IntegralFunctions) {
6
+ IntegralFunctions["swap"] = "sell";
7
+ IntegralFunctions["buy"] = "buy";
8
+ })(IntegralFunctions = exports.IntegralFunctions || (exports.IntegralFunctions = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/integral/types.ts"],"names":[],"mappings":";;;AA8EA,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,gCAAW,CAAA;AACb,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B"}
@@ -0,0 +1,9 @@
1
+ import { Address } from '../../types';
2
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
3
+ import { Provider } from '@ethersproject/providers';
4
+ export declare function updateEventSubscriber<SubscriberState>(eventSubscriber: StatefulEventSubscriber<SubscriberState>, subscribedAddress: Address[], fetchState: (blocknumber: number) => Promise<SubscriberState>, blockNumber: number, cacheKey: string, provider: Provider): Promise<void>;
5
+ export declare function checkEventSubscriber<SubscriberState>(eventSubscriber: StatefulEventSubscriber<SubscriberState>, fetchState: (blocknumber: number) => Promise<SubscriberState>, blockNumber: number, cacheKey: string, stateCompare?: (state: SubscriberState, expectedState: SubscriberState) => void): Promise<void>;
6
+ export declare function deepTypecast<T>(obj: any, checker: (val: any) => boolean, caster: (val: T) => any): any;
7
+ export declare function getSavedConfig<Config>(blockNumber: number, cacheKey: string): Config | undefined;
8
+ export declare function saveConfig<Config>(blockNumber: number, cacheKey: string, config: Config): void;
9
+ export declare function getSavedState<SubscriberState>(blockNumber: number, cacheKey: string): SubscriberState | undefined;