@paraswap/dex-lib 4.6.20 → 4.6.21
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/pendle/pendle-deployer.abi.json +520 -0
- package/build/abi/pendle/pendle-oracle.abi.json +413 -0
- package/build/abi/sky-converter/MkrSkyConverter.json +122 -17
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.d.ts +29 -0
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js +153 -0
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js.map +1 -0
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.d.ts +3 -1
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +64 -12
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +1 -1
- package/build/dex/aave-pt-to-underlying/config.js +4 -30
- package/build/dex/aave-pt-to-underlying/config.js.map +1 -1
- package/build/dex/aave-pt-to-underlying/types.d.ts +12 -11
- package/build/dex/sky-converter/config.js +1 -0
- package/build/dex/sky-converter/config.js.map +1 -1
- package/build/dex/sky-converter/sky-converter-pool.d.ts +24 -0
- package/build/dex/sky-converter/sky-converter-pool.js +68 -0
- package/build/dex/sky-converter/sky-converter-pool.js.map +1 -0
- package/build/dex/sky-converter/sky-converter.d.ts +3 -2
- package/build/dex/sky-converter/sky-converter.js +31 -9
- package/build/dex/sky-converter/sky-converter.js.map +1 -1
- package/build/dex/sky-converter/types.d.ts +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
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.AavePtToUnderlyingFactory = void 0;
|
|
7
|
+
const abi_1 = require("@ethersproject/abi");
|
|
8
|
+
const utils_1 = require("../../utils");
|
|
9
|
+
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
10
|
+
const pendle_deployer_abi_json_1 = __importDefault(require("../../abi/pendle/pendle-deployer.abi.json"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const PENDLE_DEPLOYER_ADDRESS = '0x2Ed473F528E5B320f850d17ADfe0e558f0298aA9';
|
|
13
|
+
class AavePtToUnderlyingFactory extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
14
|
+
parentName;
|
|
15
|
+
network;
|
|
16
|
+
dexHelper;
|
|
17
|
+
handlers = {};
|
|
18
|
+
logDecoder;
|
|
19
|
+
addressesSubscribed;
|
|
20
|
+
deployerIface = new abi_1.Interface(pendle_deployer_abi_json_1.default);
|
|
21
|
+
CACHE_TTL_MS = 3600000; // 1 hour
|
|
22
|
+
constructor(parentName, network, dexHelper, logger) {
|
|
23
|
+
super(parentName, 'factory', dexHelper, logger);
|
|
24
|
+
this.parentName = parentName;
|
|
25
|
+
this.network = network;
|
|
26
|
+
this.dexHelper = dexHelper;
|
|
27
|
+
this.logDecoder = (log) => this.deployerIface.parseLog(log);
|
|
28
|
+
this.addressesSubscribed = [PENDLE_DEPLOYER_ADDRESS];
|
|
29
|
+
// Add handlers
|
|
30
|
+
this.handlers['MarketDeployment'] = this.handleMarketDeployment.bind(this);
|
|
31
|
+
}
|
|
32
|
+
async handleMarketDeployment(event, _state, _log) {
|
|
33
|
+
try {
|
|
34
|
+
const { params } = event.args;
|
|
35
|
+
// Check if market is expired
|
|
36
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
37
|
+
if (params.expiry <= currentTime) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Trigger a refresh from API to get complete market data
|
|
41
|
+
this.logger.info('New market deployment detected, refreshing from API');
|
|
42
|
+
return await this.generateState(await this.dexHelper.provider.getBlockNumber());
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
this.logger.error(`Failed to handle MarketDeployment event: ${error}`);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async processLog(state, log) {
|
|
50
|
+
try {
|
|
51
|
+
let event;
|
|
52
|
+
try {
|
|
53
|
+
event = this.logDecoder(log);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
if (event.name in this.handlers) {
|
|
59
|
+
return await this.handlers[event.name](event, state, log);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
(0, utils_1.catchParseLogError)(e, this.logger);
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
async getStateOrGenerate(blockNumber, readonly = false) {
|
|
68
|
+
let state = this.getState(blockNumber);
|
|
69
|
+
// Check if we need to refresh based on TTL
|
|
70
|
+
if (state && Date.now() - state.lastFetchTimestamp > this.CACHE_TTL_MS) {
|
|
71
|
+
this.logger.info('Market cache expired, refreshing from API');
|
|
72
|
+
state = null; // Force regeneration
|
|
73
|
+
}
|
|
74
|
+
if (!state) {
|
|
75
|
+
state = await this.generateState(blockNumber);
|
|
76
|
+
if (!readonly)
|
|
77
|
+
this.setState(state, blockNumber);
|
|
78
|
+
}
|
|
79
|
+
// Filter expired markets before returning
|
|
80
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
81
|
+
return {
|
|
82
|
+
...state,
|
|
83
|
+
markets: state.markets.filter(m => m.pt.expiry > currentTime),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async generateState(_blockNumber) {
|
|
87
|
+
try {
|
|
88
|
+
// Always fetch from Pendle API for complete market information
|
|
89
|
+
const markets = await this.fetchMarketsFromAPI();
|
|
90
|
+
if (markets.length > 0) {
|
|
91
|
+
this.logger.info(`Fetched ${markets.length} active PT markets from Pendle API`);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.logger.warn('No active PT markets found from Pendle API');
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
markets,
|
|
98
|
+
lastFetchTimestamp: Date.now(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
this.logger.error(`Failed to generate state: ${error}`);
|
|
103
|
+
return {
|
|
104
|
+
markets: [],
|
|
105
|
+
lastFetchTimestamp: Date.now(),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async fetchMarketsFromAPI() {
|
|
110
|
+
try {
|
|
111
|
+
const apiUrl = `${constants_1.PENDLE_API_URL}/v1/sdk/markets?chainId=${this.network}`;
|
|
112
|
+
const response = await fetch(apiUrl);
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
115
|
+
}
|
|
116
|
+
const data = await response.json();
|
|
117
|
+
if (!data.results || !Array.isArray(data.results)) {
|
|
118
|
+
this.logger.warn('Unexpected API response format');
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
const markets = [];
|
|
122
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
123
|
+
for (const market of data.results) {
|
|
124
|
+
// Skip expired markets
|
|
125
|
+
if (!market.expiry || market.expiry <= currentTime) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
// Only process markets with PT and underlying info
|
|
129
|
+
if (market.pt && market.underlyingAsset) {
|
|
130
|
+
markets.push({
|
|
131
|
+
pt: {
|
|
132
|
+
address: market.pt.address.toLowerCase(),
|
|
133
|
+
decimals: market.pt.decimals || 18,
|
|
134
|
+
name: market.pt.name || `PT-${market.underlyingAsset.symbol}`,
|
|
135
|
+
expiry: market.expiry,
|
|
136
|
+
},
|
|
137
|
+
marketAddress: market.address.toLowerCase(),
|
|
138
|
+
exitMarketAddress: market.address.toLowerCase(),
|
|
139
|
+
underlyingAssetAddress: market.underlyingAsset.address.toLowerCase(),
|
|
140
|
+
underlyingRawAddress: market.underlyingAsset.address.toLowerCase(),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return markets;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
this.logger.error(`Failed to fetch markets from API: ${error}`);
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.AavePtToUnderlyingFactory = AavePtToUnderlyingFactory;
|
|
153
|
+
//# sourceMappingURL=aave-pt-to-underlying-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave-pt-to-underlying-factory.js","sourceRoot":"","sources":["../../../src/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,19 +14,21 @@ export declare class AavePtToUnderlying extends SimpleExchange implements IDex<A
|
|
|
14
14
|
readonly isFeeOnTransferSupported = false;
|
|
15
15
|
private config;
|
|
16
16
|
private oracleInterface;
|
|
17
|
-
private
|
|
17
|
+
private markets;
|
|
18
18
|
logger: Logger;
|
|
19
19
|
static dexKeysWithNetwork: {
|
|
20
20
|
key: string;
|
|
21
21
|
networks: Network[];
|
|
22
22
|
}[];
|
|
23
23
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
|
|
24
|
+
initializePricing(blockNumber: number): Promise<void>;
|
|
24
25
|
getAdapters(): {
|
|
25
26
|
name: string;
|
|
26
27
|
index: number;
|
|
27
28
|
}[] | null;
|
|
28
29
|
getPoolIdentifier(marketAddress: string): string;
|
|
29
30
|
getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
|
|
31
|
+
private fetchActiveMarkets;
|
|
30
32
|
private getMarketByPtToken;
|
|
31
33
|
private getOracleRate;
|
|
32
34
|
private calculatePriceFromOracle;
|
|
@@ -54,7 +54,7 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
54
54
|
isFeeOnTransferSupported = false;
|
|
55
55
|
config;
|
|
56
56
|
oracleInterface;
|
|
57
|
-
|
|
57
|
+
markets = new Map();
|
|
58
58
|
logger;
|
|
59
59
|
static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.AavePtToUnderlyingConfig);
|
|
60
60
|
constructor(network, dexKey, dexHelper) {
|
|
@@ -65,7 +65,9 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
65
65
|
this.config = config_1.AavePtToUnderlyingConfig[dexKey][network];
|
|
66
66
|
this.logger = dexHelper.getLogger(dexKey);
|
|
67
67
|
this.oracleInterface = new abi_1.Interface(PendleOracle_json_1.default);
|
|
68
|
-
|
|
68
|
+
}
|
|
69
|
+
async initializePricing(blockNumber) {
|
|
70
|
+
await this.fetchActiveMarkets();
|
|
69
71
|
}
|
|
70
72
|
getAdapters() {
|
|
71
73
|
return null;
|
|
@@ -74,19 +76,69 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
74
76
|
return `${this.dexKey}_${marketAddress.toLowerCase()}`;
|
|
75
77
|
}
|
|
76
78
|
async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
|
|
77
|
-
const market = this.getMarketByPtToken(srcToken.address);
|
|
79
|
+
const market = await this.getMarketByPtToken(srcToken.address.toLowerCase());
|
|
78
80
|
if (!market) {
|
|
79
81
|
return [];
|
|
80
82
|
}
|
|
81
83
|
// Only support PT -> underlying swaps
|
|
82
|
-
if (destToken.address.toLowerCase() !==
|
|
83
|
-
market.underlyingRawAddress.toLowerCase()) {
|
|
84
|
+
if (destToken.address.toLowerCase() !== market.underlyingAddress.toLowerCase()) {
|
|
84
85
|
return [];
|
|
85
86
|
}
|
|
86
87
|
return [this.getPoolIdentifier(market.marketAddress)];
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
async fetchActiveMarkets() {
|
|
90
|
+
try {
|
|
91
|
+
const { markets } = await this.dexHelper.httpRequest.get(`${constants_2.PENDLE_API_URL}/v1/${this.network}/markets/active`);
|
|
92
|
+
if (!markets) {
|
|
93
|
+
this.logger.error('No results from Pendle markets API');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.markets.clear();
|
|
97
|
+
for (const market of markets) {
|
|
98
|
+
const supportedMarket = this.config.underlyingAddresses[market.name];
|
|
99
|
+
if (!supportedMarket) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// received in the format "chainId-address"
|
|
103
|
+
const underlyingAddress = market.underlyingAsset
|
|
104
|
+
.toLowerCase()
|
|
105
|
+
.split('-')[1];
|
|
106
|
+
const ptAddress = market.pt.toLowerCase().split('-')[1];
|
|
107
|
+
if (underlyingAddress !== supportedMarket.toLowerCase()) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const marketData = {
|
|
111
|
+
ptAddress: ptAddress,
|
|
112
|
+
ptDecimals: 18,
|
|
113
|
+
expiry: new Date(market.expiry).getTime(),
|
|
114
|
+
marketAddress: market.address,
|
|
115
|
+
underlyingAddress: supportedMarket, // Use the original cased address from config
|
|
116
|
+
};
|
|
117
|
+
this.markets.set(ptAddress, marketData);
|
|
118
|
+
}
|
|
119
|
+
this.logger.info(`Loaded ${this.markets.size} PT markets`);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.logger.error(`Failed to load markets from API: ${error}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async getMarketByPtToken(ptToken) {
|
|
126
|
+
if (this.markets.size === 0) {
|
|
127
|
+
await this.fetchActiveMarkets();
|
|
128
|
+
return this.markets.get(ptToken);
|
|
129
|
+
}
|
|
130
|
+
const cachedMarket = this.markets.get(ptToken);
|
|
131
|
+
if (!cachedMarket) {
|
|
132
|
+
await this.fetchActiveMarkets();
|
|
133
|
+
return this.markets.get(ptToken);
|
|
134
|
+
}
|
|
135
|
+
const now = Date.now();
|
|
136
|
+
const isExpired = cachedMarket.expiry < now;
|
|
137
|
+
if (isExpired) {
|
|
138
|
+
await this.fetchActiveMarkets();
|
|
139
|
+
return this.markets.get(ptToken);
|
|
140
|
+
}
|
|
141
|
+
return cachedMarket;
|
|
90
142
|
}
|
|
91
143
|
async getOracleRate(market) {
|
|
92
144
|
try {
|
|
@@ -114,12 +166,12 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
114
166
|
}
|
|
115
167
|
}
|
|
116
168
|
async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
|
|
117
|
-
const market = this.getMarketByPtToken(srcToken.address);
|
|
169
|
+
const market = await this.getMarketByPtToken(srcToken.address.toLowerCase());
|
|
118
170
|
if (!market) {
|
|
119
171
|
return null;
|
|
120
172
|
}
|
|
121
|
-
const {
|
|
122
|
-
const isUnderlying = destToken.address.toLowerCase() ===
|
|
173
|
+
const { underlyingAddress, marketAddress } = market;
|
|
174
|
+
const isUnderlying = destToken.address.toLowerCase() === underlyingAddress.toLowerCase();
|
|
123
175
|
if (!isUnderlying) {
|
|
124
176
|
return null;
|
|
125
177
|
}
|
|
@@ -160,7 +212,7 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
160
212
|
};
|
|
161
213
|
}
|
|
162
214
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
163
|
-
const market = this.getMarketByPtToken(tokenAddress);
|
|
215
|
+
const market = await this.getMarketByPtToken(tokenAddress.toLowerCase());
|
|
164
216
|
if (market) {
|
|
165
217
|
return [
|
|
166
218
|
{
|
|
@@ -168,7 +220,7 @@ class AavePtToUnderlying extends simple_exchange_1.SimpleExchange {
|
|
|
168
220
|
address: market.marketAddress,
|
|
169
221
|
connectorTokens: [
|
|
170
222
|
{
|
|
171
|
-
address: market.
|
|
223
|
+
address: market.underlyingAddress,
|
|
172
224
|
decimals: 18,
|
|
173
225
|
liquidityUSD: constants_1.NO_USD_LIQUIDITY,
|
|
174
226
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave-pt-to-underlying.js","sourceRoot":"","sources":["../../../src/dex/aave-pt-to-underlying/aave-pt-to-underlying.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,+CAKyB;AACzB,2EAA6D;AAC7D,uCAAkE;
|
|
1
|
+
{"version":3,"file":"aave-pt-to-underlying.js","sourceRoot":"","sources":["../../../src/dex/aave-pt-to-underlying/aave-pt-to-underlying.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,+CAKyB;AACzB,2EAA6D;AAC7D,uCAAkE;AASlE,wDAAoD;AACpD,qCAAoD;AACpD,4CAA+C;AAC/C,oFAA4D;AAC5D,2CAA6E;AAG7E,MAAa,kBACX,SAAQ,gCAAc;IAiBX;IACA;IACA;IAhBF,4BAA4B,GAAG,KAAK,CAAC;IACrC,cAAc,GAAG,KAAK,CAAC;IACvB,wBAAwB,GAAG,KAAK,CAAC;IAElC,MAAM,CAAY;IAClB,eAAe,CAAY;IAC3B,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEtD,MAAM,CAAS;IAER,MAAM,CAAC,kBAAkB,GAC9B,IAAA,6BAAqB,EAAC,iCAAwB,CAAC,CAAC;IAElD,YACW,OAAgB,EAChB,MAAc,EACd,SAAqB;QAE9B,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAJhB,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;QAG9B,IAAI,CAAC,MAAM,GAAG,iCAAwB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAS,CAAC,2BAAiB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,aAAqB;QACrC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAe,EACf,SAAgB,EAChB,IAAc,EACd,WAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,sCAAsC;QACtC,IACE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAC1E,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAErD,GAAG,0BAAc,OAAO,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC;YAE1D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAErB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAErE,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,SAAS;gBACX,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe;qBAC7C,WAAW,EAAE;qBACb,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,iBAAiB,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxD,SAAS;gBACX,CAAC;gBAED,MAAM,UAAU,GAAgB;oBAC9B,SAAS,EAAE,SAAS;oBACpB,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;oBACzC,aAAa,EAAE,MAAM,CAAC,OAAO;oBAC7B,iBAAiB,EAAE,eAAe,EAAE,6CAA6C;iBAClF,CAAC;gBAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,OAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAmB;QAC7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACtD,kBAAkB,EAClB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAC1B,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9C,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBAC7B,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,MAAmB,EACnB,OAAiB,EACjB,IAAc;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAE3B,IAAI,IAAI,KAAK,oBAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,QAAe,EACf,SAAgB,EAChB,OAAiB,EACjB,IAAc,EACd,WAAmB,EACnB,UAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAEpD,MAAM,YAAY,GAChB,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAEtE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,oBAAY,EACvB,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAChE,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,OAAO;YACL;gBACE,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACf,OAAO,EAAE,0CAA8B;gBACvC,IAAI,EAAE;oBACJ,aAAa;iBACd;gBACD,eAAe,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACxD,aAAa,EAAE,CAAC,aAAa,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,OAAO,iBAAiB,CAAC,cAAc,CAAC;IAC1C,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAA4B,EAC5B,IAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAC/C,OAAO;YACP,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,YAAqB,EACrB,KAAa;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAEzE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL;oBACE,QAAQ,EAAE,IAAI,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,aAAa;oBAC7B,eAAe,EAAE;wBACf;4BACE,OAAO,EAAE,MAAM,CAAC,iBAAiB;4BACjC,QAAQ,EAAE,EAAE;4BACZ,YAAY,EAAE,4BAAgB;yBAC/B;qBACF;oBACD,YAAY,EAAE,mCAAuB;iBACtC;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,SAAkB,EAClB,IAA4B,EAC5B,IAAc,EACd,OAAgB,EAChB,eAAwB;QAExB,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,KAAK;SACxB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,8CACf,QAAQ,CAAC,KAAK,IAAI,8BACpB,EAAE,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAEvB,4BAA4B;QAC5B,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,uDAAuD,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,QAAQ,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG;YACb,cAAc,EAAE,EAAE,CAAC,EAAE;YACrB,YAAY,EAAE,EAAE,CAAC,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,IAAI;YACzB,eAAe,EAAE,CAAC;SACnB,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,aAAqB,EACrB,MAAW;QAEX,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAG,0BAAc,WAAW,IAAI,CAAC,OAAO,YAAY,aAAa,iBAAiB,CACnF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAChC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CACnD,GAAG,CAAC,QAAQ,EAAE,EACd,KAAK,EACL;gBACE,MAAM,EAAE,kBAAkB;aAC3B,CACF,CAAC;YAEF,MAAM,YAAY,GAAG,QAAe,CAAC;YAErC,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY;gBACvC,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;aAC7C,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,EAAE,EAAE,IAAI;aACT,CAAC;QACJ,CAAC;IACH,CAAC;;AA7WH,gDA8WC"}
|
|
@@ -6,41 +6,15 @@ const constants_1 = require("../../constants");
|
|
|
6
6
|
const PENDLE_ROUTER_ADDRESS = '0x888888888889758f76e7103c6cbf23abbf58f946';
|
|
7
7
|
// Pendle Oracle https://etherscan.io/address/0x9a9Fa8338dd5E5B2188006f1Cd2Ef26d921650C2
|
|
8
8
|
const ORACLE_ADDRESS = '0x9a9Fa8338dd5E5B2188006f1Cd2Ef26d921650C2';
|
|
9
|
-
// PT sUSDe 25 Sep 2025: https://etherscan.io/address/0x9f56094c450763769ba0ea9fe2876070c0fd5f77
|
|
10
|
-
// PT USDe 25 Sep 2025: https://etherscan.io/address/0xbc6736d346a5ebc0debc997397912cd9b8fae10a
|
|
11
|
-
// sUSDe: https://etherscan.io/address/0x9d39a5de30e57443bff2a8307a4256c8797a3497
|
|
12
|
-
// USDe: https://etherscan.io/address/0x4c9edd5852cd905f086c759e8383e09bff1e68b3
|
|
13
9
|
exports.AavePtToUnderlyingConfig = {
|
|
14
10
|
AavePtToUnderlying: {
|
|
15
11
|
[constants_1.Network.MAINNET]: {
|
|
16
12
|
pendleRouterAddress: PENDLE_ROUTER_ADDRESS,
|
|
17
13
|
oracleAddress: ORACLE_ADDRESS,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
decimals: 18,
|
|
23
|
-
name: 'PT-sUSDe-25SEP2025',
|
|
24
|
-
expiry: 1764201600,
|
|
25
|
-
},
|
|
26
|
-
marketAddress: '0xa36b60a14a1a5247912584768c6e53e1a269a9f7', // PT sUSDe 25 Sep 2025 market
|
|
27
|
-
exitMarketAddress: '0xa36b60a14a1a5247912584768c6e53e1a269a9f7', // Same as market for now
|
|
28
|
-
underlyingAssetAddress: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497', // sUSDe
|
|
29
|
-
underlyingRawAddress: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497', // raw sUSDe
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
pt: {
|
|
33
|
-
address: '0xbc6736d346a5ebc0debc997397912cd9b8fae10a',
|
|
34
|
-
decimals: 18,
|
|
35
|
-
name: 'PT-USDe-25SEP2025',
|
|
36
|
-
expiry: 1764201600,
|
|
37
|
-
},
|
|
38
|
-
marketAddress: '0x6d98a2b6cdbf44939362a3e99793339ba2016af4', // PT USDe market
|
|
39
|
-
exitMarketAddress: '0x6d98a2b6cdbf44939362a3e99793339ba2016af4', // Same as market for now
|
|
40
|
-
underlyingAssetAddress: '0x4c9edd5852cd905f086c759e8383e09bff1e68b3', // USDe
|
|
41
|
-
underlyingRawAddress: '0x4c9edd5852cd905f086c759e8383e09bff1e68b3', // raw USDe
|
|
42
|
-
},
|
|
43
|
-
],
|
|
14
|
+
underlyingAddresses: {
|
|
15
|
+
USDe: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
16
|
+
sUSDe: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
17
|
+
},
|
|
44
18
|
},
|
|
45
19
|
},
|
|
46
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/aave-pt-to-underlying/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE1C,gGAAgG;AAChG,MAAM,qBAAqB,GAAG,4CAA4C,CAAC;AAC3E,wFAAwF;AACxF,MAAM,cAAc,GAAG,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/aave-pt-to-underlying/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE1C,gGAAgG;AAChG,MAAM,qBAAqB,GAAG,4CAA4C,CAAC;AAC3E,wFAAwF;AACxF,MAAM,cAAc,GAAG,4CAA4C,CAAC;AAEvD,QAAA,wBAAwB,GAA4B;IAC/D,kBAAkB,EAAE;QAClB,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,mBAAmB,EAAE,qBAAqB;YAC1C,aAAa,EAAE,cAAc;YAC7B,mBAAmB,EAAE;gBACnB,IAAI,EAAE,4CAA4C;gBAClD,KAAK,EAAE,4CAA4C;aACpD;SACF;KACF;CACF,CAAC"}
|
|
@@ -2,21 +2,22 @@ import { Address } from '../../types';
|
|
|
2
2
|
export type AavePtToUnderlyingData = {
|
|
3
3
|
marketAddress: Address;
|
|
4
4
|
};
|
|
5
|
-
export interface PendleToken {
|
|
6
|
-
address: string;
|
|
7
|
-
decimals: number;
|
|
8
|
-
name: string;
|
|
9
|
-
expiry: number;
|
|
10
|
-
}
|
|
11
5
|
export interface SupportedPt {
|
|
12
|
-
|
|
6
|
+
ptAddress: string;
|
|
7
|
+
ptDecimals: number;
|
|
8
|
+
expiry: number;
|
|
13
9
|
marketAddress: string;
|
|
14
|
-
|
|
15
|
-
underlyingAssetAddress: string;
|
|
16
|
-
underlyingRawAddress: string;
|
|
10
|
+
underlyingAddress: string;
|
|
17
11
|
}
|
|
18
12
|
export interface DexParams {
|
|
19
13
|
pendleRouterAddress: string;
|
|
20
14
|
oracleAddress: string;
|
|
21
|
-
|
|
15
|
+
underlyingAddresses: Record<string, Address>;
|
|
16
|
+
}
|
|
17
|
+
export interface Market {
|
|
18
|
+
name: string;
|
|
19
|
+
address: string;
|
|
20
|
+
expiry: string;
|
|
21
|
+
pt: Address;
|
|
22
|
+
underlyingAsset: Address;
|
|
22
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/sky-converter/config.ts"],"names":[],"mappings":";;;;;;AAEA,+CAA0C;AAC1C,0GAAgF;AAChF,wGAA8E;AAC9E,4CAA+C;AAElC,QAAA,kBAAkB,GAA4B;IACzD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;YAC7D,oBAAoB,EAAE,WAAW;YACjC,oBAAoB,EAAE,WAAW;YACjC,sBAAsB,EAAE,EAAE,EAAE,gCAAgC;YAC5D,cAAc,EAAE,IAAI,eAAS,CAAC,+BAAmB,CAAC;SACnD;KACF;IACD,MAAM,EAAE;QACN,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;YAC7D,oBAAoB,EAAE,UAAU;YAChC,sBAAsB,EAAE,MAAO,EAAE,gCAAgC;YACjE,cAAc,EAAE,IAAI,eAAS,CAAC,8BAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/sky-converter/config.ts"],"names":[],"mappings":";;;;;;AAEA,+CAA0C;AAC1C,0GAAgF;AAChF,wGAA8E;AAC9E,4CAA+C;AAElC,QAAA,kBAAkB,GAA4B;IACzD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;YAC7D,oBAAoB,EAAE,WAAW;YACjC,oBAAoB,EAAE,WAAW;YACjC,sBAAsB,EAAE,EAAE,EAAE,gCAAgC;YAC5D,cAAc,EAAE,IAAI,eAAS,CAAC,+BAAmB,CAAC;SACnD;KACF;IACD,MAAM,EAAE;QACN,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;YAC7D,oBAAoB,EAAE,UAAU;YAChC,sBAAsB,EAAE,MAAO,EAAE,gCAAgC;YACjE,cAAc,EAAE,IAAI,eAAS,CAAC,8BAAkB,CAAC;YACjD,YAAY,EAAE,IAAI;SACnB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { Interface } from '@ethersproject/abi';
|
|
3
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
4
|
+
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
5
|
+
import { Address, BlockHeader, Log, Logger } from '../../types';
|
|
6
|
+
import { IDexHelper } from '../../dex-helper';
|
|
7
|
+
import { SkyConverterPoolState } from './types';
|
|
8
|
+
export declare class SkyConverterEventPool extends StatefulEventSubscriber<SkyConverterPoolState> {
|
|
9
|
+
readonly parentName: string;
|
|
10
|
+
protected network: number;
|
|
11
|
+
protected dexHelper: IDexHelper;
|
|
12
|
+
private readonly converterAddress;
|
|
13
|
+
private readonly converterInterface;
|
|
14
|
+
handlers: {
|
|
15
|
+
[event: string]: (event: any, state: DeepReadonly<SkyConverterPoolState>, log: Readonly<Log>) => DeepReadonly<SkyConverterPoolState> | null;
|
|
16
|
+
};
|
|
17
|
+
logDecoder: (log: Log) => any;
|
|
18
|
+
readonly contract: Contract;
|
|
19
|
+
constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, converterAddress: Address, converterInterface: Interface);
|
|
20
|
+
protected processLog(state: DeepReadonly<SkyConverterPoolState>, log: Readonly<Log>, _blockHeader: Readonly<BlockHeader>): DeepReadonly<SkyConverterPoolState> | null;
|
|
21
|
+
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<SkyConverterPoolState>>;
|
|
22
|
+
getOrGenerateState(blockNumber: number): Promise<SkyConverterPoolState>;
|
|
23
|
+
handleFile(event: any, state: DeepReadonly<SkyConverterPoolState>, log: Readonly<Log>): DeepReadonly<SkyConverterPoolState> | null;
|
|
24
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkyConverterEventPool = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
7
|
+
const FEE_BYTES32 = '0x6665650000000000000000000000000000000000000000000000000000000000';
|
|
8
|
+
class SkyConverterEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
9
|
+
parentName;
|
|
10
|
+
network;
|
|
11
|
+
dexHelper;
|
|
12
|
+
converterAddress;
|
|
13
|
+
converterInterface;
|
|
14
|
+
handlers = {};
|
|
15
|
+
logDecoder;
|
|
16
|
+
contract;
|
|
17
|
+
constructor(parentName, network, dexHelper, logger, converterAddress, converterInterface) {
|
|
18
|
+
super(parentName, 'fee', dexHelper, logger);
|
|
19
|
+
this.parentName = parentName;
|
|
20
|
+
this.network = network;
|
|
21
|
+
this.dexHelper = dexHelper;
|
|
22
|
+
this.converterAddress = converterAddress;
|
|
23
|
+
this.converterInterface = converterInterface;
|
|
24
|
+
this.logDecoder = (log) => this.converterInterface.parseLog(log);
|
|
25
|
+
this.contract = new ethers_1.Contract(this.converterAddress, this.converterInterface.fragments, this.dexHelper.provider);
|
|
26
|
+
this.addressesSubscribed = [this.converterAddress];
|
|
27
|
+
this.handlers['File'] = this.handleFile.bind(this);
|
|
28
|
+
}
|
|
29
|
+
processLog(state, log, _blockHeader) {
|
|
30
|
+
try {
|
|
31
|
+
const event = this.logDecoder(log);
|
|
32
|
+
if (event.name in this.handlers) {
|
|
33
|
+
return this.handlers[event.name](event, state, log);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
(0, utils_1.catchParseLogError)(error, this.logger);
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
async generateState(blockNumber = 'latest') {
|
|
42
|
+
try {
|
|
43
|
+
const feeBn = await this.contract.fee({ blockTag: blockNumber });
|
|
44
|
+
return { fee: feeBn.toBigInt() };
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.logger.warn(`${this.parentName}: failed to fetch fee state, falling back to 0`, error);
|
|
48
|
+
return { fee: 0n };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async getOrGenerateState(blockNumber) {
|
|
52
|
+
const state = this.getState(blockNumber);
|
|
53
|
+
if (state) {
|
|
54
|
+
return { fee: state.fee };
|
|
55
|
+
}
|
|
56
|
+
const freshState = await this.generateState(blockNumber);
|
|
57
|
+
this.setState(freshState, blockNumber);
|
|
58
|
+
return { fee: freshState.fee };
|
|
59
|
+
}
|
|
60
|
+
handleFile(event, state, log) {
|
|
61
|
+
if (event.args.what.toLowerCase() !== FEE_BYTES32) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return { fee: event.args.data.toBigInt() };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.SkyConverterEventPool = SkyConverterEventPool;
|
|
68
|
+
//# sourceMappingURL=sky-converter-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sky-converter-pool.js","sourceRoot":"","sources":["../../../src/dex/sky-converter/sky-converter-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare class SkyConverter extends SimpleExchange implements IDex<SkyConv
|
|
|
18
18
|
logger: Logger;
|
|
19
19
|
oldToken: Address;
|
|
20
20
|
newToken: Address;
|
|
21
|
+
private readonly eventPool?;
|
|
21
22
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, config?: import("./types").DexParams);
|
|
22
23
|
initializePricing(blockNumber: number): Promise<void>;
|
|
23
24
|
getAdapters(side: SwapSide): {
|
|
@@ -25,8 +26,8 @@ export declare class SkyConverter extends SimpleExchange implements IDex<SkyConv
|
|
|
25
26
|
index: number;
|
|
26
27
|
}[] | null;
|
|
27
28
|
getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
|
|
28
|
-
oldAmountToNewAmount(amount: bigint): bigint;
|
|
29
|
-
newAmountToOldAmount(amount: bigint): bigint;
|
|
29
|
+
oldAmountToNewAmount(amount: bigint, fee: bigint): bigint;
|
|
30
|
+
newAmountToOldAmount(amount: bigint, fee: bigint): bigint;
|
|
30
31
|
getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<SkyConverterData>>;
|
|
31
32
|
getCalldataGasCost(poolPrices: PoolPrices<SkyConverterData>): number | number[];
|
|
32
33
|
getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: SkyConverterData, side: SwapSide): AdapterExchangeParam;
|