@paraswap/dex-lib 3.8.13-arusd-fxusd.3 → 3.8.13-arusd-fxusd.6
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/dex/concentrator-arusd/concentrator-arusd-event.d.ts +2 -1
- package/build/dex/concentrator-arusd/concentrator-arusd-event.js +16 -2
- package/build/dex/concentrator-arusd/concentrator-arusd-event.js.map +1 -1
- package/build/dex/concentrator-arusd/concentrator-arusd.js +19 -10
- package/build/dex/concentrator-arusd/concentrator-arusd.js.map +1 -1
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.d.ts +3 -2
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.js +27 -15
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.js.map +1 -1
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd.d.ts +2 -2
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js +18 -11
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/concentrator-arusd/concentrator-arusd-event.ts +26 -4
- package/src/dex/concentrator-arusd/concentrator-arusd.ts +26 -11
- package/src/dex/fx-protocol-rusd/fx-protocol-events.test.ts +3 -3
- package/src/dex/fx-protocol-rusd/fx-protocol-rusd-event.ts +41 -13
- package/src/dex/fx-protocol-rusd/fx-protocol-rusd.ts +23 -14
|
@@ -12,5 +12,6 @@ export declare class ConcentratorArusdEvent extends StatefulEventSubscriber<Conc
|
|
|
12
12
|
constructor(parentName: string, dexHelper: IDexHelper, poolAddress: Address, poolInterface: Interface, logger: Logger);
|
|
13
13
|
protected processLog(state: DeepReadonly<ConcentratorArusdState>, log: Readonly<Log>): AsyncOrSync<DeepReadonly<ConcentratorArusdState> | null>;
|
|
14
14
|
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<ConcentratorArusdState>>;
|
|
15
|
-
getPrice(blockNumber: number, ethAmount: bigint, is_deposit: boolean): bigint
|
|
15
|
+
getPrice(blockNumber: number, ethAmount: bigint, is_deposit: boolean): Promise<bigint>;
|
|
16
|
+
getOrGenerateState(blockNumber: number): Promise<DeepReadonly<ConcentratorArusdState> | null>;
|
|
16
17
|
}
|
|
@@ -36,8 +36,8 @@ class ConcentratorArusdEvent extends stateful_event_subscriber_1.StatefulEventSu
|
|
|
36
36
|
const state = await (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.poolAddress, this.poolInterface, blockNumber);
|
|
37
37
|
return state;
|
|
38
38
|
}
|
|
39
|
-
getPrice(blockNumber, ethAmount, is_deposit) {
|
|
40
|
-
const state = this.
|
|
39
|
+
async getPrice(blockNumber, ethAmount, is_deposit) {
|
|
40
|
+
const state = await this.getOrGenerateState(blockNumber);
|
|
41
41
|
if (!state)
|
|
42
42
|
throw new Error('Cannot compute price');
|
|
43
43
|
const { totalSupply, totalAssets } = state;
|
|
@@ -47,6 +47,20 @@ class ConcentratorArusdEvent extends stateful_event_subscriber_1.StatefulEventSu
|
|
|
47
47
|
}
|
|
48
48
|
return BigInt((nav * ethAmount) / bigint_constants_1.BI_POWS[18]);
|
|
49
49
|
}
|
|
50
|
+
async getOrGenerateState(blockNumber) {
|
|
51
|
+
const state = this.getState(blockNumber);
|
|
52
|
+
if (state) {
|
|
53
|
+
return state;
|
|
54
|
+
}
|
|
55
|
+
this.logger.debug(`No state found for ${this.addressesSubscribed[0]}, generating new one`);
|
|
56
|
+
const newState = await this.generateState(blockNumber);
|
|
57
|
+
if (!newState) {
|
|
58
|
+
this.logger.debug(`Could not regenerate state for ${this.addressesSubscribed[0]}`);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
this.setState(newState, blockNumber);
|
|
62
|
+
return newState;
|
|
63
|
+
}
|
|
50
64
|
}
|
|
51
65
|
exports.ConcentratorArusdEvent = ConcentratorArusdEvent;
|
|
52
66
|
//# sourceMappingURL=concentrator-arusd-event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concentrator-arusd-event.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/concentrator-arusd-event.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAGvB,+EAA0E;AAI1E,6DAAiD;
|
|
1
|
+
{"version":3,"file":"concentrator-arusd-event.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/concentrator-arusd-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,11 +101,11 @@ class ConcentratorArusd extends simple_exchange_1.SimpleExchange {
|
|
|
101
101
|
const is_deposit = !!this.is_rUSD(srcToken.address);
|
|
102
102
|
const pool = this.concentratorArusdEvent;
|
|
103
103
|
const unitIn = bigint_constants_1.BI_POWS[18];
|
|
104
|
-
const unitOut = pool.getPrice(blockNumber, unitIn, is_deposit);
|
|
105
|
-
const amountsOut = amounts.map(amountIn => {
|
|
106
|
-
const _newPrice = pool.getPrice(blockNumber, amountIn, is_deposit);
|
|
104
|
+
const unitOut = await pool.getPrice(blockNumber, unitIn, is_deposit);
|
|
105
|
+
const amountsOut = await Promise.all(amounts.map(async (amountIn) => {
|
|
106
|
+
const _newPrice = await pool.getPrice(blockNumber, amountIn, is_deposit);
|
|
107
107
|
return _newPrice;
|
|
108
|
-
});
|
|
108
|
+
}));
|
|
109
109
|
return [
|
|
110
110
|
{
|
|
111
111
|
unit: unitOut,
|
|
@@ -159,16 +159,25 @@ class ConcentratorArusd extends simple_exchange_1.SimpleExchange {
|
|
|
159
159
|
// Returns list of top pools based on liquidity. Max
|
|
160
160
|
// limit number pools should be returned.
|
|
161
161
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
162
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_arUSD(tokenAddress))
|
|
163
|
+
return [];
|
|
162
164
|
return [
|
|
163
165
|
{
|
|
164
166
|
exchange: this.dexKey,
|
|
165
167
|
address: this.config.arUSDAddress,
|
|
166
|
-
connectorTokens:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
connectorTokens: this.is_rUSD(tokenAddress)
|
|
169
|
+
? [
|
|
170
|
+
{
|
|
171
|
+
decimals: 18,
|
|
172
|
+
address: this.config.arUSDAddress,
|
|
173
|
+
},
|
|
174
|
+
]
|
|
175
|
+
: [
|
|
176
|
+
{
|
|
177
|
+
decimals: 18,
|
|
178
|
+
address: this.config.rUSDAddress,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
172
181
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
173
182
|
},
|
|
174
183
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concentrator-arusd.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/concentrator-arusd.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"concentrator-arusd.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/concentrator-arusd.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
|
4
4
|
import { Address, Log, Logger } from '../../types';
|
|
5
5
|
import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
6
6
|
import { FxProtocolPoolState } from './types';
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class FxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolState> {
|
|
8
8
|
protected dexHelper: IDexHelper;
|
|
9
9
|
private marketAddress;
|
|
10
10
|
private marketInterface;
|
|
@@ -13,5 +13,6 @@ export declare class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProto
|
|
|
13
13
|
constructor(parentName: string, dexHelper: IDexHelper, marketAddress: Address, marketInterface: Interface, weETHOracleAddress: Address, weETHOracleIface: Interface, logger: Logger);
|
|
14
14
|
protected processLog(state: DeepReadonly<FxProtocolPoolState>, log: Readonly<Log>): AsyncOrSync<DeepReadonly<FxProtocolPoolState> | null>;
|
|
15
15
|
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<FxProtocolPoolState>>;
|
|
16
|
-
getPrice(blockNumber: number, amount: bigint, isRedeem: boolean): bigint
|
|
16
|
+
getPrice(blockNumber: number, amount: bigint, isRedeem: boolean): Promise<bigint>;
|
|
17
|
+
getOrGenerateState(blockNumber: number): Promise<DeepReadonly<FxProtocolPoolState> | null>;
|
|
17
18
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FxProtocolRusdEvent = void 0;
|
|
4
|
+
const abi_1 = require("@ethersproject/abi");
|
|
4
5
|
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
5
6
|
const bigint_constants_1 = require("../../bigint-constants");
|
|
6
7
|
const utils_1 = require("./utils");
|
|
7
8
|
const ANSWER_UPDATED_TOPICHASH = `0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f`;
|
|
8
9
|
const UPDATE_REDEEM_FEE_TOPICHASH = `0xb3d49e95905d108ea668ffe62a85ee16bdc4ff9f122a7137964327ea8e0585ff`;
|
|
9
|
-
class
|
|
10
|
+
class FxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
10
11
|
constructor(parentName, dexHelper, marketAddress, marketInterface, weETHOracleAddress, weETHOracleIface, logger) {
|
|
11
12
|
super(parentName, 'fxProtocolRusd', dexHelper, logger);
|
|
12
13
|
this.dexHelper = dexHelper;
|
|
@@ -17,16 +18,13 @@ class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubsc
|
|
|
17
18
|
this.addressesSubscribed = [marketAddress, weETHOracleAddress];
|
|
18
19
|
}
|
|
19
20
|
processLog(state, log) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// redeemFee: BigInt(defaultFeeRatio).toString(),
|
|
28
|
-
// };
|
|
29
|
-
// }
|
|
21
|
+
if (log.topics[0] === UPDATE_REDEEM_FEE_TOPICHASH) {
|
|
22
|
+
const [defaultFeeRatio] = abi_1.defaultAbiCoder.decode(['uint256', 'int256'], log.data);
|
|
23
|
+
return {
|
|
24
|
+
...state,
|
|
25
|
+
redeemFee: BigInt(defaultFeeRatio).toString(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
30
28
|
if (log.topics[0] === ANSWER_UPDATED_TOPICHASH) {
|
|
31
29
|
return {
|
|
32
30
|
...state,
|
|
@@ -39,8 +37,8 @@ class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubsc
|
|
|
39
37
|
const state = await (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.marketAddress, this.marketInterface, this.weETHOracleAddress, this.weETHOracleIface, blockNumber);
|
|
40
38
|
return state;
|
|
41
39
|
}
|
|
42
|
-
getPrice(blockNumber, amount, isRedeem) {
|
|
43
|
-
const state = this.
|
|
40
|
+
async getPrice(blockNumber, amount, isRedeem) {
|
|
41
|
+
const state = await this.getOrGenerateState(blockNumber);
|
|
44
42
|
if (!state)
|
|
45
43
|
throw new Error('Cannot compute price');
|
|
46
44
|
const { nav, redeemFee, weETHPrice } = state;
|
|
@@ -54,6 +52,20 @@ class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubsc
|
|
|
54
52
|
return BigInt((baseTokenPrice * amount) / BigInt(nav));
|
|
55
53
|
}
|
|
56
54
|
}
|
|
55
|
+
async getOrGenerateState(blockNumber) {
|
|
56
|
+
const state = this.getState(blockNumber);
|
|
57
|
+
if (state) {
|
|
58
|
+
return state;
|
|
59
|
+
}
|
|
60
|
+
this.logger.debug(`No state found for ${this.addressesSubscribed[0]}, generating new one`);
|
|
61
|
+
const newState = await this.generateState(blockNumber);
|
|
62
|
+
if (!newState) {
|
|
63
|
+
this.logger.debug(`Could not regenerate state for ${this.addressesSubscribed[0]}`);
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
this.setState(newState, blockNumber);
|
|
67
|
+
return newState;
|
|
68
|
+
}
|
|
57
69
|
}
|
|
58
|
-
exports.
|
|
70
|
+
exports.FxProtocolRusdEvent = FxProtocolRusdEvent;
|
|
59
71
|
//# sourceMappingURL=fx-protocol-rusd-event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx-protocol-rusd-event.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/fx-protocol-rusd-event.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"fx-protocol-rusd-event.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/fx-protocol-rusd-event.ts"],"names":[],"mappings":";;;AACA,4CAAgE;AAEhE,+EAA0E;AAI1E,6DAAiD;AACjD,mCAA0C;AAE1C,MAAM,wBAAwB,GAAG,oEAAoE,CAAC;AACtG,MAAM,2BAA2B,GAAG,oEAAoE,CAAC;AAEzG,MAAa,mBAAoB,SAAQ,mDAA4C;IACnF,YACE,UAAkB,EACR,SAAqB,EACvB,aAAsB,EACtB,eAA0B,EAC1B,kBAA2B,EAC3B,gBAA2B,EACnC,MAAc;QAEd,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAP7C,cAAS,GAAT,SAAS,CAAY;QACvB,kBAAa,GAAb,aAAa,CAAS;QACtB,oBAAe,GAAf,eAAe,CAAW;QAC1B,uBAAkB,GAAlB,kBAAkB,CAAS;QAC3B,qBAAgB,GAAhB,gBAAgB,CAAW;QAInC,IAAI,CAAC,mBAAmB,GAAG,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACjE,CAAC;IAES,UAAU,CAClB,KAAwC,EACxC,GAAkB;QAElB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,2BAA2B,EAAE;YACjD,MAAM,CAAC,eAAe,CAAC,GAAG,qBAAe,CAAC,MAAM,CAC9C,CAAC,SAAS,EAAE,QAAQ,CAAC,EACrB,GAAG,CAAC,IAAI,CACT,CAAC;YAEF,OAAO;gBACL,GAAG,KAAK;gBACR,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;aAC9C,CAAC;SACH;QAED,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,wBAAwB,EAAE;YAC9C,OAAO;gBACL,GAAG,KAAK;gBACR,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7C,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,cAAiC,QAAQ;QAEzC,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAe,EACjC,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,WAAW,CACZ,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,WAAmB,EACnB,MAAc,EACd,QAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEpD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;QAExD,IAAI,QAAQ,EAAE;YACZ,OAAO,MAAM,CACX,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,0BAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,0BAAO,CAAC,EAAE,CAAC;gBACX,cAAc,CACjB,CAAC;SACH;aAAM;YACL,OAAO,MAAM,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACxD;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sBAAsB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CACxE,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kCAAkC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC;YACF,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAlGD,kDAkGC"}
|
|
@@ -5,7 +5,7 @@ import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
|
5
5
|
import { DexParams, FxProtocolData } from './types';
|
|
6
6
|
import { SimpleExchange } from '../simple-exchange';
|
|
7
7
|
import { Interface } from '@ethersproject/abi';
|
|
8
|
-
import {
|
|
8
|
+
import { FxProtocolRusdEvent } from './fx-protocol-rusd-event';
|
|
9
9
|
export declare class FxProtocolRusd extends SimpleExchange implements IDex<FxProtocolData> {
|
|
10
10
|
readonly network: Network;
|
|
11
11
|
readonly dexKey: string;
|
|
@@ -21,7 +21,7 @@ export declare class FxProtocolRusd extends SimpleExchange implements IDex<FxPro
|
|
|
21
21
|
fxUSDIface: Interface;
|
|
22
22
|
rUSDMarketIface: Interface;
|
|
23
23
|
weETHOracleIface: Interface;
|
|
24
|
-
fxProtocolRusdPool:
|
|
24
|
+
fxProtocolRusdPool: FxProtocolRusdEvent;
|
|
25
25
|
logger: Logger;
|
|
26
26
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
|
|
27
27
|
initializePricing(blockNumber: number): Promise<void>;
|
|
@@ -59,7 +59,7 @@ class FxProtocolRusd extends simple_exchange_1.SimpleExchange {
|
|
|
59
59
|
weETHOracleAddress: config.weETHOracleAddress.toLowerCase(),
|
|
60
60
|
};
|
|
61
61
|
this.logger = dexHelper.getLogger(dexKey);
|
|
62
|
-
this.fxProtocolRusdPool = new fx_protocol_rusd_event_1.
|
|
62
|
+
this.fxProtocolRusdPool = new fx_protocol_rusd_event_1.FxProtocolRusdEvent(this.dexKey, dexHelper, this.config.rUSDWeETHMarketAddress, this.rUSDMarketIface, this.config.weETHOracleAddress, this.weETHOracleIface, this.logger);
|
|
63
63
|
}
|
|
64
64
|
async initializePricing(blockNumber) {
|
|
65
65
|
const data = await this.dexHelper.multiContract.methods
|
|
@@ -120,12 +120,10 @@ class FxProtocolRusd extends simple_exchange_1.SimpleExchange {
|
|
|
120
120
|
return null;
|
|
121
121
|
}
|
|
122
122
|
const pool = this.fxProtocolRusdPool;
|
|
123
|
-
if (!pool.getState(blockNumber))
|
|
124
|
-
return null;
|
|
125
123
|
const is_redeem = this.is_weETH(destToken.address);
|
|
126
124
|
const unitIn = bigint_constants_1.BI_POWS[18];
|
|
127
|
-
const unitOut = pool.getPrice(blockNumber, unitIn, is_redeem);
|
|
128
|
-
const amountsOut = amounts.map(_amountIn => pool.getPrice(blockNumber, _amountIn, is_redeem));
|
|
125
|
+
const unitOut = await pool.getPrice(blockNumber, unitIn, is_redeem);
|
|
126
|
+
const amountsOut = await Promise.all(amounts.map(_amountIn => pool.getPrice(blockNumber, _amountIn, is_redeem)));
|
|
129
127
|
return [
|
|
130
128
|
{
|
|
131
129
|
unit: unitOut,
|
|
@@ -193,16 +191,25 @@ class FxProtocolRusd extends simple_exchange_1.SimpleExchange {
|
|
|
193
191
|
// Returns list of top pools based on liquidity. Max
|
|
194
192
|
// limit number pools should be returned.
|
|
195
193
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
194
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_weETH(tokenAddress))
|
|
195
|
+
return [];
|
|
196
196
|
return [
|
|
197
197
|
{
|
|
198
198
|
exchange: this.dexKey,
|
|
199
199
|
address: this.config.rUSDAddress,
|
|
200
|
-
connectorTokens:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
200
|
+
connectorTokens: this.is_weETH(tokenAddress)
|
|
201
|
+
? [
|
|
202
|
+
{
|
|
203
|
+
decimals: 18,
|
|
204
|
+
address: this.config.rUSDAddress,
|
|
205
|
+
},
|
|
206
|
+
]
|
|
207
|
+
: [
|
|
208
|
+
{
|
|
209
|
+
decimals: 18,
|
|
210
|
+
address: this.config.weETHAddress,
|
|
211
|
+
},
|
|
212
|
+
],
|
|
206
213
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
207
214
|
},
|
|
208
215
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx-protocol-rusd.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/fx-protocol-rusd.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fx-protocol-rusd.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/fx-protocol-rusd.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,6 @@ import { Address, Log, Logger } from '../../types';
|
|
|
6
6
|
import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
7
7
|
import { ConcentratorArusdState } from './types';
|
|
8
8
|
import { BI_POWS } from '../../bigint-constants';
|
|
9
|
-
import { bigIntify } from '../../utils';
|
|
10
9
|
import { getOnChainState } from './utils';
|
|
11
10
|
|
|
12
11
|
export class ConcentratorArusdEvent extends StatefulEventSubscriber<ConcentratorArusdState> {
|
|
@@ -61,12 +60,12 @@ export class ConcentratorArusdEvent extends StatefulEventSubscriber<Concentrator
|
|
|
61
60
|
return state;
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
getPrice(
|
|
63
|
+
async getPrice(
|
|
65
64
|
blockNumber: number,
|
|
66
65
|
ethAmount: bigint,
|
|
67
66
|
is_deposit: boolean,
|
|
68
|
-
): bigint {
|
|
69
|
-
const state = this.
|
|
67
|
+
): Promise<bigint> {
|
|
68
|
+
const state = await this.getOrGenerateState(blockNumber);
|
|
70
69
|
if (!state) throw new Error('Cannot compute price');
|
|
71
70
|
const { totalSupply, totalAssets } = state;
|
|
72
71
|
const nav = (BigInt(totalAssets) * BI_POWS[18]) / BigInt(totalSupply);
|
|
@@ -75,4 +74,27 @@ export class ConcentratorArusdEvent extends StatefulEventSubscriber<Concentrator
|
|
|
75
74
|
}
|
|
76
75
|
return BigInt((nav * ethAmount) / BI_POWS[18]);
|
|
77
76
|
}
|
|
77
|
+
|
|
78
|
+
async getOrGenerateState(
|
|
79
|
+
blockNumber: number,
|
|
80
|
+
): Promise<DeepReadonly<ConcentratorArusdState> | null> {
|
|
81
|
+
const state = this.getState(blockNumber);
|
|
82
|
+
if (state) {
|
|
83
|
+
return state;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this.logger.debug(
|
|
87
|
+
`No state found for ${this.addressesSubscribed[0]}, generating new one`,
|
|
88
|
+
);
|
|
89
|
+
const newState = await this.generateState(blockNumber);
|
|
90
|
+
|
|
91
|
+
if (!newState) {
|
|
92
|
+
this.logger.debug(
|
|
93
|
+
`Could not regenerate state for ${this.addressesSubscribed[0]}`,
|
|
94
|
+
);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
this.setState(newState, blockNumber);
|
|
98
|
+
return newState;
|
|
99
|
+
}
|
|
78
100
|
}
|
|
@@ -138,11 +138,17 @@ export class ConcentratorArusd
|
|
|
138
138
|
const is_deposit = !!this.is_rUSD(srcToken.address);
|
|
139
139
|
const pool = this.concentratorArusdEvent;
|
|
140
140
|
const unitIn = BI_POWS[18];
|
|
141
|
-
const unitOut = pool.getPrice(blockNumber, unitIn, is_deposit);
|
|
142
|
-
const amountsOut =
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
141
|
+
const unitOut = await pool.getPrice(blockNumber, unitIn, is_deposit);
|
|
142
|
+
const amountsOut = await Promise.all(
|
|
143
|
+
amounts.map(async amountIn => {
|
|
144
|
+
const _newPrice = await pool.getPrice(
|
|
145
|
+
blockNumber,
|
|
146
|
+
amountIn,
|
|
147
|
+
is_deposit,
|
|
148
|
+
);
|
|
149
|
+
return _newPrice;
|
|
150
|
+
}),
|
|
151
|
+
);
|
|
146
152
|
return [
|
|
147
153
|
{
|
|
148
154
|
unit: unitOut,
|
|
@@ -238,16 +244,25 @@ export class ConcentratorArusd
|
|
|
238
244
|
tokenAddress: Address,
|
|
239
245
|
limit: number,
|
|
240
246
|
): Promise<PoolLiquidity[]> {
|
|
247
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_arUSD(tokenAddress)) return [];
|
|
248
|
+
|
|
241
249
|
return [
|
|
242
250
|
{
|
|
243
251
|
exchange: this.dexKey,
|
|
244
252
|
address: this.config.arUSDAddress,
|
|
245
|
-
connectorTokens:
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
253
|
+
connectorTokens: this.is_rUSD(tokenAddress)
|
|
254
|
+
? [
|
|
255
|
+
{
|
|
256
|
+
decimals: 18,
|
|
257
|
+
address: this.config.arUSDAddress,
|
|
258
|
+
},
|
|
259
|
+
]
|
|
260
|
+
: [
|
|
261
|
+
{
|
|
262
|
+
decimals: 18,
|
|
263
|
+
address: this.config.rUSDAddress,
|
|
264
|
+
},
|
|
265
|
+
],
|
|
251
266
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
252
267
|
},
|
|
253
268
|
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import dotenv from 'dotenv';
|
|
2
2
|
dotenv.config();
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { FxProtocolRusdEvent } from './fx-protocol-rusd-event';
|
|
5
5
|
import { FxProtocolConfig } from './config';
|
|
6
6
|
import { Network } from '../../constants';
|
|
7
7
|
import { DummyDexHelper } from '../../dex-helper/index';
|
|
@@ -53,7 +53,7 @@ const dexKey = 'FxProtocolRusd';
|
|
|
53
53
|
const network = Network.MAINNET;
|
|
54
54
|
|
|
55
55
|
async function fetchPoolState(
|
|
56
|
-
fxProtocolPool:
|
|
56
|
+
fxProtocolPool: FxProtocolRusdEvent,
|
|
57
57
|
blockNumber: number,
|
|
58
58
|
): Promise<FxProtocolPoolState> {
|
|
59
59
|
return fxProtocolPool.generateState(blockNumber);
|
|
@@ -73,7 +73,7 @@ describe('FxProtocolRusd Event', function () {
|
|
|
73
73
|
const logger = dexHelper.getLogger(dexKey);
|
|
74
74
|
const config = FxProtocolConfig[dexKey][network];
|
|
75
75
|
|
|
76
|
-
const fxProtocolPool = new
|
|
76
|
+
const fxProtocolPool = new FxProtocolRusdEvent(
|
|
77
77
|
dexKey,
|
|
78
78
|
dexHelper,
|
|
79
79
|
config.rUSDWeETHMarketAddress,
|
|
@@ -11,7 +11,7 @@ import { getOnChainState } from './utils';
|
|
|
11
11
|
const ANSWER_UPDATED_TOPICHASH = `0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f`;
|
|
12
12
|
const UPDATE_REDEEM_FEE_TOPICHASH = `0xb3d49e95905d108ea668ffe62a85ee16bdc4ff9f122a7137964327ea8e0585ff`;
|
|
13
13
|
|
|
14
|
-
export class
|
|
14
|
+
export class FxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolState> {
|
|
15
15
|
constructor(
|
|
16
16
|
parentName: string,
|
|
17
17
|
protected dexHelper: IDexHelper,
|
|
@@ -29,17 +29,17 @@ export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolS
|
|
|
29
29
|
state: DeepReadonly<FxProtocolPoolState>,
|
|
30
30
|
log: Readonly<Log>,
|
|
31
31
|
): AsyncOrSync<DeepReadonly<FxProtocolPoolState> | null> {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
if (log.topics[0] === UPDATE_REDEEM_FEE_TOPICHASH) {
|
|
33
|
+
const [defaultFeeRatio] = defaultAbiCoder.decode(
|
|
34
|
+
['uint256', 'int256'],
|
|
35
|
+
log.data,
|
|
36
|
+
);
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
return {
|
|
39
|
+
...state,
|
|
40
|
+
redeemFee: BigInt(defaultFeeRatio).toString(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
43
|
|
|
44
44
|
if (log.topics[0] === ANSWER_UPDATED_TOPICHASH) {
|
|
45
45
|
return {
|
|
@@ -47,6 +47,7 @@ export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolS
|
|
|
47
47
|
weETHPrice: BigInt(log.topics[1]).toString(),
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
|
|
50
51
|
return null;
|
|
51
52
|
}
|
|
52
53
|
|
|
@@ -64,8 +65,12 @@ export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolS
|
|
|
64
65
|
return state;
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
getPrice(
|
|
68
|
-
|
|
68
|
+
async getPrice(
|
|
69
|
+
blockNumber: number,
|
|
70
|
+
amount: bigint,
|
|
71
|
+
isRedeem: boolean,
|
|
72
|
+
): Promise<bigint> {
|
|
73
|
+
const state = await this.getOrGenerateState(blockNumber);
|
|
69
74
|
if (!state) throw new Error('Cannot compute price');
|
|
70
75
|
|
|
71
76
|
const { nav, redeemFee, weETHPrice } = state;
|
|
@@ -81,4 +86,27 @@ export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolS
|
|
|
81
86
|
return BigInt((baseTokenPrice * amount) / BigInt(nav));
|
|
82
87
|
}
|
|
83
88
|
}
|
|
89
|
+
|
|
90
|
+
async getOrGenerateState(
|
|
91
|
+
blockNumber: number,
|
|
92
|
+
): Promise<DeepReadonly<FxProtocolPoolState> | null> {
|
|
93
|
+
const state = this.getState(blockNumber);
|
|
94
|
+
if (state) {
|
|
95
|
+
return state;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
this.logger.debug(
|
|
99
|
+
`No state found for ${this.addressesSubscribed[0]}, generating new one`,
|
|
100
|
+
);
|
|
101
|
+
const newState = await this.generateState(blockNumber);
|
|
102
|
+
|
|
103
|
+
if (!newState) {
|
|
104
|
+
this.logger.debug(
|
|
105
|
+
`Could not regenerate state for ${this.addressesSubscribed[0]}`,
|
|
106
|
+
);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
this.setState(newState, blockNumber);
|
|
110
|
+
return newState;
|
|
111
|
+
}
|
|
84
112
|
}
|
|
@@ -23,7 +23,7 @@ import FxMarket_ABI from '../../abi/fx-protocol/FxMarket.json';
|
|
|
23
23
|
import EthWeETHOralce_ABI from '../../abi/fx-protocol/weETHOralce.json';
|
|
24
24
|
|
|
25
25
|
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
26
|
-
import {
|
|
26
|
+
import { FxProtocolRusdEvent } from './fx-protocol-rusd-event';
|
|
27
27
|
import { BI_POWS } from '../../bigint-constants';
|
|
28
28
|
|
|
29
29
|
export class FxProtocolRusd
|
|
@@ -44,7 +44,7 @@ export class FxProtocolRusd
|
|
|
44
44
|
fxUSDIface: Interface;
|
|
45
45
|
rUSDMarketIface: Interface;
|
|
46
46
|
weETHOracleIface: Interface;
|
|
47
|
-
fxProtocolRusdPool:
|
|
47
|
+
fxProtocolRusdPool: FxProtocolRusdEvent;
|
|
48
48
|
logger: Logger;
|
|
49
49
|
|
|
50
50
|
constructor(
|
|
@@ -64,7 +64,7 @@ export class FxProtocolRusd
|
|
|
64
64
|
weETHOracleAddress: config.weETHOracleAddress.toLowerCase(),
|
|
65
65
|
};
|
|
66
66
|
this.logger = dexHelper.getLogger(dexKey);
|
|
67
|
-
this.fxProtocolRusdPool = new
|
|
67
|
+
this.fxProtocolRusdPool = new FxProtocolRusdEvent(
|
|
68
68
|
this.dexKey,
|
|
69
69
|
dexHelper,
|
|
70
70
|
this.config.rUSDWeETHMarketAddress,
|
|
@@ -178,13 +178,13 @@ export class FxProtocolRusd
|
|
|
178
178
|
return null;
|
|
179
179
|
}
|
|
180
180
|
const pool = this.fxProtocolRusdPool;
|
|
181
|
-
if (!pool.getState(blockNumber)) return null;
|
|
182
|
-
|
|
183
181
|
const is_redeem = this.is_weETH(destToken.address);
|
|
184
182
|
const unitIn = BI_POWS[18];
|
|
185
|
-
const unitOut = pool.getPrice(blockNumber, unitIn, is_redeem);
|
|
186
|
-
const amountsOut =
|
|
187
|
-
|
|
183
|
+
const unitOut = await pool.getPrice(blockNumber, unitIn, is_redeem);
|
|
184
|
+
const amountsOut = await Promise.all(
|
|
185
|
+
amounts.map(_amountIn =>
|
|
186
|
+
pool.getPrice(blockNumber, _amountIn, is_redeem),
|
|
187
|
+
),
|
|
188
188
|
);
|
|
189
189
|
|
|
190
190
|
return [
|
|
@@ -288,16 +288,25 @@ export class FxProtocolRusd
|
|
|
288
288
|
tokenAddress: Address,
|
|
289
289
|
limit: number,
|
|
290
290
|
): Promise<PoolLiquidity[]> {
|
|
291
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_weETH(tokenAddress)) return [];
|
|
292
|
+
|
|
291
293
|
return [
|
|
292
294
|
{
|
|
293
295
|
exchange: this.dexKey,
|
|
294
296
|
address: this.config.rUSDAddress,
|
|
295
|
-
connectorTokens:
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
297
|
+
connectorTokens: this.is_weETH(tokenAddress)
|
|
298
|
+
? [
|
|
299
|
+
{
|
|
300
|
+
decimals: 18,
|
|
301
|
+
address: this.config.rUSDAddress,
|
|
302
|
+
},
|
|
303
|
+
]
|
|
304
|
+
: [
|
|
305
|
+
{
|
|
306
|
+
decimals: 18,
|
|
307
|
+
address: this.config.weETHAddress,
|
|
308
|
+
},
|
|
309
|
+
],
|
|
301
310
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
302
311
|
},
|
|
303
312
|
];
|