@paraswap/dex-lib 3.7.0-stata.3 → 3.7.0-stata.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/aave-v3-stata/aave-v3-stata.js +33 -15
- package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -1
- package/build/dex/aave-v3-stata/tokens.d.ts +1 -0
- package/build/dex/aave-v3-stata/tokens.js +5 -1
- package/build/dex/aave-v3-stata/tokens.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/aave-v3-stata/aave-v3-stata.ts +51 -20
- package/src/dex/aave-v3-stata/tokens.ts +7 -0
|
@@ -38,6 +38,7 @@ const utils_2 = require("./utils");
|
|
|
38
38
|
const tokens_1 = require("./tokens");
|
|
39
39
|
const decoders_1 = require("../../lib/decoders");
|
|
40
40
|
const Token_json_1 = __importDefault(require("../../abi/aavev3stata/Token.json"));
|
|
41
|
+
const utils_3 = require("../../executor/utils");
|
|
41
42
|
// import { IStaticATokenLM_ABI } from '@bgd-labs/aave-address-book';
|
|
42
43
|
// slimmed down version of @bgd-labs/aave-address-book
|
|
43
44
|
// required as version of web3-utils used is buggy
|
|
@@ -106,23 +107,37 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
106
107
|
async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
|
|
107
108
|
const src = (0, tokens_1.getTokenType)(this.network, srcToken.address);
|
|
108
109
|
const dest = (0, tokens_1.getTokenType)(this.network, destToken.address);
|
|
110
|
+
// one of the tokens must be stata
|
|
111
|
+
if (![src, dest].includes(types_1.TokenType.STATA_TOKEN) || src === dest) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
109
114
|
const isSrcStata = src === types_1.TokenType.STATA_TOKEN;
|
|
115
|
+
const [stataToken, otherAddressLower] = isSrcStata
|
|
116
|
+
? [
|
|
117
|
+
(0, tokens_1.getTokenFromAddress)(this.network, srcToken.address),
|
|
118
|
+
destToken.address.toLowerCase(),
|
|
119
|
+
]
|
|
120
|
+
: [
|
|
121
|
+
(0, tokens_1.getTokenFromAddress)(this.network, destToken.address),
|
|
122
|
+
srcToken.address.toLowerCase(),
|
|
123
|
+
];
|
|
110
124
|
// the token itself can only swap from/to underlying and aToken, so
|
|
111
125
|
// - at least one must be stata
|
|
112
126
|
// - maximum one can be stata
|
|
113
127
|
// - second one must be underlying or aUnderlying
|
|
114
|
-
if (![src, dest].includes(types_1.TokenType.STATA_TOKEN) ||
|
|
115
|
-
src === dest ||
|
|
116
|
-
src === types_1.TokenType.UNKNOWN ||
|
|
117
|
-
dest === types_1.TokenType.UNKNOWN) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
128
|
// on the buy side (mint, withdraw) we only support the underlying<->stata conversion, not the aUnderlying
|
|
121
|
-
if (side === constants_1.SwapSide.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
129
|
+
if (side === constants_1.SwapSide.SELL) {
|
|
130
|
+
if (otherAddressLower !== stataToken.underlying.toLowerCase() &&
|
|
131
|
+
otherAddressLower !== stataToken.underlyingAToken.toLowerCase()) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
if (otherAddressLower !== stataToken.underlying.toLowerCase()) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const stataAddressLower = stataToken.address.toLowerCase();
|
|
126
141
|
if (!this.state[stataAddressLower]?.blockNumber ||
|
|
127
142
|
blockNumber > this.state[stataAddressLower].blockNumber) {
|
|
128
143
|
const cached = await this.dexHelper.cache.get(this.dexKey, this.network, `state_${stataAddressLower}`);
|
|
@@ -132,7 +147,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
132
147
|
else {
|
|
133
148
|
const results = await this.dexHelper.multiWrapper.tryAggregate(true, [
|
|
134
149
|
{
|
|
135
|
-
target:
|
|
150
|
+
target: stataToken.address,
|
|
136
151
|
callData: AaveV3Stata.stata.encodeFunctionData('rate'),
|
|
137
152
|
decodeFunction: decoders_1.uint256ToBigInt,
|
|
138
153
|
},
|
|
@@ -141,7 +156,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
141
156
|
blockNumber,
|
|
142
157
|
rate: results[0].returnData,
|
|
143
158
|
};
|
|
144
|
-
this.dexHelper.cache.setex(this.dexKey, this.network,
|
|
159
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, `state_${stataAddressLower}`, 60, utils_1.Utils.Serialize(this.state[stataAddressLower]));
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
162
|
return [
|
|
@@ -171,7 +186,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
171
186
|
data: {
|
|
172
187
|
srcType: src,
|
|
173
188
|
destType: dest,
|
|
174
|
-
exchange:
|
|
189
|
+
exchange: stataToken.address,
|
|
175
190
|
},
|
|
176
191
|
poolAddresses: [stataAddressLower],
|
|
177
192
|
},
|
|
@@ -256,6 +271,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
256
271
|
getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side, _, executorAddress) {
|
|
257
272
|
const { exchange, srcType, destType } = data;
|
|
258
273
|
let swapData;
|
|
274
|
+
let returnAmountPos = undefined;
|
|
259
275
|
if (side === constants_1.SwapSide.SELL) {
|
|
260
276
|
if (srcType === types_1.TokenType.STATA_TOKEN) {
|
|
261
277
|
// e.g. sell srcAmount 100 srcToken stataUSDC for destToken USDC
|
|
@@ -265,6 +281,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
265
281
|
executorAddress,
|
|
266
282
|
destType === types_1.TokenType.UNDERLYING, // withdraw from aToken
|
|
267
283
|
]);
|
|
284
|
+
returnAmountPos = (0, utils_3.extractReturnAmountPosition)(AaveV3Stata.stata, types_1.StataFunctions.redeem, '', 1);
|
|
268
285
|
}
|
|
269
286
|
else {
|
|
270
287
|
// sell srcAmount 100 srcToken USDC for destToken stataUSDC
|
|
@@ -274,6 +291,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
274
291
|
0,
|
|
275
292
|
srcType === types_1.TokenType.UNDERLYING, // deposit to aave
|
|
276
293
|
]);
|
|
294
|
+
returnAmountPos = (0, utils_3.extractReturnAmountPosition)(AaveV3Stata.stata, types_1.StataFunctions.deposit);
|
|
277
295
|
}
|
|
278
296
|
}
|
|
279
297
|
else {
|
|
@@ -298,7 +316,7 @@ class AaveV3Stata extends simple_exchange_1.SimpleExchange {
|
|
|
298
316
|
dexFuncHasRecipient: true,
|
|
299
317
|
exchangeData: swapData,
|
|
300
318
|
targetExchange: exchange,
|
|
301
|
-
returnAmountPos
|
|
319
|
+
returnAmountPos,
|
|
302
320
|
};
|
|
303
321
|
}
|
|
304
322
|
// This is called once before getTopPoolsForToken is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave-v3-stata.js","sourceRoot":"","sources":["../../../src/dex/aave-v3-stata/aave-v3-stata.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,+CAAoD;AACpD,2EAA6D;AAC7D,uCAAyE;AAGzE,mCAA+E;AAC/E,wDAAoD;AACpD,qCAAuD;AACvD,4CAA+C;AAC/C,mCAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"aave-v3-stata.js","sourceRoot":"","sources":["../../../src/dex/aave-v3-stata/aave-v3-stata.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,3 +7,4 @@ export declare const Tokens: {
|
|
|
7
7
|
};
|
|
8
8
|
export declare function setTokensOnNetwork(network: Network, tokens: StataToken[]): void;
|
|
9
9
|
export declare function getTokenType(network: Network, address: string): TokenType;
|
|
10
|
+
export declare function getTokenFromAddress(network: Network, address: string): StataToken;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTokenType = exports.setTokensOnNetwork = exports.Tokens = void 0;
|
|
3
|
+
exports.getTokenFromAddress = exports.getTokenType = exports.setTokensOnNetwork = exports.Tokens = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
exports.Tokens = {};
|
|
6
6
|
const TokensByAddress = {};
|
|
@@ -36,4 +36,8 @@ function getTokenType(network, address) {
|
|
|
36
36
|
return types_1.TokenType.UNKNOWN;
|
|
37
37
|
}
|
|
38
38
|
exports.getTokenType = getTokenType;
|
|
39
|
+
function getTokenFromAddress(network, address) {
|
|
40
|
+
return TokensByAddress[network]?.[address.toLowerCase()];
|
|
41
|
+
}
|
|
42
|
+
exports.getTokenFromAddress = getTokenFromAddress;
|
|
39
43
|
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/dex/aave-v3-stata/tokens.ts"],"names":[],"mappings":";;;AACA,mCAAgD;AAEnC,QAAA,MAAM,GACjB,EAAE,CAAC;AAEL,MAAM,eAAe,GAEjB,EAAE,CAAC;AAEP,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,MAAoB;IACvE,IAAI,cAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;QACjC,cAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACtB;IAED,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;QAC1C,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KAC/B;IAED,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,+CAA+C;QAC/C,qDAAqD;QACrD,iEAAiE;QAEjE,cAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAC3C,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAChD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QACnD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;KAC1D;AACH,CAAC;AAnBD,gDAmBC;AAED,SAAgB,YAAY,CAAC,OAAgB,EAAE,OAAe;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,CAAC,KAAK;QAAE,OAAO,iBAAS,CAAC,OAAO,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,WAAW,CAAC;IACjE,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,UAAU,CAAC;IACnE,IAAI,KAAK,CAAC,gBAAgB,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,OAAO,CAAC;IACtE,OAAO,iBAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AATD,oCASC"}
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/dex/aave-v3-stata/tokens.ts"],"names":[],"mappings":";;;AACA,mCAAgD;AAEnC,QAAA,MAAM,GACjB,EAAE,CAAC;AAEL,MAAM,eAAe,GAEjB,EAAE,CAAC;AAEP,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,MAAoB;IACvE,IAAI,cAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;QACjC,cAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACtB;IAED,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;QAC1C,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KAC/B;IAED,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,+CAA+C;QAC/C,qDAAqD;QACrD,iEAAiE;QAEjE,cAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAC3C,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAChD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QACnD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;KAC1D;AACH,CAAC;AAnBD,gDAmBC;AAED,SAAgB,YAAY,CAAC,OAAgB,EAAE,OAAe;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,CAAC,KAAK;QAAE,OAAO,iBAAS,CAAC,OAAO,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,WAAW,CAAC;IACjE,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,UAAU,CAAC;IACnE,IAAI,KAAK,CAAC,gBAAgB,KAAK,YAAY;QAAE,OAAO,iBAAS,CAAC,OAAO,CAAC;IACtE,OAAO,iBAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AATD,oCASC;AAED,SAAgB,mBAAmB,CACjC,OAAgB,EAChB,OAAe;IAEf,OAAO,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3D,CAAC;AALD,kDAKC"}
|
package/package.json
CHANGED
|
@@ -20,10 +20,14 @@ import { SimpleExchange } from '../simple-exchange';
|
|
|
20
20
|
import { AaveV3StataConfig, Adapters } from './config';
|
|
21
21
|
import { Interface } from '@ethersproject/abi';
|
|
22
22
|
import { fetchTokenList } from './utils';
|
|
23
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
getTokenFromAddress,
|
|
25
|
+
getTokenType,
|
|
26
|
+
setTokensOnNetwork,
|
|
27
|
+
} from './tokens';
|
|
24
28
|
import { uint256ToBigInt } from '../../lib/decoders';
|
|
25
29
|
import TokenABI from '../../abi/aavev3stata/Token.json';
|
|
26
|
-
import {
|
|
30
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
27
31
|
// import { IStaticATokenLM_ABI } from '@bgd-labs/aave-address-book';
|
|
28
32
|
// slimmed down version of @bgd-labs/aave-address-book
|
|
29
33
|
// required as version of web3-utils used is buggy
|
|
@@ -148,29 +152,44 @@ export class AaveV3Stata
|
|
|
148
152
|
): Promise<null | ExchangePrices<AaveV3StataData>> {
|
|
149
153
|
const src = getTokenType(this.network, srcToken.address);
|
|
150
154
|
const dest = getTokenType(this.network, destToken.address);
|
|
155
|
+
|
|
156
|
+
// one of the tokens must be stata
|
|
157
|
+
if (![src, dest].includes(TokenType.STATA_TOKEN) || src === dest) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
|
|
151
161
|
const isSrcStata = src === TokenType.STATA_TOKEN;
|
|
152
162
|
|
|
163
|
+
const [stataToken, otherAddressLower] = isSrcStata
|
|
164
|
+
? [
|
|
165
|
+
getTokenFromAddress(this.network, srcToken.address),
|
|
166
|
+
destToken.address.toLowerCase(),
|
|
167
|
+
]
|
|
168
|
+
: [
|
|
169
|
+
getTokenFromAddress(this.network, destToken.address),
|
|
170
|
+
srcToken.address.toLowerCase(),
|
|
171
|
+
];
|
|
172
|
+
|
|
153
173
|
// the token itself can only swap from/to underlying and aToken, so
|
|
154
174
|
// - at least one must be stata
|
|
155
175
|
// - maximum one can be stata
|
|
156
176
|
// - second one must be underlying or aUnderlying
|
|
157
|
-
if (
|
|
158
|
-
![src, dest].includes(TokenType.STATA_TOKEN) ||
|
|
159
|
-
src === dest ||
|
|
160
|
-
src === TokenType.UNKNOWN ||
|
|
161
|
-
dest === TokenType.UNKNOWN
|
|
162
|
-
) {
|
|
163
|
-
return null;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
177
|
// on the buy side (mint, withdraw) we only support the underlying<->stata conversion, not the aUnderlying
|
|
167
|
-
if (side === SwapSide.
|
|
168
|
-
|
|
178
|
+
if (side === SwapSide.SELL) {
|
|
179
|
+
if (
|
|
180
|
+
otherAddressLower !== stataToken.underlying.toLowerCase() &&
|
|
181
|
+
otherAddressLower !== stataToken.underlyingAToken.toLowerCase()
|
|
182
|
+
) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
if (otherAddressLower !== stataToken.underlying.toLowerCase()) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
169
190
|
|
|
170
|
-
const
|
|
171
|
-
const stataAddressLower = stata.address.toLowerCase();
|
|
191
|
+
const stataAddressLower = stataToken.address.toLowerCase();
|
|
172
192
|
|
|
173
|
-
// following what is done on wstETH
|
|
174
193
|
if (
|
|
175
194
|
!this.state[stataAddressLower]?.blockNumber ||
|
|
176
195
|
blockNumber > this.state[stataAddressLower].blockNumber
|
|
@@ -187,7 +206,7 @@ export class AaveV3Stata
|
|
|
187
206
|
true,
|
|
188
207
|
[
|
|
189
208
|
{
|
|
190
|
-
target:
|
|
209
|
+
target: stataToken.address,
|
|
191
210
|
callData: AaveV3Stata.stata.encodeFunctionData('rate'),
|
|
192
211
|
decodeFunction: uint256ToBigInt,
|
|
193
212
|
},
|
|
@@ -201,7 +220,7 @@ export class AaveV3Stata
|
|
|
201
220
|
this.dexHelper.cache.setex(
|
|
202
221
|
this.dexKey,
|
|
203
222
|
this.network,
|
|
204
|
-
|
|
223
|
+
`state_${stataAddressLower}`,
|
|
205
224
|
60,
|
|
206
225
|
Utils.Serialize(this.state[stataAddressLower]),
|
|
207
226
|
);
|
|
@@ -234,7 +253,7 @@ export class AaveV3Stata
|
|
|
234
253
|
data: {
|
|
235
254
|
srcType: src,
|
|
236
255
|
destType: dest,
|
|
237
|
-
exchange:
|
|
256
|
+
exchange: stataToken.address,
|
|
238
257
|
},
|
|
239
258
|
poolAddresses: [stataAddressLower],
|
|
240
259
|
},
|
|
@@ -335,6 +354,7 @@ export class AaveV3Stata
|
|
|
335
354
|
): DexExchangeParam {
|
|
336
355
|
const { exchange, srcType, destType } = data;
|
|
337
356
|
let swapData;
|
|
357
|
+
let returnAmountPos = undefined;
|
|
338
358
|
|
|
339
359
|
if (side === SwapSide.SELL) {
|
|
340
360
|
if (srcType === TokenType.STATA_TOKEN) {
|
|
@@ -345,6 +365,13 @@ export class AaveV3Stata
|
|
|
345
365
|
executorAddress, // owner
|
|
346
366
|
destType === TokenType.UNDERLYING, // withdraw from aToken
|
|
347
367
|
]);
|
|
368
|
+
|
|
369
|
+
returnAmountPos = extractReturnAmountPosition(
|
|
370
|
+
AaveV3Stata.stata,
|
|
371
|
+
StataFunctions.redeem,
|
|
372
|
+
'',
|
|
373
|
+
1,
|
|
374
|
+
);
|
|
348
375
|
} else {
|
|
349
376
|
// sell srcAmount 100 srcToken USDC for destToken stataUSDC
|
|
350
377
|
swapData = AaveV3Stata.stata.encodeFunctionData(
|
|
@@ -356,6 +383,10 @@ export class AaveV3Stata
|
|
|
356
383
|
srcType === TokenType.UNDERLYING, // deposit to aave
|
|
357
384
|
],
|
|
358
385
|
);
|
|
386
|
+
returnAmountPos = extractReturnAmountPosition(
|
|
387
|
+
AaveV3Stata.stata,
|
|
388
|
+
StataFunctions.deposit,
|
|
389
|
+
);
|
|
359
390
|
}
|
|
360
391
|
} else {
|
|
361
392
|
if (srcType === TokenType.STATA_TOKEN) {
|
|
@@ -382,7 +413,7 @@ export class AaveV3Stata
|
|
|
382
413
|
dexFuncHasRecipient: true,
|
|
383
414
|
exchangeData: swapData,
|
|
384
415
|
targetExchange: exchange,
|
|
385
|
-
returnAmountPos
|
|
416
|
+
returnAmountPos,
|
|
386
417
|
};
|
|
387
418
|
}
|
|
388
419
|
|
|
@@ -39,3 +39,10 @@ export function getTokenType(network: Network, address: string): TokenType {
|
|
|
39
39
|
if (token.underlyingAToken === addressLower) return TokenType.A_TOKEN;
|
|
40
40
|
return TokenType.UNKNOWN;
|
|
41
41
|
}
|
|
42
|
+
|
|
43
|
+
export function getTokenFromAddress(
|
|
44
|
+
network: Network,
|
|
45
|
+
address: string,
|
|
46
|
+
): StataToken {
|
|
47
|
+
return TokensByAddress[network]?.[address.toLowerCase()];
|
|
48
|
+
}
|