@dolomite-exchange/zap-sdk 0.0.6 → 0.0.8

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 (84) hide show
  1. package/dist/DolomiteZap.d.ts +34 -0
  2. package/dist/DolomiteZap.js +289 -0
  3. package/dist/DolomiteZap.js.map +1 -0
  4. package/dist/abis/IDolomiteMarginExchangeWrapper.json +80 -0
  5. package/dist/clients/AggregatorClient.d.ts +7 -0
  6. package/dist/clients/AggregatorClient.js +10 -0
  7. package/dist/clients/AggregatorClient.js.map +1 -0
  8. package/dist/clients/DolomiteClient.d.ts +13 -0
  9. package/dist/clients/DolomiteClient.js +261 -0
  10. package/dist/clients/DolomiteClient.js.map +1 -0
  11. package/dist/clients/IsolationModeClient.d.ts +16 -0
  12. package/dist/clients/IsolationModeClient.js +47 -0
  13. package/dist/clients/IsolationModeClient.js.map +1 -0
  14. package/dist/clients/ParaswapAggregator.d.ts +7 -0
  15. package/dist/clients/ParaswapAggregator.js +150 -0
  16. package/dist/clients/ParaswapAggregator.js.map +1 -0
  17. package/dist/index.d.ts +5 -0
  18. package/dist/index.js +49 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/lib/ApiTypes.d.ts +117 -0
  21. package/dist/lib/ApiTypes.js +16 -0
  22. package/dist/lib/ApiTypes.js.map +1 -0
  23. package/dist/lib/Constants.d.ts +22 -0
  24. package/dist/lib/Constants.js +152 -0
  25. package/dist/lib/Constants.js.map +1 -0
  26. package/dist/lib/Environment.d.ts +0 -0
  27. package/dist/lib/Environment.js +3 -0
  28. package/dist/lib/Environment.js.map +1 -0
  29. package/dist/lib/GraphqlPageable.d.ts +4 -0
  30. package/dist/lib/GraphqlPageable.js +73 -0
  31. package/dist/lib/GraphqlPageable.js.map +1 -0
  32. package/dist/lib/LocalCache.d.ts +9 -0
  33. package/dist/lib/LocalCache.js +29 -0
  34. package/dist/lib/LocalCache.js.map +1 -0
  35. package/dist/lib/Logger.d.ts +3 -0
  36. package/dist/lib/Logger.js +78 -0
  37. package/dist/lib/Logger.js.map +1 -0
  38. package/dist/lib/MathUtils.d.ts +4 -0
  39. package/dist/lib/MathUtils.js +16 -0
  40. package/dist/lib/MathUtils.js.map +1 -0
  41. package/dist/lib/Utils.d.ts +5 -0
  42. package/dist/lib/Utils.js +84 -0
  43. package/dist/lib/Utils.js.map +1 -0
  44. package/dist/lib/estimators/PendlePtEstimator.d.ts +15 -0
  45. package/dist/lib/estimators/PendlePtEstimator.js +140 -0
  46. package/dist/lib/estimators/PendlePtEstimator.js.map +1 -0
  47. package/dist/lib/estimators/StandardEstimator.d.ts +11 -0
  48. package/dist/lib/estimators/StandardEstimator.js +110 -0
  49. package/dist/lib/estimators/StandardEstimator.js.map +1 -0
  50. package/dist/lib/graphql-types.d.ts +17 -0
  51. package/dist/lib/graphql-types.js +3 -0
  52. package/dist/lib/graphql-types.js.map +1 -0
  53. package/package.json +3 -2
  54. package/.circleci/config.yml +0 -85
  55. package/.eslintrc.js +0 -67
  56. package/__tests__/DolomiteZap.test.ts +0 -731
  57. package/__tests__/clients/DolomiteClient.test.ts +0 -47
  58. package/__tests__/clients/ParaswapAggregator.test.ts +0 -34
  59. package/__tests__/helpers/Setup.ts +0 -4
  60. package/__tests__/helpers/TestConstants.ts +0 -138
  61. package/__tests__/lib/LocalCache.test.ts +0 -40
  62. package/__tests__/lib/Utils.test.ts +0 -30
  63. package/jest.config.js +0 -23
  64. package/src/DolomiteZap.ts +0 -245
  65. package/src/abis/IDolomiteMarginExchangeWrapper.json +0 -80
  66. package/src/abis/IIsolationModeFactory.json +0 -902
  67. package/src/clients/AggregatorClient.ts +0 -19
  68. package/src/clients/DolomiteClient.ts +0 -258
  69. package/src/clients/IsolationModeClient.ts +0 -55
  70. package/src/clients/ParaswapAggregator.ts +0 -92
  71. package/src/index.ts +0 -29
  72. package/src/lib/ApiTypes.ts +0 -143
  73. package/src/lib/Constants.ts +0 -147
  74. package/src/lib/Environment.ts +0 -1
  75. package/src/lib/GraphqlPageable.ts +0 -23
  76. package/src/lib/LocalCache.ts +0 -34
  77. package/src/lib/Logger.ts +0 -59
  78. package/src/lib/MathUtils.ts +0 -13
  79. package/src/lib/Utils.ts +0 -41
  80. package/src/lib/estimators/PendlePtEstimator.ts +0 -101
  81. package/src/lib/estimators/StandardEstimator.ts +0 -114
  82. package/src/lib/graphql-types.ts +0 -19
  83. package/tsconfig.eslint.json +0 -6
  84. package/tsconfig.json +0 -35
