@paraswap/dex-lib 3.8.37 → 3.8.38
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/build/abi/cables/CablesMainnetRFQ.json +1073 -0
- package/build/dex/cables/cables.d.ts +64 -0
- package/build/dex/cables/cables.js +445 -0
- package/build/dex/cables/cables.js.map +1 -0
- package/build/dex/cables/config.d.ts +4 -0
- package/build/dex/cables/config.js +15 -0
- package/build/dex/cables/config.js.map +1 -0
- package/build/dex/cables/constants.d.ts +19 -0
- package/build/dex/cables/constants.js +26 -0
- package/build/dex/cables/constants.js.map +1 -0
- package/build/dex/cables/rate-fetcher.d.ts +34 -0
- package/build/dex/cables/rate-fetcher.js +117 -0
- package/build/dex/cables/rate-fetcher.js.map +1 -0
- package/build/dex/cables/types.d.ts +106 -0
- package/build/dex/cables/types.js +12 -0
- package/build/dex/cables/types.js.map +1 -0
- package/build/dex/cables/validators.d.ts +5 -0
- package/build/dex/cables/validators.js +49 -0
- package/build/dex/cables/validators.js.map +1 -0
- package/build/dex/spark/config.js +25 -0
- package/build/dex/spark/config.js.map +1 -1
- package/build/dex/spark/scripts/validate-state.js +1 -1
- package/build/dex/spark/scripts/validate-state.js.map +1 -1
- package/build/dex/spark/spark-sdai-pool.d.ts +7 -3
- package/build/dex/spark/spark-sdai-pool.js +24 -28
- package/build/dex/spark/spark-sdai-pool.js.map +1 -1
- package/build/dex/spark/spark.d.ts +10 -5
- package/build/dex/spark/spark.js +46 -31
- package/build/dex/spark/spark.js.map +1 -1
- package/build/dex/spark/types.d.ts +6 -0
- package/build/dex/spark/types.js.map +1 -1
- package/build/dex/spark/utils.d.ts +3 -1
- package/build/dex/spark/utils.js +43 -7
- package/build/dex/spark/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/sdai/SavingsUSDS.abi.json +720 -0
- package/src/dex/spark/config.ts +24 -0
- package/src/dex/spark/scripts/validate-state.ts +1 -0
- package/src/dex/spark/spark-e2e.test.ts +25 -21
- package/src/dex/spark/spark-events.test.ts +77 -62
- package/src/dex/spark/spark-integration.test.ts +290 -7
- package/src/dex/spark/spark-sdai-pool.ts +22 -19
- package/src/dex/spark/spark.ts +62 -36
- package/src/dex/spark/types.ts +6 -0
- package/src/dex/spark/utils.ts +83 -19
- package/tests/constants-e2e.ts +5 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CablesRateFetcher = void 0;
|
|
4
|
+
const fetcher_1 = require("../../lib/fetcher/fetcher");
|
|
5
|
+
const validators_1 = require("../../lib/validators");
|
|
6
|
+
const validators_2 = require("./validators");
|
|
7
|
+
class CablesRateFetcher {
|
|
8
|
+
constructor(dexHelper, dexKey, network, logger, config) {
|
|
9
|
+
this.dexHelper = dexHelper;
|
|
10
|
+
this.dexKey = dexKey;
|
|
11
|
+
this.network = network;
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
// Convert addresses to lowercase
|
|
14
|
+
this.normalizeAddressesToLowerCase = (jsonData) => {
|
|
15
|
+
Object.keys(jsonData).forEach(key => {
|
|
16
|
+
jsonData[key].address = jsonData[key].address.toLowerCase();
|
|
17
|
+
});
|
|
18
|
+
return jsonData;
|
|
19
|
+
};
|
|
20
|
+
this.tokensCacheKey = config.rateConfig.tokensCacheKey;
|
|
21
|
+
this.tokensCacheTTL = config.rateConfig.tokensCacheTTLSecs;
|
|
22
|
+
this.pairsCacheKey = config.rateConfig.pairsCacheKey;
|
|
23
|
+
this.pairsCacheTTL = config.rateConfig.pairsCacheTTLSecs;
|
|
24
|
+
this.pricesCacheKey = config.rateConfig.pricesCacheKey;
|
|
25
|
+
this.pricesCacheTTL = config.rateConfig.pricesCacheTTLSecs;
|
|
26
|
+
this.blacklistCacheKey = config.rateConfig.blacklistCacheKey;
|
|
27
|
+
this.blacklistCacheTTL = config.rateConfig.blacklistCacheTTLSecs;
|
|
28
|
+
this.pairsFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
29
|
+
info: {
|
|
30
|
+
requestOptions: config.rateConfig.pairsReqParams,
|
|
31
|
+
caster: (data) => {
|
|
32
|
+
return (0, validators_1.validateAndCast)(data, validators_2.pairsResponseValidator);
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
handler: this.handlePairsResponse.bind(this),
|
|
36
|
+
}, config.rateConfig.pairsIntervalMs, logger);
|
|
37
|
+
this.pricesFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
38
|
+
info: {
|
|
39
|
+
requestOptions: config.rateConfig.pricesReqParams,
|
|
40
|
+
caster: (data) => {
|
|
41
|
+
return (0, validators_1.validateAndCast)(data, validators_2.pricesResponseValidator);
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
handler: this.handlePricesResponse.bind(this),
|
|
45
|
+
}, config.rateConfig.pricesIntervalMs, logger);
|
|
46
|
+
this.blacklistFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
47
|
+
info: {
|
|
48
|
+
requestOptions: config.rateConfig.blacklistReqParams,
|
|
49
|
+
caster: (data) => {
|
|
50
|
+
return (0, validators_1.validateAndCast)(data, validators_2.blacklistResponseValidator);
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
handler: this.handleBlacklistResponse.bind(this),
|
|
54
|
+
}, config.rateConfig.blacklistIntervalMs, logger);
|
|
55
|
+
this.tokensFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
56
|
+
info: {
|
|
57
|
+
requestOptions: config.rateConfig.tokensReqParams,
|
|
58
|
+
caster: (data) => {
|
|
59
|
+
return (0, validators_1.validateAndCast)(data, validators_2.tokensResponseValidator);
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
handler: this.handleTokensResponse.bind(this),
|
|
63
|
+
}, config.rateConfig.tokensIntervalMs, logger);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Utils
|
|
67
|
+
*/
|
|
68
|
+
start() {
|
|
69
|
+
this.pairsFetcher.startPolling();
|
|
70
|
+
this.pricesFetcher.startPolling();
|
|
71
|
+
this.blacklistFetcher.startPolling();
|
|
72
|
+
this.tokensFetcher.startPolling();
|
|
73
|
+
}
|
|
74
|
+
stop() {
|
|
75
|
+
this.pairsFetcher.stopPolling();
|
|
76
|
+
this.pricesFetcher.stopPolling();
|
|
77
|
+
this.blacklistFetcher.stopPolling();
|
|
78
|
+
this.tokensFetcher.stopPolling();
|
|
79
|
+
}
|
|
80
|
+
handlePairsResponse(res) {
|
|
81
|
+
const networkId = String(this.network);
|
|
82
|
+
const pairs = res.pairs[networkId];
|
|
83
|
+
// console.log("===> pairs DEBUG:", pairs);
|
|
84
|
+
// process.exit(0);
|
|
85
|
+
let normalized_pairs = {};
|
|
86
|
+
Object.keys(pairs).forEach(key => {
|
|
87
|
+
normalized_pairs[key.toLowerCase()] = pairs[key];
|
|
88
|
+
});
|
|
89
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.pairsCacheKey, this.pairsCacheTTL, JSON.stringify(normalized_pairs));
|
|
90
|
+
}
|
|
91
|
+
handlePricesResponse(res) {
|
|
92
|
+
// console.log('PRICES RESPONSE', res);
|
|
93
|
+
// console.log(JSON.stringify(res))
|
|
94
|
+
// console.log('Network:', this.network);
|
|
95
|
+
// process.exit(0);
|
|
96
|
+
const networkId = String(this.network);
|
|
97
|
+
const prices = res.prices[networkId];
|
|
98
|
+
// console.log("===> prices DEBUG:", prices);
|
|
99
|
+
// process.exit(0);
|
|
100
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.pricesCacheKey, this.pricesCacheTTL, JSON.stringify(prices));
|
|
101
|
+
}
|
|
102
|
+
handleBlacklistResponse(res) {
|
|
103
|
+
const { blacklist } = res;
|
|
104
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.blacklistCacheKey, this.blacklistCacheTTL, JSON.stringify(blacklist.map(item => item.toLowerCase())));
|
|
105
|
+
}
|
|
106
|
+
handleTokensResponse(res) {
|
|
107
|
+
const networkId = String(this.network);
|
|
108
|
+
const tokens = res.tokens[networkId];
|
|
109
|
+
// console.log("===> tokens DEBUG:", tokens);
|
|
110
|
+
const normalized_tokens = this.normalizeAddressesToLowerCase(tokens);
|
|
111
|
+
// console.log("===> tokens DEBUG:", normalized_tokens);
|
|
112
|
+
// process.exit(0);
|
|
113
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.tokensCacheKey, this.tokensCacheTTL, JSON.stringify(normalized_tokens));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.CablesRateFetcher = CablesRateFetcher;
|
|
117
|
+
//# sourceMappingURL=rate-fetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/cables/rate-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { RequestHeaders } from '../../dex-helper';
|
|
2
|
+
import { Token } from '../../types';
|
|
3
|
+
import { Method } from '../../dex-helper/irequest-wrapper';
|
|
4
|
+
import { AugustusRFQOrderData } from '../augustus-rfq';
|
|
5
|
+
export declare type CablesRFQResponse = {
|
|
6
|
+
order: AugustusRFQOrderData;
|
|
7
|
+
signature: string;
|
|
8
|
+
};
|
|
9
|
+
export declare type CablesData = {
|
|
10
|
+
quoteData?: AugustusRFQOrderData;
|
|
11
|
+
};
|
|
12
|
+
export declare enum OrderbookSide {
|
|
13
|
+
bids = "bids",
|
|
14
|
+
asks = "asks"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Utils
|
|
18
|
+
*/
|
|
19
|
+
export declare type CablesAPIParameters = {
|
|
20
|
+
url: string;
|
|
21
|
+
method: Method;
|
|
22
|
+
};
|
|
23
|
+
export declare class CablesRfqError extends Error {
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Types
|
|
27
|
+
*/
|
|
28
|
+
export declare type PairData = {
|
|
29
|
+
base: string;
|
|
30
|
+
quote: string;
|
|
31
|
+
liquidityUSD: number;
|
|
32
|
+
};
|
|
33
|
+
export declare type PriceAndAmount = [string, string];
|
|
34
|
+
export declare type PriceData = {
|
|
35
|
+
bids: PriceAndAmount[];
|
|
36
|
+
asks: PriceAndAmount[];
|
|
37
|
+
};
|
|
38
|
+
export declare type PriceDataMap = {
|
|
39
|
+
[network: string]: {
|
|
40
|
+
[pair: string]: PriceData;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export declare type TokenDataMap = {
|
|
44
|
+
[network: string]: {
|
|
45
|
+
[token: string]: Token;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export declare type PairsDataMap = {
|
|
49
|
+
[network: string]: {
|
|
50
|
+
[token: string]: PairData;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Responses
|
|
55
|
+
*/
|
|
56
|
+
export declare type CablesPricesResponse = {
|
|
57
|
+
prices: PriceDataMap;
|
|
58
|
+
};
|
|
59
|
+
export declare type CablesBlacklistResponse = {
|
|
60
|
+
blacklist: string[];
|
|
61
|
+
};
|
|
62
|
+
export declare type CablesTokensResponse = {
|
|
63
|
+
tokens: TokenDataMap;
|
|
64
|
+
};
|
|
65
|
+
export declare type CablesPairsResponse = {
|
|
66
|
+
pairs: PairsDataMap;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Rate Fetcher
|
|
70
|
+
*/
|
|
71
|
+
export declare type CablesRateFetcherConfig = {
|
|
72
|
+
rateConfig: {
|
|
73
|
+
pairsReqParams: {
|
|
74
|
+
url: string;
|
|
75
|
+
headers?: RequestHeaders;
|
|
76
|
+
params?: any;
|
|
77
|
+
};
|
|
78
|
+
pricesReqParams: {
|
|
79
|
+
url: string;
|
|
80
|
+
headers?: RequestHeaders;
|
|
81
|
+
params?: any;
|
|
82
|
+
};
|
|
83
|
+
blacklistReqParams: {
|
|
84
|
+
url: string;
|
|
85
|
+
headers?: RequestHeaders;
|
|
86
|
+
params?: any;
|
|
87
|
+
};
|
|
88
|
+
tokensReqParams: {
|
|
89
|
+
url: string;
|
|
90
|
+
headers?: RequestHeaders;
|
|
91
|
+
params?: any;
|
|
92
|
+
};
|
|
93
|
+
pairsIntervalMs: number;
|
|
94
|
+
pricesIntervalMs: number;
|
|
95
|
+
blacklistIntervalMs: number;
|
|
96
|
+
tokensIntervalMs: number;
|
|
97
|
+
pairsCacheKey: string;
|
|
98
|
+
pricesCacheKey: string;
|
|
99
|
+
blacklistCacheKey: string;
|
|
100
|
+
tokensCacheKey: string;
|
|
101
|
+
blacklistCacheTTLSecs: number;
|
|
102
|
+
pairsCacheTTLSecs: number;
|
|
103
|
+
pricesCacheTTLSecs: number;
|
|
104
|
+
tokensCacheTTLSecs: number;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CablesRfqError = exports.OrderbookSide = void 0;
|
|
4
|
+
var OrderbookSide;
|
|
5
|
+
(function (OrderbookSide) {
|
|
6
|
+
OrderbookSide["bids"] = "bids";
|
|
7
|
+
OrderbookSide["asks"] = "asks";
|
|
8
|
+
})(OrderbookSide = exports.OrderbookSide || (exports.OrderbookSide = {}));
|
|
9
|
+
class CablesRfqError extends Error {
|
|
10
|
+
}
|
|
11
|
+
exports.CablesRfqError = CablesRfqError;
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/cables/types.ts"],"names":[],"mappings":";;;AAcA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB;AASD,MAAa,cAAe,SAAQ,KAAK;CAAG;AAA5C,wCAA4C"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import joi from 'joi';
|
|
2
|
+
export declare const pairsResponseValidator: joi.ObjectSchema<any>;
|
|
3
|
+
export declare const pricesResponseValidator: joi.ObjectSchema<any>;
|
|
4
|
+
export declare const tokensResponseValidator: joi.ObjectSchema<any>;
|
|
5
|
+
export declare const blacklistResponseValidator: joi.ObjectSchema<any>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.blacklistResponseValidator = exports.tokensResponseValidator = exports.pricesResponseValidator = exports.pairsResponseValidator = void 0;
|
|
7
|
+
const joi_1 = __importDefault(require("joi"));
|
|
8
|
+
const pairValidator = joi_1.default.object({
|
|
9
|
+
base: joi_1.default.string().min(1),
|
|
10
|
+
quote: joi_1.default.string().min(1),
|
|
11
|
+
liquidityUSD: joi_1.default.number().min(0),
|
|
12
|
+
baseAddress: joi_1.default.string().min(1),
|
|
13
|
+
quoteAddress: joi_1.default.string().min(1),
|
|
14
|
+
baseDecimals: joi_1.default.number().min(0),
|
|
15
|
+
quoteDecimals: joi_1.default.number().min(0),
|
|
16
|
+
});
|
|
17
|
+
const pairMap = joi_1.default.object().pattern(joi_1.default.string(), // Pair name ETH/USDT
|
|
18
|
+
pairValidator);
|
|
19
|
+
exports.pairsResponseValidator = joi_1.default.object({
|
|
20
|
+
pairs: joi_1.default.object().pattern(joi_1.default.string(), // chain id
|
|
21
|
+
pairMap),
|
|
22
|
+
});
|
|
23
|
+
const orderbookEntry = joi_1.default.array().items(joi_1.default.string().min(1)).length(2);
|
|
24
|
+
const orderbookValidator = joi_1.default.object({
|
|
25
|
+
bids: joi_1.default.array().items(orderbookEntry),
|
|
26
|
+
asks: joi_1.default.array().items(orderbookEntry),
|
|
27
|
+
});
|
|
28
|
+
const chainDataSchema = joi_1.default.object().pattern(joi_1.default.string(), // pair name USDC/USDT
|
|
29
|
+
orderbookValidator);
|
|
30
|
+
exports.pricesResponseValidator = joi_1.default.object({
|
|
31
|
+
prices: joi_1.default.object().pattern(joi_1.default.string(), // chain id
|
|
32
|
+
chainDataSchema),
|
|
33
|
+
});
|
|
34
|
+
const tokenValidator = joi_1.default.object({
|
|
35
|
+
symbol: joi_1.default.string().min(1),
|
|
36
|
+
name: joi_1.default.string().min(1),
|
|
37
|
+
description: joi_1.default.string().min(1),
|
|
38
|
+
address: joi_1.default.string().min(1),
|
|
39
|
+
decimals: joi_1.default.number().min(0),
|
|
40
|
+
type: joi_1.default.string().min(1),
|
|
41
|
+
});
|
|
42
|
+
const chainTokens = joi_1.default.object().pattern(joi_1.default.string(), tokenValidator);
|
|
43
|
+
exports.tokensResponseValidator = joi_1.default.object({
|
|
44
|
+
tokens: joi_1.default.object().pattern(joi_1.default.string(), chainTokens),
|
|
45
|
+
});
|
|
46
|
+
exports.blacklistResponseValidator = joi_1.default.object({
|
|
47
|
+
blacklist: joi_1.default.array().items(joi_1.default.string().min(1)),
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/dex/cables/validators.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AAEtB,MAAM,aAAa,GAAG,aAAG,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,YAAY,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,YAAY,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,YAAY,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,aAAa,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAClC,aAAG,CAAC,MAAM,EAAE,EAAE,qBAAqB;AACnC,aAAa,CACd,CAAC;AAEW,QAAA,sBAAsB,GAAG,aAAG,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CACzB,aAAG,CAAC,MAAM,EAAE,EAAE,WAAW;IACzB,OAAO,CACR;CACF,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,kBAAkB,GAAG,aAAG,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IACvC,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAC1C,aAAG,CAAC,MAAM,EAAE,EAAE,sBAAsB;AACpC,kBAAkB,CACnB,CAAC;AAEW,QAAA,uBAAuB,GAAG,aAAG,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAC1B,aAAG,CAAC,MAAM,EAAE,EAAE,WAAW;IACzB,eAAe,CAChB;CACF,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,aAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAE1D,QAAA,uBAAuB,GAAG,aAAG,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;CACxD,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,aAAG,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAClD,CAAC,CAAC"}
|
|
@@ -1,14 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Adapters = exports.SDaiConfig = void 0;
|
|
4
7
|
const constants_1 = require("../../constants");
|
|
5
8
|
const core_1 = require("@paraswap/core");
|
|
9
|
+
const pot_json_1 = __importDefault(require("../../abi/maker-psm/pot.json"));
|
|
10
|
+
const SavingsUSDS_abi_json_1 = __importDefault(require("../../abi/sdai/SavingsUSDS.abi.json"));
|
|
11
|
+
const abi_1 = require("@ethersproject/abi");
|
|
6
12
|
exports.SDaiConfig = {
|
|
7
13
|
Spark: {
|
|
8
14
|
[constants_1.Network.MAINNET]: {
|
|
9
15
|
sdaiAddress: '0x83F20F44975D03b1b09e64809B757c47f942BEeA',
|
|
10
16
|
daiAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
11
17
|
potAddress: '0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7',
|
|
18
|
+
savingsRate: {
|
|
19
|
+
symbol: 'dsr',
|
|
20
|
+
// bytes32 repr of "dsr" string
|
|
21
|
+
topic: '0x6473720000000000000000000000000000000000000000000000000000000000',
|
|
22
|
+
},
|
|
23
|
+
poolInterface: new abi_1.Interface(pot_json_1.default),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
sUSDS: {
|
|
27
|
+
[constants_1.Network.MAINNET]: {
|
|
28
|
+
sdaiAddress: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
|
|
29
|
+
daiAddress: '0xdC035D45d973E3EC169d2276DDab16f1e407384F',
|
|
30
|
+
potAddress: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
|
|
31
|
+
savingsRate: {
|
|
32
|
+
symbol: 'ssr',
|
|
33
|
+
// bytes32 repr of "ssr" string
|
|
34
|
+
topic: '0x7373720000000000000000000000000000000000000000000000000000000000',
|
|
35
|
+
},
|
|
36
|
+
poolInterface: new abi_1.Interface(SavingsUSDS_abi_json_1.default),
|
|
12
37
|
},
|
|
13
38
|
},
|
|
14
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/spark/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/spark/config.ts"],"names":[],"mappings":";;;;;;AAEA,+CAA0C;AAC1C,yCAA0C;AAC1C,4EAAkD;AAClD,+FAAiE;AACjE,4CAA+C;AAElC,QAAA,UAAU,GAA8B;IACnD,KAAK,EAAE;QACL,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;YACxD,WAAW,EAAE;gBACX,MAAM,EAAE,KAAK;gBACb,+BAA+B;gBAC/B,KAAK,EACH,oEAAoE;aACvE;YACD,aAAa,EAAE,IAAI,eAAS,CAAC,kBAAM,CAAC;SACrC;KACF;IACD,KAAK,EAAE;QACL,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;YACxD,WAAW,EAAE;gBACX,MAAM,EAAE,KAAK;gBACb,+BAA+B;gBAC/B,KAAK,EACH,oEAAoE;aACvE;YACD,aAAa,EAAE,IAAI,eAAS,CAAC,8BAAc,CAAC;SAC7C;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAIjB;IACF,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,eAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,eAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;CACF,CAAC"}
|
|
@@ -48,7 +48,7 @@ function compareAndLogDifferences(obj1, obj2, keyNames, checkEachKey = false) {
|
|
|
48
48
|
return isValid;
|
|
49
49
|
}
|
|
50
50
|
async function isPoolStateEqualToReal(state, blockNumber) {
|
|
51
|
-
const expected = await (0, utils_1.getOnChainState)(dexHelper.multiContract, potAddress, new abi_1.Interface(pot_json_1.default), blockNumber);
|
|
51
|
+
const expected = await (0, utils_1.getOnChainState)(dexHelper.multiContract, potAddress, new abi_1.Interface(pot_json_1.default), 'dsr', blockNumber);
|
|
52
52
|
const isValidState = compareAndLogDifferences(state, expected, [
|
|
53
53
|
'rho',
|
|
54
54
|
'dsr',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-state.js","sourceRoot":"","sources":["../../../../src/dex/spark/scripts/validate-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate-state.js","sourceRoot":"","sources":["../../../../src/dex/spark/scripts/validate-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,17 @@ import type { IDexHelper } from '../../dex-helper';
|
|
|
4
4
|
import type { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
5
5
|
import type { Address, BlockHeader, Log, Logger } from '../../types';
|
|
6
6
|
import type { SparkSDaiPoolState } from './types';
|
|
7
|
+
import { Network } from '../../constants';
|
|
8
|
+
export declare const RAY: bigint;
|
|
9
|
+
export declare const calcChi: (state: SparkSDaiPoolState, currentTimestamp?: number | undefined) => bigint;
|
|
7
10
|
export declare class SparkSDaiEventPool extends StatefulEventSubscriber<SparkSDaiPoolState> {
|
|
8
11
|
protected dexHelper: IDexHelper;
|
|
9
12
|
private potAddress;
|
|
10
13
|
private potInterface;
|
|
11
|
-
|
|
14
|
+
private savingsRateTopic;
|
|
15
|
+
private savingsRateSymbol;
|
|
16
|
+
constructor(parentName: string, network: Network, poolName: string, dexHelper: IDexHelper, potAddress: Address, potInterface: Interface, logger: Logger, savingsRateTopic: string, savingsRateSymbol: 'ssr' | 'dsr');
|
|
12
17
|
protected processLog(state: DeepReadonly<SparkSDaiPoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): AsyncOrSync<DeepReadonly<SparkSDaiPoolState> | null>;
|
|
13
18
|
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<SparkSDaiPoolState>>;
|
|
14
|
-
|
|
15
|
-
convertToDai(sdaiAmount: bigint, blockNumber: number): bigint;
|
|
19
|
+
getOrGenerateState(blockNumber: number): Promise<SparkSDaiPoolState>;
|
|
16
20
|
}
|
|
@@ -1,31 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SparkSDaiEventPool = void 0;
|
|
3
|
+
exports.SparkSDaiEventPool = exports.calcChi = exports.RAY = void 0;
|
|
4
4
|
const bigint_constants_1 = require("../../bigint-constants");
|
|
5
5
|
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
|
-
|
|
7
|
+
exports.RAY = bigint_constants_1.BI_POWS[27];
|
|
8
8
|
const ZERO = BigInt(0);
|
|
9
9
|
const TWO = BigInt(2);
|
|
10
|
-
const HALF = RAY / TWO;
|
|
10
|
+
const HALF = exports.RAY / TWO;
|
|
11
11
|
// function file(bytes32,uint256)
|
|
12
12
|
const FILE_TOPICHASH = `0x29ae811400000000000000000000000000000000000000000000000000000000`;
|
|
13
13
|
// function drip()
|
|
14
14
|
const DRIP_TOPICHASH = `0x9f678cca00000000000000000000000000000000000000000000000000000000`;
|
|
15
|
-
// function cage()
|
|
16
|
-
const CAGE_TOPICHASH = `0x6924500900000000000000000000000000000000000000000000000000000000`;
|
|
17
|
-
// bytes32 repr of "dsr" string
|
|
18
|
-
const DSR_TOPIC = `0x6473720000000000000000000000000000000000000000000000000000000000`;
|
|
19
15
|
const rpow = (x, n) => {
|
|
20
16
|
if (!x && !n)
|
|
21
|
-
return RAY;
|
|
17
|
+
return exports.RAY;
|
|
22
18
|
if (!x)
|
|
23
19
|
return ZERO;
|
|
24
|
-
let z = n % TWO > ZERO ? x : RAY;
|
|
20
|
+
let z = n % TWO > ZERO ? x : exports.RAY;
|
|
25
21
|
for (n = n / TWO; n; n /= TWO) {
|
|
26
|
-
x = (x * x + HALF) / RAY;
|
|
22
|
+
x = (x * x + HALF) / exports.RAY;
|
|
27
23
|
if (n % TWO > ZERO) {
|
|
28
|
-
z = (z * x + HALF) / RAY;
|
|
24
|
+
z = (z * x + HALF) / exports.RAY;
|
|
29
25
|
}
|
|
30
26
|
}
|
|
31
27
|
return z;
|
|
@@ -33,24 +29,28 @@ const rpow = (x, n) => {
|
|
|
33
29
|
const calcChi = (state, currentTimestamp) => {
|
|
34
30
|
currentTimestamp || (currentTimestamp = Math.floor(Date.now() / 1000));
|
|
35
31
|
if (!state.live)
|
|
36
|
-
return RAY;
|
|
32
|
+
return exports.RAY;
|
|
37
33
|
const { dsr: dsr_, chi: chi_, rho: rho_ } = state;
|
|
38
34
|
const now = BigInt(currentTimestamp);
|
|
39
35
|
const rho = BigInt(rho_);
|
|
40
36
|
const dsr = BigInt(dsr_);
|
|
41
37
|
const chi = BigInt(chi_);
|
|
42
|
-
return now > rho ? (rpow(dsr, now - rho) * chi) / RAY : chi;
|
|
38
|
+
return now > rho ? (rpow(dsr, now - rho) * chi) / exports.RAY : chi;
|
|
43
39
|
};
|
|
40
|
+
exports.calcChi = calcChi;
|
|
44
41
|
class SparkSDaiEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
45
|
-
constructor(parentName, poolName, dexHelper, potAddress, potInterface, logger) {
|
|
42
|
+
constructor(parentName, network, poolName, dexHelper, potAddress, potInterface, logger, savingsRateTopic, savingsRateSymbol) {
|
|
46
43
|
super(parentName, poolName, dexHelper, logger);
|
|
47
44
|
this.dexHelper = dexHelper;
|
|
48
45
|
this.potAddress = potAddress;
|
|
49
46
|
this.potInterface = potInterface;
|
|
47
|
+
this.savingsRateTopic = savingsRateTopic;
|
|
48
|
+
this.savingsRateSymbol = savingsRateSymbol;
|
|
50
49
|
this.addressesSubscribed = [potAddress];
|
|
51
50
|
}
|
|
52
51
|
processLog(state, log, blockHeader) {
|
|
53
|
-
if (log.topics[0] === FILE_TOPICHASH &&
|
|
52
|
+
if (log.topics[0] === FILE_TOPICHASH &&
|
|
53
|
+
log.topics[2] === this.savingsRateTopic) {
|
|
54
54
|
return {
|
|
55
55
|
...state,
|
|
56
56
|
dsr: BigInt(log.topics[3]).toString(),
|
|
@@ -60,25 +60,21 @@ class SparkSDaiEventPool extends stateful_event_subscriber_1.StatefulEventSubscr
|
|
|
60
60
|
return {
|
|
61
61
|
...state,
|
|
62
62
|
rho: blockHeader.timestamp.toString(),
|
|
63
|
-
chi: calcChi(state, +blockHeader.timestamp).toString(),
|
|
63
|
+
chi: (0, exports.calcChi)(state, +blockHeader.timestamp).toString(),
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
return null;
|
|
67
67
|
}
|
|
68
68
|
async generateState(blockNumber = 'latest') {
|
|
69
|
-
return (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.potAddress, this.potInterface, blockNumber);
|
|
69
|
+
return (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.potAddress, this.potInterface, this.savingsRateSymbol, blockNumber);
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (!state)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const state = this.getState(blockNumber);
|
|
79
|
-
if (!state)
|
|
80
|
-
throw new Error(`SDai state at ${blockNumber} does not exists`);
|
|
81
|
-
return (sdaiAmount * calcChi(state)) / RAY;
|
|
71
|
+
async getOrGenerateState(blockNumber) {
|
|
72
|
+
let state = this.getState(blockNumber);
|
|
73
|
+
if (!state) {
|
|
74
|
+
state = await this.generateState(blockNumber);
|
|
75
|
+
this.setState(state, blockNumber);
|
|
76
|
+
}
|
|
77
|
+
return state;
|
|
82
78
|
}
|
|
83
79
|
}
|
|
84
80
|
exports.SparkSDaiEventPool = SparkSDaiEventPool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spark-sdai-pool.js","sourceRoot":"","sources":["../../../src/dex/spark/spark-sdai-pool.ts"],"names":[],"mappings":";;;AAAA,6DAAiD;AACjD,+EAA0E;AAO1E,mCAA0C;
|
|
1
|
+
{"version":3,"file":"spark-sdai-pool.js","sourceRoot":"","sources":["../../../src/dex/spark/spark-sdai-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SimpleExchange } from '../simple-exchange';
|
|
2
2
|
import { Context, IDex } from '../idex';
|
|
3
|
-
import { SparkParams, SparkData } from './types';
|
|
3
|
+
import { SparkParams, SparkData, SparkSDaiPoolState } from './types';
|
|
4
4
|
import { Network, SwapSide } from '../../constants';
|
|
5
5
|
import { AdapterExchangeParam, Address, DexExchangeParam, ExchangePrices, Logger, NumberAsString, PoolLiquidity, PoolPrices, SimpleExchangeParam, Token } from '../../types';
|
|
6
6
|
import { IDexHelper } from '../../dex-helper';
|
|
@@ -8,10 +8,11 @@ import { Interface } from 'ethers/lib/utils';
|
|
|
8
8
|
import { SparkSDaiEventPool } from './spark-sdai-pool';
|
|
9
9
|
export declare class Spark extends SimpleExchange implements IDex<SparkData, SparkParams> {
|
|
10
10
|
protected network: Network;
|
|
11
|
-
|
|
11
|
+
readonly dexHelper: IDexHelper;
|
|
12
12
|
readonly daiAddress: string;
|
|
13
13
|
readonly sdaiAddress: string;
|
|
14
14
|
readonly potAddress: string;
|
|
15
|
+
readonly abiInterface: Interface;
|
|
15
16
|
protected adapters: {
|
|
16
17
|
[side: string]: {
|
|
17
18
|
name: string;
|
|
@@ -19,7 +20,6 @@ export declare class Spark extends SimpleExchange implements IDex<SparkData, Spa
|
|
|
19
20
|
}[];
|
|
20
21
|
};
|
|
21
22
|
protected sdaiInterface: Interface;
|
|
22
|
-
protected potInterface: Interface;
|
|
23
23
|
readonly hasConstantPriceLargeAmounts = true;
|
|
24
24
|
readonly isFeeOnTransferSupported = false;
|
|
25
25
|
static dexKeysWithNetwork: {
|
|
@@ -28,12 +28,12 @@ export declare class Spark extends SimpleExchange implements IDex<SparkData, Spa
|
|
|
28
28
|
}[];
|
|
29
29
|
readonly eventPool: SparkSDaiEventPool;
|
|
30
30
|
logger: Logger;
|
|
31
|
-
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, daiAddress?: string, sdaiAddress?: string, potAddress?: string, adapters?: {
|
|
31
|
+
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, daiAddress?: string, sdaiAddress?: string, potAddress?: string, abiInterface?: Interface, adapters?: {
|
|
32
32
|
[side: string]: {
|
|
33
33
|
name: string;
|
|
34
34
|
index: number;
|
|
35
35
|
}[];
|
|
36
|
-
}, sdaiInterface?: Interface
|
|
36
|
+
}, sdaiInterface?: Interface);
|
|
37
37
|
getAdapters(side: SwapSide): {
|
|
38
38
|
name: string;
|
|
39
39
|
index: number;
|
|
@@ -49,4 +49,9 @@ export declare class Spark extends SimpleExchange implements IDex<SparkData, Spa
|
|
|
49
49
|
getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: SparkData, side: SwapSide): Promise<SimpleExchangeParam>;
|
|
50
50
|
getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: SparkData, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam;
|
|
51
51
|
getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: SparkData, side: SwapSide): AdapterExchangeParam;
|
|
52
|
+
previewRedeem(shares: bigint, state: SparkSDaiPoolState): bigint;
|
|
53
|
+
previewMint(shares: bigint, state: SparkSDaiPoolState): bigint;
|
|
54
|
+
previewWithdraw(assets: bigint, state: SparkSDaiPoolState): bigint;
|
|
55
|
+
previewDeposit(assets: bigint, state: SparkSDaiPoolState): bigint;
|
|
56
|
+
divUp(x: bigint, y: bigint): bigint;
|
|
52
57
|
}
|