@paraswap/dex-lib 3.8.13-arusd-fxusd.2 → 3.8.13-arusd-fxusd.5
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.js +6 -7
- package/build/dex/concentrator-arusd/concentrator-arusd-event.js.map +1 -1
- package/build/dex/concentrator-arusd/concentrator-arusd.d.ts +2 -2
- package/build/dex/concentrator-arusd/concentrator-arusd.js +16 -7
- package/build/dex/concentrator-arusd/concentrator-arusd.js.map +1 -1
- package/build/dex/concentrator-arusd/config.d.ts +1 -2
- package/build/dex/concentrator-arusd/config.js +1 -5
- package/build/dex/concentrator-arusd/config.js.map +1 -1
- package/build/dex/concentrator-arusd/types.d.ts +3 -3
- package/build/dex/concentrator-arusd/utils.js +2 -2
- package/build/dex/concentrator-arusd/utils.js.map +1 -1
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.d.ts +0 -1
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.js +23 -27
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.js.map +1 -1
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js +18 -9
- package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js.map +1 -1
- package/build/dex/fx-protocol-rusd/types.d.ts +3 -3
- package/build/dex/fx-protocol-rusd/utils.js +3 -3
- package/build/dex/fx-protocol-rusd/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/concentrator-arusd/concentrator-arusd-event.ts +12 -4
- package/src/dex/concentrator-arusd/concentrator-arusd.ts +17 -8
- package/src/dex/concentrator-arusd/config.ts +0 -5
- package/src/dex/concentrator-arusd/types.ts +3 -3
- package/src/dex/concentrator-arusd/utils.ts +2 -2
- package/src/dex/fx-protocol-rusd/fx-protocol-rusd-event.ts +25 -21
- package/src/dex/fx-protocol-rusd/fx-protocol-rusd.ts +20 -9
- package/src/dex/fx-protocol-rusd/types.ts +3 -3
- package/src/dex/fx-protocol-rusd/utils.ts +4 -3
|
@@ -7,8 +7,7 @@ exports.ConcentratorArusdEvent = void 0;
|
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
8
|
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
9
9
|
const bigint_constants_1 = require("../../bigint-constants");
|
|
10
|
-
const utils_1 = require("
|
|
11
|
-
const utils_2 = require("./utils");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
12
11
|
class ConcentratorArusdEvent extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
13
12
|
constructor(parentName, dexHelper, poolAddress, poolInterface, logger) {
|
|
14
13
|
super(parentName, 'ConcentratorArusd', dexHelper, logger);
|
|
@@ -22,19 +21,19 @@ class ConcentratorArusdEvent extends stateful_event_subscriber_1.StatefulEventSu
|
|
|
22
21
|
const event = this.decoder(log);
|
|
23
22
|
const _state = lodash_1.default.cloneDeep(state);
|
|
24
23
|
if (event.name === 'Deposit') {
|
|
25
|
-
_state.totalSupply
|
|
26
|
-
_state.totalAssets
|
|
24
|
+
_state.totalSupply = (BigInt(_state.totalSupply) + BigInt(event.args.amountSyOut)).toString();
|
|
25
|
+
_state.totalAssets = (BigInt(_state.totalAssets) + BigInt(event.args.amountDeposited)).toString();
|
|
27
26
|
return _state;
|
|
28
27
|
}
|
|
29
28
|
else if (event.name === 'Redeem') {
|
|
30
|
-
_state.totalSupply
|
|
31
|
-
_state.totalAssets
|
|
29
|
+
_state.totalSupply = (BigInt(_state.totalSupply) - BigInt(event.args.amountSyToRedeem)).toString();
|
|
30
|
+
_state.totalAssets = (BigInt(_state.totalAssets) - BigInt(event.args.amountTokenOut)).toString();
|
|
32
31
|
return _state;
|
|
33
32
|
}
|
|
34
33
|
return null;
|
|
35
34
|
}
|
|
36
35
|
async generateState(blockNumber = 'latest') {
|
|
37
|
-
const state = await (0,
|
|
36
|
+
const state = await (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.poolAddress, this.poolInterface, blockNumber);
|
|
38
37
|
return state;
|
|
39
38
|
}
|
|
40
39
|
getPrice(blockNumber, ethAmount, is_deposit) {
|
|
@@ -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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"}
|
|
@@ -10,7 +10,7 @@ export declare class ConcentratorArusd extends SimpleExchange implements IDex<Co
|
|
|
10
10
|
readonly network: Network;
|
|
11
11
|
readonly dexKey: string;
|
|
12
12
|
readonly dexHelper: IDexHelper;
|
|
13
|
-
protected adapters:
|
|
13
|
+
protected adapters: {};
|
|
14
14
|
static readonly arUSDIface: Interface;
|
|
15
15
|
protected config: DexParams;
|
|
16
16
|
readonly hasConstantPriceLargeAmounts = true;
|
|
@@ -23,7 +23,7 @@ export declare class ConcentratorArusd extends SimpleExchange implements IDex<Co
|
|
|
23
23
|
arUSD5115Iface: Interface;
|
|
24
24
|
concentratorArusdEvent: ConcentratorArusdEvent;
|
|
25
25
|
logger: Logger;
|
|
26
|
-
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?:
|
|
26
|
+
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: {});
|
|
27
27
|
initializePricing(blockNumber: number): Promise<void>;
|
|
28
28
|
is_arUSD(token: string): boolean;
|
|
29
29
|
is_rUSD(token: string): boolean;
|
|
@@ -40,7 +40,7 @@ const bigint_constants_1 = require("../../bigint-constants");
|
|
|
40
40
|
const concentrator_arusd_event_1 = require("./concentrator-arusd-event");
|
|
41
41
|
const utils_3 = require("./utils");
|
|
42
42
|
class ConcentratorArusd extends simple_exchange_1.SimpleExchange {
|
|
43
|
-
constructor(network, dexKey, dexHelper, adapters =
|
|
43
|
+
constructor(network, dexKey, dexHelper, adapters = {}) {
|
|
44
44
|
super(dexHelper, dexKey);
|
|
45
45
|
this.network = network;
|
|
46
46
|
this.dexKey = dexKey;
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,+CAAoD;AACpD,2EAA6D;AAC7D,uCAAoD;AAIpD,wDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"concentrator-arusd.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/concentrator-arusd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { DexParams } from './types';
|
|
2
|
-
import { DexConfigMap
|
|
2
|
+
import { DexConfigMap } from '../../types';
|
|
3
3
|
export declare const ConcentratorArusdConfig: DexConfigMap<DexParams>;
|
|
4
|
-
export declare const Adapters: Record<number, AdapterMappings>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ConcentratorArusdConfig = void 0;
|
|
4
4
|
const constants_1 = require("../../constants");
|
|
5
5
|
exports.ConcentratorArusdConfig = {
|
|
6
6
|
ConcentratorArusd: {
|
|
@@ -11,8 +11,4 @@ exports.ConcentratorArusdConfig = {
|
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
|
-
exports.Adapters = {
|
|
15
|
-
// This is an example to copy
|
|
16
|
-
[constants_1.Network.MAINNET]: { [constants_1.SwapSide.SELL]: [{ name: 'Adapter02', index: 0 }] },
|
|
17
|
-
};
|
|
18
14
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,uBAAuB,GAA4B;IAC9D,iBAAiB,EAAE;QACjB,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,YAAY,EAAE,4CAA4C;YAC1D,gBAAgB,EAAE,4CAA4C;SAC/D;KACF;CACF,CAAC
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,uBAAuB,GAA4B;IAC9D,iBAAiB,EAAE;QACjB,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,YAAY,EAAE,4CAA4C;YAC1D,gBAAgB,EAAE,4CAA4C;SAC/D;KACF;CACF,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Address } from '../../types';
|
|
2
2
|
export declare type ConcentratorArusdState = {
|
|
3
|
-
totalSupply:
|
|
4
|
-
totalAssets:
|
|
3
|
+
totalSupply: string;
|
|
4
|
+
totalAssets: string;
|
|
5
5
|
};
|
|
6
6
|
export declare type ConcentratorArusdNavState = {
|
|
7
|
-
nav:
|
|
7
|
+
nav: string;
|
|
8
8
|
};
|
|
9
9
|
export declare type ConcentratorArusdData = {};
|
|
10
10
|
export declare type DexParams = {
|
|
@@ -16,8 +16,8 @@ async function getOnChainState(multiContract, poolAddress, poolInterface, blockN
|
|
|
16
16
|
},
|
|
17
17
|
])
|
|
18
18
|
.call({}, blockNumber);
|
|
19
|
-
const totalSupply = BigInt(poolInterface.decodeFunctionResult('totalSupply', data.returnData[0])[0]);
|
|
20
|
-
const totalAssets = BigInt(poolInterface.decodeFunctionResult('getTotalAssets', data.returnData[1])[0]);
|
|
19
|
+
const totalSupply = BigInt(poolInterface.decodeFunctionResult('totalSupply', data.returnData[0])[0]).toString();
|
|
20
|
+
const totalAssets = BigInt(poolInterface.decodeFunctionResult('getTotalAssets', data.returnData[1])[0]).toString();
|
|
21
21
|
return {
|
|
22
22
|
totalSupply,
|
|
23
23
|
totalAssets,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/utils.ts"],"names":[],"mappings":";;;AAEA,4CAAyD;AAEzD,MAAM,KAAK,GAAG,IAAI,cAAQ,EAAE,CAAC;AAEtB,KAAK,UAAU,eAAe,CACnC,aAAuB,EACvB,WAAmB,EACnB,aAAwB,EACxB,WAA8B;IAE9B,MAAM,IAAI,GAA0B,MAAM,aAAa,CAAC,OAAO;SAC5D,SAAS,CAAC;QACT;YACE,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,CAAC;SAC9D;QACD;YACE,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,CAAC;SACjE;KACF,CAAC;SACD,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,CACxB,aAAa,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/concentrator-arusd/utils.ts"],"names":[],"mappings":";;;AAEA,4CAAyD;AAEzD,MAAM,KAAK,GAAG,IAAI,cAAQ,EAAE,CAAC;AAEtB,KAAK,UAAU,eAAe,CACnC,aAAuB,EACvB,WAAmB,EACnB,aAAwB,EACxB,WAA8B;IAE9B,MAAM,IAAI,GAA0B,MAAM,aAAa,CAAC,OAAO;SAC5D,SAAS,CAAC;QACT;YACE,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,CAAC;SAC9D;QACD;YACE,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,CAAC;SACjE;KACF,CAAC;SACD,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,CACxB,aAAa,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,WAAW,GAAG,MAAM,CACxB,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO;QACL,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC;AA7BD,0CA6BC"}
|
|
@@ -10,7 +10,6 @@ export declare class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProto
|
|
|
10
10
|
private marketInterface;
|
|
11
11
|
private weETHOracleAddress;
|
|
12
12
|
private weETHOracleIface;
|
|
13
|
-
decoder: (log: Log) => import("@ethersproject/abi").LogDescription;
|
|
14
13
|
constructor(parentName: string, dexHelper: IDexHelper, marketAddress: Address, marketInterface: Interface, weETHOracleAddress: Address, weETHOracleIface: Interface, logger: Logger);
|
|
15
14
|
protected processLog(state: DeepReadonly<FxProtocolPoolState>, log: Readonly<Log>): AsyncOrSync<DeepReadonly<FxProtocolPoolState> | null>;
|
|
16
15
|
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<FxProtocolPoolState>>;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fxProtocolRusdEvent = void 0;
|
|
7
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
8
4
|
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
9
5
|
const bigint_constants_1 = require("../../bigint-constants");
|
|
10
|
-
const utils_1 = require("
|
|
11
|
-
const
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const ANSWER_UPDATED_TOPICHASH = `0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f`;
|
|
8
|
+
const UPDATE_REDEEM_FEE_TOPICHASH = `0xb3d49e95905d108ea668ffe62a85ee16bdc4ff9f122a7137964327ea8e0585ff`;
|
|
12
9
|
class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
13
10
|
constructor(parentName, dexHelper, marketAddress, marketInterface, weETHOracleAddress, weETHOracleIface, logger) {
|
|
14
11
|
super(parentName, 'fxProtocolRusd', dexHelper, logger);
|
|
@@ -17,30 +14,29 @@ class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubsc
|
|
|
17
14
|
this.marketInterface = marketInterface;
|
|
18
15
|
this.weETHOracleAddress = weETHOracleAddress;
|
|
19
16
|
this.weETHOracleIface = weETHOracleIface;
|
|
20
|
-
this.decoder = (log) => this.marketInterface.parseLog(log);
|
|
21
17
|
this.addressesSubscribed = [marketAddress, weETHOracleAddress];
|
|
22
18
|
}
|
|
23
19
|
processLog(state, log) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return null;
|
|
20
|
+
// if (log.topics[0] === UPDATE_REDEEM_FEE_TOPICHASH) {
|
|
21
|
+
// const [defaultFeeRatio] = defaultAbiCoder.decode(
|
|
22
|
+
// ['uint256', 'int256'],
|
|
23
|
+
// log.data,
|
|
24
|
+
// );
|
|
25
|
+
// return {
|
|
26
|
+
// ...state,
|
|
27
|
+
// redeemFee: BigInt(defaultFeeRatio).toString(),
|
|
28
|
+
// };
|
|
29
|
+
// }
|
|
30
|
+
if (log.topics[0] === ANSWER_UPDATED_TOPICHASH) {
|
|
31
|
+
return {
|
|
32
|
+
...state,
|
|
33
|
+
weETHPrice: BigInt(log.topics[1]).toString(),
|
|
34
|
+
};
|
|
40
35
|
}
|
|
36
|
+
return null;
|
|
41
37
|
}
|
|
42
38
|
async generateState(blockNumber = 'latest') {
|
|
43
|
-
const state = await (0,
|
|
39
|
+
const state = await (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.marketAddress, this.marketInterface, this.weETHOracleAddress, this.weETHOracleIface, blockNumber);
|
|
44
40
|
return state;
|
|
45
41
|
}
|
|
46
42
|
getPrice(blockNumber, amount, isRedeem) {
|
|
@@ -48,14 +44,14 @@ class fxProtocolRusdEvent extends stateful_event_subscriber_1.StatefulEventSubsc
|
|
|
48
44
|
if (!state)
|
|
49
45
|
throw new Error('Cannot compute price');
|
|
50
46
|
const { nav, redeemFee, weETHPrice } = state;
|
|
51
|
-
const baseTokenPrice = BigInt(weETHPrice * bigint_constants_1.BI_POWS[10]
|
|
47
|
+
const baseTokenPrice = BigInt(weETHPrice) * bigint_constants_1.BI_POWS[10];
|
|
52
48
|
if (isRedeem) {
|
|
53
|
-
return BigInt((amount * nav * (bigint_constants_1.BI_POWS[18] - redeemFee)) /
|
|
49
|
+
return BigInt((amount * BigInt(nav) * (bigint_constants_1.BI_POWS[18] - BigInt(redeemFee))) /
|
|
54
50
|
bigint_constants_1.BI_POWS[18] /
|
|
55
51
|
baseTokenPrice);
|
|
56
52
|
}
|
|
57
53
|
else {
|
|
58
|
-
return BigInt((baseTokenPrice * amount) / nav);
|
|
54
|
+
return BigInt((baseTokenPrice * amount) / BigInt(nav));
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
}
|
|
@@ -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":";;;AAGA,+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,uDAAuD;QACvD,sDAAsD;QACtD,6BAA6B;QAC7B,gBAAgB;QAChB,OAAO;QAEP,aAAa;QACb,gBAAgB;QAChB,qDAAqD;QACrD,OAAO;QACP,IAAI;QAEJ,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;QACD,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,QAAQ,CAAC,WAAmB,EAAE,MAAc,EAAE,QAAiB;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzC,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;CACF;AAtED,kDAsEC"}
|
|
@@ -74,12 +74,12 @@ class FxProtocolRusd extends simple_exchange_1.SimpleExchange {
|
|
|
74
74
|
},
|
|
75
75
|
])
|
|
76
76
|
.call({}, blockNumber);
|
|
77
|
-
const redeemFee = BigInt(this.rUSDMarketIface.decodeFunctionResult('fTokenRedeemFeeRatio', data.returnData[0])[0]);
|
|
78
|
-
const weETHPrice = BigInt(this.weETHOracleIface.decodeFunctionResult('latestAnswer', data.returnData[1])[0]);
|
|
77
|
+
const redeemFee = BigInt(this.rUSDMarketIface.decodeFunctionResult('fTokenRedeemFeeRatio', data.returnData[0])[0]).toString();
|
|
78
|
+
const weETHPrice = BigInt(this.weETHOracleIface.decodeFunctionResult('latestAnswer', data.returnData[1])[0]).toString();
|
|
79
79
|
await Promise.all([
|
|
80
80
|
this.fxProtocolRusdPool.initialize(blockNumber, {
|
|
81
81
|
state: {
|
|
82
|
-
nav:
|
|
82
|
+
nav: '1000000000000000000',
|
|
83
83
|
redeemFee,
|
|
84
84
|
weETHPrice,
|
|
85
85
|
},
|
|
@@ -193,16 +193,25 @@ class FxProtocolRusd extends simple_exchange_1.SimpleExchange {
|
|
|
193
193
|
// Returns list of top pools based on liquidity. Max
|
|
194
194
|
// limit number pools should be returned.
|
|
195
195
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
196
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_weETH(tokenAddress))
|
|
197
|
+
return [];
|
|
196
198
|
return [
|
|
197
199
|
{
|
|
198
200
|
exchange: this.dexKey,
|
|
199
201
|
address: this.config.rUSDAddress,
|
|
200
|
-
connectorTokens:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
202
|
+
connectorTokens: this.is_weETH(tokenAddress)
|
|
203
|
+
? [
|
|
204
|
+
{
|
|
205
|
+
decimals: 18,
|
|
206
|
+
address: this.config.rUSDAddress,
|
|
207
|
+
},
|
|
208
|
+
]
|
|
209
|
+
: [
|
|
210
|
+
{
|
|
211
|
+
decimals: 18,
|
|
212
|
+
address: this.config.weETHAddress,
|
|
213
|
+
},
|
|
214
|
+
],
|
|
206
215
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
207
216
|
},
|
|
208
217
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx-protocol-rusd.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/fx-protocol-rusd.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,+CAAoD;AACpD,2EAA6D;AAC7D,uCAAoD;AAIpD,wDAAoD;AACpD,qCAA4C;AAC5C,4CAA6D;AAC7D,kFAAyD;AACzD,wFAA+D;AAC/D,8FAAwE;AAExE,gDAAmE;AACnE,qEAA+D;AAC/D,6DAAiD;AAEjD,MAAa,cACX,SAAQ,gCAAc;IAoBtB,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;QAlBvB,iCAA4B,GAAG,IAAI,CAAC;QAEpC,mBAAc,GAAG,KAAK,CAAC;QAEvB,6BAAwB,GAAG,KAAK,CAAC;QAiBxC,MAAM,MAAM,GAAG,yBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,eAAS,CAAC,oBAA2B,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,eAAS,CAAC,uBAA8B,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAS,CAAC,0BAAoC,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE;YAC7C,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;YAC/C,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,CAAC,WAAW,EAAE;YACnE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE;SAC5D,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,4CAAmB,CAC/C,IAAI,CAAC,MAAM,EACX,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAClC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,IAAI,GACR,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO;aACvC,SAAS,CAAC;YACT;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;gBAC1C,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAC/C,sBAAsB,EACtB,EAAE,CACH;aACF;YACD;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;gBACtC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAChD,cAAc,EACd,EAAE,CACH;aACF;SACF,CAAC;aACD,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,MAAM,CACtB,IAAI,CAAC,eAAe,CAAC,oBAAoB,CACvC,sBAAsB,EACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,CACL,CAAC;
|
|
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,8 +1,8 @@
|
|
|
1
1
|
import { Address } from '../../types';
|
|
2
2
|
export declare type FxProtocolPoolState = {
|
|
3
|
-
nav:
|
|
4
|
-
redeemFee:
|
|
5
|
-
weETHPrice:
|
|
3
|
+
nav: string;
|
|
4
|
+
redeemFee: string;
|
|
5
|
+
weETHPrice: string;
|
|
6
6
|
};
|
|
7
7
|
export declare type FxProtocolData = {};
|
|
8
8
|
export declare type DexParams = {
|
|
@@ -14,10 +14,10 @@ async function getOnChainState(multiContract, marketAddress, marketInterface, et
|
|
|
14
14
|
},
|
|
15
15
|
])
|
|
16
16
|
.call({}, blockNumber);
|
|
17
|
-
const redeemFee = BigInt(marketInterface.decodeFunctionResult('fTokenRedeemFeeRatio', data.returnData[0])[0]);
|
|
18
|
-
const weETHPrice = BigInt(ethWeETHOracleIface.decodeFunctionResult('latestAnswer', data.returnData[1])[0]);
|
|
17
|
+
const redeemFee = BigInt(marketInterface.decodeFunctionResult('fTokenRedeemFeeRatio', data.returnData[0])[0]).toString();
|
|
18
|
+
const weETHPrice = BigInt(ethWeETHOracleIface.decodeFunctionResult('latestAnswer', data.returnData[1])[0]).toString();
|
|
19
19
|
return {
|
|
20
|
-
nav:
|
|
20
|
+
nav: '1000000000000000000',
|
|
21
21
|
redeemFee,
|
|
22
22
|
weETHPrice,
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/utils.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,eAAe,CACnC,aAAuB,EACvB,aAAqB,EACrB,eAA0B,EAC1B,qBAA6B,EAC7B,mBAA8B,EAC9B,WAA8B;IAE9B,MAAM,IAAI,GAA0B,MAAM,aAAa,CAAC,OAAO;SAC5D,SAAS,CAAC;QACT;YACE,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAC1C,sBAAsB,EACtB,EAAE,CACH;SACF;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC;SACrE;KACF,CAAC;SACD,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEzB,MAAM,SAAS,GAAG,MAAM,CACtB,eAAe,CAAC,oBAAoB,CAClC,sBAAsB,EACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,CACL,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/fx-protocol-rusd/utils.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,eAAe,CACnC,aAAuB,EACvB,aAAqB,EACrB,eAA0B,EAC1B,qBAA6B,EAC7B,mBAA8B,EAC9B,WAA8B;IAE9B,MAAM,IAAI,GAA0B,MAAM,aAAa,CAAC,OAAO;SAC5D,SAAS,CAAC;QACT;YACE,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAC1C,sBAAsB,EACtB,EAAE,CACH;SACF;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC;SACrE;KACF,CAAC;SACD,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEzB,MAAM,SAAS,GAAG,MAAM,CACtB,eAAe,CAAC,oBAAoB,CAClC,sBAAsB,EACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,CACL,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,UAAU,GAAG,MAAM,CACvB,mBAAmB,CAAC,oBAAoB,CACtC,cAAc,EACd,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,CACL,CAAC,QAAQ,EAAE,CAAC;IAEb,OAAO;QACL,GAAG,EAAE,qBAAqB;QAC1B,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC;AA1CD,0CA0CC"}
|
package/package.json
CHANGED
|
@@ -30,12 +30,20 @@ export class ConcentratorArusdEvent extends StatefulEventSubscriber<Concentrator
|
|
|
30
30
|
const event = this.decoder(log);
|
|
31
31
|
const _state: ConcentratorArusdState = _.cloneDeep(state);
|
|
32
32
|
if (event.name === 'Deposit') {
|
|
33
|
-
_state.totalSupply
|
|
34
|
-
|
|
33
|
+
_state.totalSupply = (
|
|
34
|
+
BigInt(_state.totalSupply) + BigInt(event.args.amountSyOut)
|
|
35
|
+
).toString();
|
|
36
|
+
_state.totalAssets = (
|
|
37
|
+
BigInt(_state.totalAssets) + BigInt(event.args.amountDeposited)
|
|
38
|
+
).toString();
|
|
35
39
|
return _state;
|
|
36
40
|
} else if (event.name === 'Redeem') {
|
|
37
|
-
_state.totalSupply
|
|
38
|
-
|
|
41
|
+
_state.totalSupply = (
|
|
42
|
+
BigInt(_state.totalSupply) - BigInt(event.args.amountSyToRedeem)
|
|
43
|
+
).toString();
|
|
44
|
+
_state.totalAssets = (
|
|
45
|
+
BigInt(_state.totalAssets) - BigInt(event.args.amountTokenOut)
|
|
46
|
+
).toString();
|
|
39
47
|
return _state;
|
|
40
48
|
}
|
|
41
49
|
return null;
|
|
@@ -16,7 +16,7 @@ import { Context, IDex } from '../../dex/idex';
|
|
|
16
16
|
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
17
17
|
import { ConcentratorArusdData, DexParams } from './types';
|
|
18
18
|
import { SimpleExchange } from '../simple-exchange';
|
|
19
|
-
import { ConcentratorArusdConfig
|
|
19
|
+
import { ConcentratorArusdConfig } from './config';
|
|
20
20
|
import { Interface } from '@ethersproject/abi';
|
|
21
21
|
import ArUSD_ABI from '../../abi/concentrator/arUSD.json';
|
|
22
22
|
import ArUSD5115_ABI from '../../abi/concentrator/arUSD5115.json';
|
|
@@ -49,7 +49,7 @@ export class ConcentratorArusd
|
|
|
49
49
|
readonly network: Network,
|
|
50
50
|
readonly dexKey: string,
|
|
51
51
|
readonly dexHelper: IDexHelper,
|
|
52
|
-
protected adapters =
|
|
52
|
+
protected adapters = {},
|
|
53
53
|
) {
|
|
54
54
|
super(dexHelper, dexKey);
|
|
55
55
|
const config = ConcentratorArusdConfig[dexKey][network];
|
|
@@ -238,16 +238,25 @@ export class ConcentratorArusd
|
|
|
238
238
|
tokenAddress: Address,
|
|
239
239
|
limit: number,
|
|
240
240
|
): Promise<PoolLiquidity[]> {
|
|
241
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_arUSD(tokenAddress)) return [];
|
|
242
|
+
|
|
241
243
|
return [
|
|
242
244
|
{
|
|
243
245
|
exchange: this.dexKey,
|
|
244
246
|
address: this.config.arUSDAddress,
|
|
245
|
-
connectorTokens:
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
247
|
+
connectorTokens: this.is_rUSD(tokenAddress)
|
|
248
|
+
? [
|
|
249
|
+
{
|
|
250
|
+
decimals: 18,
|
|
251
|
+
address: this.config.arUSDAddress,
|
|
252
|
+
},
|
|
253
|
+
]
|
|
254
|
+
: [
|
|
255
|
+
{
|
|
256
|
+
decimals: 18,
|
|
257
|
+
address: this.config.rUSDAddress,
|
|
258
|
+
},
|
|
259
|
+
],
|
|
251
260
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
252
261
|
},
|
|
253
262
|
];
|
|
@@ -11,8 +11,3 @@ export const ConcentratorArusdConfig: DexConfigMap<DexParams> = {
|
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
|
-
|
|
15
|
-
export const Adapters: Record<number, AdapterMappings> = {
|
|
16
|
-
// This is an example to copy
|
|
17
|
-
[Network.MAINNET]: { [SwapSide.SELL]: [{ name: 'Adapter02', index: 0 }] },
|
|
18
|
-
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Address } from '../../types';
|
|
2
2
|
|
|
3
3
|
export type ConcentratorArusdState = {
|
|
4
|
-
totalSupply:
|
|
5
|
-
totalAssets:
|
|
4
|
+
totalSupply: string;
|
|
5
|
+
totalAssets: string;
|
|
6
6
|
};
|
|
7
7
|
export type ConcentratorArusdNavState = {
|
|
8
|
-
nav:
|
|
8
|
+
nav: string;
|
|
9
9
|
};
|
|
10
10
|
export type ConcentratorArusdData = {};
|
|
11
11
|
|
|
@@ -25,10 +25,10 @@ export async function getOnChainState(
|
|
|
25
25
|
|
|
26
26
|
const totalSupply = BigInt(
|
|
27
27
|
poolInterface.decodeFunctionResult('totalSupply', data.returnData[0])[0],
|
|
28
|
-
);
|
|
28
|
+
).toString();
|
|
29
29
|
const totalAssets = BigInt(
|
|
30
30
|
poolInterface.decodeFunctionResult('getTotalAssets', data.returnData[1])[0],
|
|
31
|
-
);
|
|
31
|
+
).toString();
|
|
32
32
|
return {
|
|
33
33
|
totalSupply,
|
|
34
34
|
totalAssets,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
+
import { defaultAbiCoder, Interface } from '@ethersproject/abi';
|
|
3
3
|
import { IDexHelper } from '../../dex-helper';
|
|
4
4
|
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
5
5
|
import { Address, Log, Logger } from '../../types';
|
|
6
6
|
import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
7
7
|
import { FxProtocolPoolState } from './types';
|
|
8
8
|
import { BI_POWS } from '../../bigint-constants';
|
|
9
|
-
import { bigIntify, catchParseLogError } from '../../utils';
|
|
10
9
|
import { getOnChainState } from './utils';
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const ANSWER_UPDATED_TOPICHASH = `0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f`;
|
|
12
|
+
const UPDATE_REDEEM_FEE_TOPICHASH = `0xb3d49e95905d108ea668ffe62a85ee16bdc4ff9f122a7137964327ea8e0585ff`;
|
|
14
13
|
|
|
14
|
+
export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolState> {
|
|
15
15
|
constructor(
|
|
16
16
|
parentName: string,
|
|
17
17
|
protected dexHelper: IDexHelper,
|
|
@@ -29,21 +29,25 @@ 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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return
|
|
32
|
+
// if (log.topics[0] === UPDATE_REDEEM_FEE_TOPICHASH) {
|
|
33
|
+
// const [defaultFeeRatio] = defaultAbiCoder.decode(
|
|
34
|
+
// ['uint256', 'int256'],
|
|
35
|
+
// log.data,
|
|
36
|
+
// );
|
|
37
|
+
|
|
38
|
+
// return {
|
|
39
|
+
// ...state,
|
|
40
|
+
// redeemFee: BigInt(defaultFeeRatio).toString(),
|
|
41
|
+
// };
|
|
42
|
+
// }
|
|
43
|
+
|
|
44
|
+
if (log.topics[0] === ANSWER_UPDATED_TOPICHASH) {
|
|
45
|
+
return {
|
|
46
|
+
...state,
|
|
47
|
+
weETHPrice: BigInt(log.topics[1]).toString(),
|
|
48
|
+
};
|
|
46
49
|
}
|
|
50
|
+
return null;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
async generateState(
|
|
@@ -65,16 +69,16 @@ export class fxProtocolRusdEvent extends StatefulEventSubscriber<FxProtocolPoolS
|
|
|
65
69
|
if (!state) throw new Error('Cannot compute price');
|
|
66
70
|
|
|
67
71
|
const { nav, redeemFee, weETHPrice } = state;
|
|
68
|
-
const baseTokenPrice = BigInt(weETHPrice * BI_POWS[10]
|
|
72
|
+
const baseTokenPrice = BigInt(weETHPrice) * BI_POWS[10];
|
|
69
73
|
|
|
70
74
|
if (isRedeem) {
|
|
71
75
|
return BigInt(
|
|
72
|
-
(amount * nav * (BI_POWS[18] - redeemFee)) /
|
|
76
|
+
(amount * BigInt(nav) * (BI_POWS[18] - BigInt(redeemFee))) /
|
|
73
77
|
BI_POWS[18] /
|
|
74
78
|
baseTokenPrice,
|
|
75
79
|
);
|
|
76
80
|
} else {
|
|
77
|
-
return BigInt((baseTokenPrice * amount) / nav);
|
|
81
|
+
return BigInt((baseTokenPrice * amount) / BigInt(nav));
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
}
|
|
@@ -101,17 +101,19 @@ export class FxProtocolRusd
|
|
|
101
101
|
'fTokenRedeemFeeRatio',
|
|
102
102
|
data.returnData[0],
|
|
103
103
|
)[0],
|
|
104
|
-
);
|
|
104
|
+
).toString();
|
|
105
|
+
|
|
105
106
|
const weETHPrice = BigInt(
|
|
106
107
|
this.weETHOracleIface.decodeFunctionResult(
|
|
107
108
|
'latestAnswer',
|
|
108
109
|
data.returnData[1],
|
|
109
110
|
)[0],
|
|
110
|
-
);
|
|
111
|
+
).toString();
|
|
112
|
+
|
|
111
113
|
await Promise.all([
|
|
112
114
|
this.fxProtocolRusdPool.initialize(blockNumber, {
|
|
113
115
|
state: {
|
|
114
|
-
nav:
|
|
116
|
+
nav: '1000000000000000000',
|
|
115
117
|
redeemFee,
|
|
116
118
|
weETHPrice,
|
|
117
119
|
},
|
|
@@ -286,16 +288,25 @@ export class FxProtocolRusd
|
|
|
286
288
|
tokenAddress: Address,
|
|
287
289
|
limit: number,
|
|
288
290
|
): Promise<PoolLiquidity[]> {
|
|
291
|
+
if (!this.is_rUSD(tokenAddress) && !this.is_weETH(tokenAddress)) return [];
|
|
292
|
+
|
|
289
293
|
return [
|
|
290
294
|
{
|
|
291
295
|
exchange: this.dexKey,
|
|
292
296
|
address: this.config.rUSDAddress,
|
|
293
|
-
connectorTokens:
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
+
],
|
|
299
310
|
liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
|
|
300
311
|
},
|
|
301
312
|
];
|
|
@@ -31,15 +31,16 @@ export async function getOnChainState(
|
|
|
31
31
|
'fTokenRedeemFeeRatio',
|
|
32
32
|
data.returnData[0],
|
|
33
33
|
)[0],
|
|
34
|
-
);
|
|
34
|
+
).toString();
|
|
35
35
|
const weETHPrice = BigInt(
|
|
36
36
|
ethWeETHOracleIface.decodeFunctionResult(
|
|
37
37
|
'latestAnswer',
|
|
38
38
|
data.returnData[1],
|
|
39
39
|
)[0],
|
|
40
|
-
);
|
|
40
|
+
).toString();
|
|
41
|
+
|
|
41
42
|
return {
|
|
42
|
-
nav:
|
|
43
|
+
nav: '1000000000000000000',
|
|
43
44
|
redeemFee,
|
|
44
45
|
weETHPrice,
|
|
45
46
|
};
|