@@ -0,0 +1,34 @@
1
+ import { ethers } from 'ethers';
2
+ import { Address, ApiMarket, ApiToken, BlockTag, Integer, Network, ZapConfig, ZapOutputParam } from './lib/ApiTypes';
3
+ export declare class DolomiteZap {
4
+ readonly network: Network;
5
+ readonly subgraphUrl: string;
6
+ readonly web3Provider: ethers.providers.Provider;
7
+ private _defaultSlippageTollerance;
8
+ private _defaultBlockTag;
9
+ private client;
10
+ private paraswapAggregator;
11
+ private marketsCache;
12
+ private marketHelpersCache;
13
+ private validAggregators;
14
+ constructor(network: Network, subgraphUrl: string, web3Provider: ethers.providers.Provider, cacheSeconds?: number, defaultSlippageTolerance?: number, defaultBlockTag?: BlockTag);
15
+ get defaultSlippageTolerance(): number;
16
+ setDefaultSlippageTolerance(slippageTolerance: number): void;
17
+ get defaultBlockTag(): BlockTag;
18
+ setDefaultBlockTag(blockTag: BlockTag): void;
19
+ setMarketsToAdd(marketsToAdd: ApiMarket[]): void;
20
+ /**
21
+ *
22
+ * @param tokenIn
23
+ * @param amountIn
24
+ * @param tokenOut
25
+ * @param amountOutMin The minimum amount out required for the swap to be considered valid
26
+ * @param txOrigin The address that will execute the transaction
27
+ * @param config The additional config for zapping
28
+ * @return {Promise<ZapOutputParam[]>} A list of outputs that can be used to execute the trade. The outputs are
29
+ * sorted by execution, with the best ones being first.
30
+ */
31
+ getSwapExactTokensForTokensParams(tokenIn: ApiToken, amountIn: Integer, tokenOut: ApiToken, amountOutMin: Integer, txOrigin: Address, config?: ZapConfig): Promise<ZapOutputParam[]>;
32
+ private getMarketsMap;
33
+ private getMarketHelpersMap;
34
+ }
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.DolomiteZap = void 0;
43
+ var DolomiteClient_1 = __importDefault(require("./clients/DolomiteClient"));
44
+ var ParaswapAggregator_1 = __importDefault(require("./clients/ParaswapAggregator"));
45
+ var ApiTypes_1 = require("./lib/ApiTypes");
46
+ var Constants_1 = require("./lib/Constants");
47
+ var LocalCache_1 = require("./lib/LocalCache");
48
+ var Utils_1 = require("./lib/Utils");
49
+ var ONE_HOUR = 60 * 60;
50
+ var THIRTY_BASIS_POINTS = 0.003;
51
+ var DolomiteZap = /** @class */ (function () {
52
+ function DolomiteZap(network, subgraphUrl, web3Provider, cacheSeconds, defaultSlippageTolerance, defaultBlockTag) {
53
+ if (cacheSeconds === void 0) { cacheSeconds = ONE_HOUR; }
54
+ if (defaultSlippageTolerance === void 0) { defaultSlippageTolerance = THIRTY_BASIS_POINTS; }
55
+ if (defaultBlockTag === void 0) { defaultBlockTag = 'latest'; }
56
+ this.network = network;
57
+ this.subgraphUrl = subgraphUrl;
58
+ this.web3Provider = web3Provider;
59
+ this._defaultSlippageTollerance = defaultSlippageTolerance;
60
+ this._defaultBlockTag = defaultBlockTag;
61
+ this.client = new DolomiteClient_1.default(subgraphUrl, network, web3Provider);
62
+ this.paraswapAggregator = new ParaswapAggregator_1.default(network);
63
+ this.marketsCache = new LocalCache_1.LocalCache(cacheSeconds);
64
+ this.marketHelpersCache = new LocalCache_1.LocalCache(cacheSeconds);
65
+ this.validAggregators = [this.paraswapAggregator].filter(function (aggregator) { return aggregator.isValidForNetwork(); });
66
+ }
67
+ Object.defineProperty(DolomiteZap.prototype, "defaultSlippageTolerance", {
68
+ get: function () {
69
+ return this._defaultSlippageTollerance;
70
+ },
71
+ enumerable: false,
72
+ configurable: true
73
+ });
74
+ DolomiteZap.prototype.setDefaultSlippageTolerance = function (slippageTolerance) {
75
+ this._defaultSlippageTollerance = slippageTolerance;
76
+ };
77
+ Object.defineProperty(DolomiteZap.prototype, "defaultBlockTag", {
78
+ get: function () {
79
+ return this._defaultBlockTag;
80
+ },
81
+ enumerable: false,
82
+ configurable: true
83
+ });
84
+ DolomiteZap.prototype.setDefaultBlockTag = function (blockTag) {
85
+ this._defaultBlockTag = blockTag;
86
+ };
87
+ DolomiteZap.prototype.setMarketsToAdd = function (marketsToAdd) {
88
+ this.client.setMarketsToAdd(marketsToAdd);
89
+ };
90
+ /**
91
+ *
92
+ * @param tokenIn
93
+ * @param amountIn
94
+ * @param tokenOut
95
+ * @param amountOutMin The minimum amount out required for the swap to be considered valid
96
+ * @param txOrigin The address that will execute the transaction
97
+ * @param config The additional config for zapping
98
+ * @return {Promise<ZapOutputParam[]>} A list of outputs that can be used to execute the trade. The outputs are
99
+ * sorted by execution, with the best ones being first.
100
+ */
101
+ DolomiteZap.prototype.getSwapExactTokensForTokensParams = function (tokenIn, amountIn, tokenOut, amountOutMin, txOrigin, config) {
102
+ var _a, _b, _c, _d;
103
+ if (config === void 0) { config = { slippageTolerance: this.defaultSlippageTolerance, blockTag: this._defaultBlockTag }; }
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var marketsMap, marketHelpersMap, inputMarket, inputHelper, outputMarket, outputHelper, marketIdsPath, amountsPaths, traderParamsArrays, effectiveInputMarketId, effectiveOutputMarketId, isIsolationModeUnwrapper, unwrapperInfo, unwrapperHelper, _e, amountOut_1, tradeData_1, isIsolationModeWrapper, wrapperInfo, wrapperHelper, effectiveInputMarket_1, effectiveOutputMarket_1, aggregatorOutputOrUndefinedList, aggregatorOutputs_1, amountsAndTraderParams_1, result;
106
+ var _this = this;
107
+ return __generator(this, function (_f) {
108
+ switch (_f.label) {
109
+ case 0: return [4 /*yield*/, this.getMarketsMap()];
110
+ case 1:
111
+ marketsMap = _f.sent();
112
+ return [4 /*yield*/, this.getMarketHelpersMap(marketsMap)];
113
+ case 2:
114
+ marketHelpersMap = _f.sent();
115
+ inputMarket = marketsMap[tokenIn.marketId];
116
+ inputHelper = marketHelpersMap[tokenIn.marketId];
117
+ outputMarket = marketsMap[tokenOut.marketId];
118
+ outputHelper = marketHelpersMap[tokenOut.marketId];
119
+ if (!inputMarket) {
120
+ return [2 /*return*/, Promise.reject(new Error("Invalid tokenIn: ".concat(tokenIn.symbol, " / ").concat(tokenIn.marketId)))];
121
+ }
122
+ else if (!outputMarket) {
123
+ return [2 /*return*/, Promise.reject(new Error("Invalid tokenOut: ".concat(tokenOut.symbol, " / ").concat(tokenOut.marketId)))];
124
+ }
125
+ else if (amountIn.lte(Constants_1.INTEGERS.ZERO)) {
126
+ return [2 /*return*/, Promise.reject(new Error('Invalid amountIn. Must be greater than 0'))];
127
+ }
128
+ else if (amountOutMin.lte(Constants_1.INTEGERS.ZERO)) {
129
+ return [2 /*return*/, Promise.reject(new Error('Invalid amountOutMin. Must be greater than 0'))];
130
+ }
131
+ else if (!(0, Utils_1.toChecksumOpt)(txOrigin)) {
132
+ return [2 /*return*/, Promise.reject(new Error('Invalid address for txOrigin'))];
133
+ }
134
+ marketIdsPath = [inputMarket.marketId];
135
+ amountsPaths = new Array(this.validAggregators.length).fill([amountIn]);
136
+ traderParamsArrays = new Array(this.validAggregators.length).fill([]);
137
+ effectiveInputMarketId = inputMarket.marketId;
138
+ effectiveOutputMarketId = outputMarket.marketId;
139
+ isIsolationModeUnwrapper = inputMarket.isolationModeUnwrapperInfo;
140
+ unwrapperInfo = (_a = inputMarket.isolationModeUnwrapperInfo) !== null && _a !== void 0 ? _a : inputMarket.liquidityTokenUnwrapperInfo;
141
+ unwrapperHelper = (_b = inputHelper.isolationModeUnwrapperHelper) !== null && _b !== void 0 ? _b : inputHelper.liquidityTokenUnwrapperHelper;
142
+ if (!(unwrapperInfo && unwrapperHelper)) return [3 /*break*/, 4];
143
+ effectiveInputMarketId = unwrapperInfo.outputMarketId;
144
+ marketIdsPath.push(effectiveInputMarketId);
145
+ return [4 /*yield*/, unwrapperHelper.estimateOutputFunction(amountIn, unwrapperInfo.outputMarketId, config)];
146
+ case 3:
147
+ _e = _f.sent(), amountOut_1 = _e.amountOut, tradeData_1 = _e.tradeData;
148
+ amountsPaths.forEach(function (amountsPath) { return amountsPath.push(amountOut_1); });
149
+ traderParamsArrays.forEach(function (traderParams) {
150
+ traderParams.push({
151
+ traderType: isIsolationModeUnwrapper
152
+ ? ApiTypes_1.GenericTraderType.IsolationModeUnwrapper
153
+ : ApiTypes_1.GenericTraderType.ExternalLiquidity,
154
+ makerAccountIndex: 0,
155
+ trader: unwrapperInfo.unwrapperAddress,
156
+ tradeData: tradeData_1,
157
+ });
158
+ });
159
+ _f.label = 4;
160
+ case 4:
161
+ isIsolationModeWrapper = outputMarket.isolationModeWrapperInfo;
162
+ wrapperInfo = (_c = outputMarket.isolationModeWrapperInfo) !== null && _c !== void 0 ? _c : outputMarket.liquidityTokenWrapperInfo;
163
+ wrapperHelper = (_d = outputHelper.isolationModeWrapperHelper) !== null && _d !== void 0 ? _d : outputHelper.liquidityTokenWrapperHelper;
164
+ if (wrapperInfo) {
165
+ // We can't get the amount yet until we know if we need to use an aggregator in the middle
166
+ effectiveOutputMarketId = wrapperInfo.inputMarketId;
167
+ if (effectiveInputMarketId !== effectiveOutputMarketId) {
168
+ marketIdsPath.push(wrapperInfo.inputMarketId);
169
+ }
170
+ }
171
+ if (!(effectiveInputMarketId !== effectiveOutputMarketId)) return [3 /*break*/, 6];
172
+ if (!marketIdsPath.includes(effectiveOutputMarketId)) {
173
+ marketIdsPath.push(effectiveOutputMarketId);
174
+ }
175
+ effectiveInputMarket_1 = marketsMap[effectiveInputMarketId];
176
+ effectiveOutputMarket_1 = marketsMap[effectiveOutputMarketId];
177
+ return [4 /*yield*/, Promise.all(this.validAggregators.map(function (aggregator, i) {
178
+ return aggregator.getSwapExactTokensForTokensData(effectiveInputMarket_1, amountsPaths[i][amountsPaths[i].length - 1], effectiveOutputMarket_1, Constants_1.INTEGERS.ONE, txOrigin);
179
+ }))];
180
+ case 5:
181
+ aggregatorOutputOrUndefinedList = _f.sent();
182
+ aggregatorOutputs_1 = aggregatorOutputOrUndefinedList.filter(function (trader) { return !!trader; });
183
+ if (aggregatorOutputs_1.length !== this.validAggregators.length) {
184
+ throw new Error('Invalid aggregator outputs length');
185
+ }
186
+ amountsPaths.forEach(function (amountsPath, i) { return amountsPath.push(aggregatorOutputs_1[i].expectedAmountOut); });
187
+ traderParamsArrays.forEach(function (traderParams, i) {
188
+ traderParams.push({
189
+ traderType: ApiTypes_1.GenericTraderType.ExternalLiquidity,
190
+ makerAccountIndex: 0,
191
+ trader: aggregatorOutputs_1[i].traderAddress,
192
+ tradeData: aggregatorOutputs_1[i].tradeData,
193
+ });
194
+ });
195
+ _f.label = 6;
196
+ case 6:
197
+ if (!(wrapperInfo && wrapperHelper)) return [3 /*break*/, 8];
198
+ return [4 /*yield*/, Promise.all(amountsPaths.map(function (amountsPath) { return __awaiter(_this, void 0, void 0, function () {
199
+ var amountInForEstimation, outputEstimate;
200
+ return __generator(this, function (_a) {
201
+ switch (_a.label) {
202
+ case 0:
203
+ amountInForEstimation = amountsPath[amountsPath.length - 1];
204
+ return [4 /*yield*/, wrapperHelper.estimateOutputFunction(amountInForEstimation, wrapperInfo.inputMarketId, config)];
205
+ case 1:
206
+ outputEstimate = _a.sent();
207
+ return [2 /*return*/, {
208
+ amountOut: outputEstimate.amountOut,
209
+ traderParam: {
210
+ traderType: isIsolationModeWrapper
211
+ ? ApiTypes_1.GenericTraderType.IsolationModeWrapper
212
+ : ApiTypes_1.GenericTraderType.ExternalLiquidity,
213
+ makerAccountIndex: 0,
214
+ trader: wrapperInfo.wrapperAddress,
215
+ tradeData: outputEstimate.tradeData,
216
+ },
217
+ }];
218
+ }
219
+ });
220
+ }); }))];
221
+ case 7:
222
+ amountsAndTraderParams_1 = _f.sent();
223
+ amountsPaths.forEach(function (amountsPath, i) {
224
+ amountsPath.push(amountsAndTraderParams_1[i].amountOut);
225
+ traderParamsArrays[i].push(amountsAndTraderParams_1[i].traderParam);
226
+ });
227
+ _f.label = 8;
228
+ case 8:
229
+ if (!marketIdsPath.includes(outputMarket.marketId)) {
230
+ marketIdsPath.push(outputMarket.marketId);
231
+ }
232
+ result = this.validAggregators.map(function (_, i) {
233
+ return {
234
+ marketIdsPath: marketIdsPath,
235
+ amountWeisPath: amountsPaths[i],
236
+ traderParams: traderParamsArrays[i],
237
+ makerAccounts: [],
238
+ amountOutMin: amountOutMin,
239
+ };
240
+ });
241
+ return [2 /*return*/, (0, Utils_1.removeDuplicates)(result, Utils_1.zapOutputParamToJson)];
242
+ }
243
+ });
244
+ });
245
+ };
246
+ DolomiteZap.prototype.getMarketsMap = function () {
247
+ return __awaiter(this, void 0, void 0, function () {
248
+ var marketsKey, cachedMarkets, marketsMap;
249
+ return __generator(this, function (_a) {
250
+ switch (_a.label) {
251
+ case 0:
252
+ marketsKey = 'MARKETS';
253
+ cachedMarkets = this.marketsCache.get(marketsKey);
254
+ if (cachedMarkets) {
255
+ return [2 /*return*/, cachedMarkets];
256
+ }
257
+ return [4 /*yield*/, this.client.getDolomiteMarketsMap()];
258
+ case 1:
259
+ marketsMap = _a.sent();
260
+ this.marketsCache.set(marketsKey, marketsMap);
261
+ return [2 /*return*/, marketsMap];
262
+ }
263
+ });
264
+ });
265
+ };
266
+ DolomiteZap.prototype.getMarketHelpersMap = function (marketsMap) {
267
+ return __awaiter(this, void 0, void 0, function () {
268
+ var marketHelpersKey, cachedMarkets, marketHelpersMap;
269
+ return __generator(this, function (_a) {
270
+ switch (_a.label) {
271
+ case 0:
272
+ marketHelpersKey = 'MARKET_HELPERS';
273
+ cachedMarkets = this.marketHelpersCache.get(marketHelpersKey);
274
+ if (cachedMarkets) {
275
+ return [2 /*return*/, cachedMarkets];
276
+ }
277
+ return [4 /*yield*/, this.client.getDolomiteMarketHelpers(marketsMap)];
278
+ case 1:
279
+ marketHelpersMap = _a.sent();
280
+ this.marketHelpersCache.set(marketHelpersKey, marketHelpersMap);
281
+ return [2 /*return*/, marketHelpersMap];
282
+ }
283
+ });
284
+ });
285
+ };
286
+ return DolomiteZap;
287
+ }());
288
+ exports.DolomiteZap = DolomiteZap;
289
+ //# sourceMappingURL=DolomiteZap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DolomiteZap.js","sourceRoot":"","sources":["../src/DolomiteZap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "address",
6
+ "name": "_tradeOriginator",
7
+ "type": "address"
8
+ },
9
+ {
10
+ "internalType": "address",
11
+ "name": "_receiver",
12
+ "type": "address"
13
+ },
14
+ {
15
+ "internalType": "address",
16
+ "name": "_outputToken",
17
+ "type": "address"
18
+ },
19
+ {
20
+ "internalType": "address",
21
+ "name": "_inputToken",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint256",
26
+ "name": "_inputAmount",
27
+ "type": "uint256"
28
+ },
29
+ {
30
+ "internalType": "bytes",
31
+ "name": "_orderData",
32
+ "type": "bytes"
33
+ }
34
+ ],
35
+ "name": "exchange",
36
+ "outputs": [
37
+ {
38
+ "internalType": "uint256",
39
+ "name": "",
40
+ "type": "uint256"
41
+ }
42
+ ],
43
+ "stateMutability": "nonpayable",
44
+ "type": "function"
45
+ },
46
+ {
47
+ "inputs": [
48
+ {
49
+ "internalType": "address",
50
+ "name": "_inputToken",
51
+ "type": "address"
52
+ },
53
+ {
54
+ "internalType": "address",
55
+ "name": "_outputToken",
56
+ "type": "address"
57
+ },
58
+ {
59
+ "internalType": "uint256",
60
+ "name": "_desiredInputAmount",
61
+ "type": "uint256"
62
+ },
63
+ {
64
+ "internalType": "bytes",
65
+ "name": "_orderData",
66
+ "type": "bytes"
67
+ }
68
+ ],
69
+ "name": "getExchangeCost",
70
+ "outputs": [
71
+ {
72
+ "internalType": "uint256",
73
+ "name": "",
74
+ "type": "uint256"
75
+ }
76
+ ],
77
+ "stateMutability": "view",
78
+ "type": "function"
79
+ }
80
+ ]
@@ -0,0 +1,7 @@
1
+ import { Address, AggregatorOutput, ApiMarket, ApiToken, Integer, Network } from '../lib/ApiTypes';
2
+ export default abstract class AggregatorClient {
3
+ readonly network: Network;
4
+ protected constructor(network: Network);
5
+ abstract isValidForNetwork(): boolean;
6
+ abstract getSwapExactTokensForTokensData(inputMarket: ApiMarket | ApiToken, inputAmountWei: Integer, outputMarket: ApiMarket | ApiToken, minOutputAmountWei: Integer, txOrigin: Address): Promise<AggregatorOutput | undefined>;
7
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var AggregatorClient = /** @class */ (function () {
4
+ function AggregatorClient(network) {
5
+ this.network = network;
6
+ }
7
+ return AggregatorClient;
8
+ }());
9
+ exports.default = AggregatorClient;
10
+ //# sourceMappingURL=AggregatorClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregatorClient.js","sourceRoot":"","sources":["../../src/clients/AggregatorClient.ts"],"names":[],"mappings":";;AAEA;IAGE,0BAAsB,OAAgB;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAWH,uBAAC;AAAD,CAAC,AAhBD,IAgBC"}
@@ -0,0 +1,13 @@
1
+ import { ethers } from 'ethers';
2
+ import { ApiMarket, ApiMarketHelper, BlockTag, MarketId, Network } from '../lib/ApiTypes';
3
+ export default class DolomiteClient {
4
+ private readonly subgraphUrl;
5
+ private readonly network;
6
+ private readonly web3Provider;
7
+ private marketsToAdd;
8
+ constructor(subgraphUrl: string, networkId: Network, web3Provider: ethers.providers.Provider);
9
+ setMarketsToAdd(marketsToAdd: ApiMarket[]): void;
10
+ getDolomiteMarketsMap(blockTag?: BlockTag): Promise<Record<MarketId, ApiMarket>>;
11
+ getDolomiteMarketHelpers(marketsMap: Record<MarketId, ApiMarket>): Promise<Record<MarketId, ApiMarketHelper>>;
12
+ private getDolomiteMarketsWithPaging;
13
+ }