@evaafi/sdk 0.6.0-a → 0.6.1-a
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/dist/api/liquidation.d.ts +136 -0
- package/dist/api/liquidation.js +252 -0
- package/dist/api/math.d.ts +34 -7
- package/dist/api/math.js +94 -30
- package/dist/api/parser.js +4 -9
- package/dist/constants/assets.d.ts +12 -0
- package/dist/constants/assets.js +25 -13
- package/dist/constants/general.d.ts +4 -1
- package/dist/constants/general.js +10 -9
- package/dist/constants/pools.js +2 -2
- package/dist/contracts/MasterContract.d.ts +5 -1
- package/dist/contracts/MasterContract.js +15 -9
- package/dist/contracts/UserContract.d.ts +1 -0
- package/dist/contracts/UserContract.js +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +20 -2
- package/dist/types/Master.d.ts +4 -1
- package/dist/types/User.d.ts +7 -0
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +6 -1
- package/package.json +2 -1
- package/src/api/liquidation.ts +346 -0
- package/src/api/math.ts +166 -75
- package/src/api/parser.ts +4 -9
- package/src/constants/assets.ts +26 -12
- package/src/constants/general.ts +12 -9
- package/src/constants/pools.ts +2 -2
- package/src/contracts/MasterContract.ts +18 -11
- package/src/contracts/UserContract.ts +1 -0
- package/src/index.ts +30 -6
- package/src/types/Master.ts +5 -2
- package/src/types/User.ts +8 -0
- package/src/utils/utils.ts +4 -0
package/src/constants/pools.ts
CHANGED
|
@@ -25,7 +25,7 @@ export const TESTNET_POOL_CONFIG: PoolConfig = {
|
|
|
25
25
|
masterVersion: TESTNET_VERSION,
|
|
26
26
|
masterConstants: MASTER_CONSTANTS,
|
|
27
27
|
oracles: ORACLES_TESTNET,
|
|
28
|
-
minimalOracles:
|
|
28
|
+
minimalOracles: 3,
|
|
29
29
|
poolAssetsConfig: [
|
|
30
30
|
TON_MAINNET,
|
|
31
31
|
JUSDT_TESTNET,
|
|
@@ -46,7 +46,7 @@ export const MAINNET_LP_POOL_CONFIG: PoolConfig = {
|
|
|
46
46
|
USDT_MAINNET,
|
|
47
47
|
TONUSDT_DEDUST_MAINNET,
|
|
48
48
|
TON_STORM_MAINNET,
|
|
49
|
-
USDT_STORM_MAINNET
|
|
49
|
+
USDT_STORM_MAINNET
|
|
50
50
|
],
|
|
51
51
|
lendingCode: LENDING_CODE
|
|
52
52
|
};
|
|
@@ -20,7 +20,7 @@ import { parseMasterData } from '../api/parser';
|
|
|
20
20
|
import { MasterData, PoolAssetConfig, PoolConfig} from '../types/Master';
|
|
21
21
|
import { JettonWallet } from './JettonWallet';
|
|
22
22
|
import { getUserJettonWallet } from '../utils/userJettonWallet';
|
|
23
|
-
import { getPrices, isTonAsset, MAINNET_POOL_CONFIG } from '..';
|
|
23
|
+
import { getPrices, isTonAsset, isTonAssetId, MAINNET_POOL_CONFIG } from '..';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Parameters for the Evaa contract
|
|
@@ -115,7 +115,7 @@ export type LiquidationParameters = LiquidationBaseData & {
|
|
|
115
115
|
*/
|
|
116
116
|
export class Evaa implements Contract {
|
|
117
117
|
readonly address: Address;
|
|
118
|
-
private
|
|
118
|
+
private _poolConfig: PoolConfig;
|
|
119
119
|
private readonly debug?: boolean;
|
|
120
120
|
private _data?: MasterData;
|
|
121
121
|
private lastSync = 0;
|
|
@@ -125,11 +125,18 @@ export class Evaa implements Contract {
|
|
|
125
125
|
* @param parameters Evaa contract parameters
|
|
126
126
|
*/
|
|
127
127
|
constructor(parameters?: EvaaParameters) {
|
|
128
|
-
this.
|
|
129
|
-
this.address = this.
|
|
128
|
+
this._poolConfig = parameters?.poolConfig ?? MAINNET_POOL_CONFIG;
|
|
129
|
+
this.address = this._poolConfig.masterAddress;
|
|
130
130
|
this.debug = parameters?.debug;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Returns pool config
|
|
135
|
+
*/
|
|
136
|
+
get poolConfig(): PoolConfig {
|
|
137
|
+
return this._poolConfig;
|
|
138
|
+
}
|
|
139
|
+
|
|
133
140
|
/**
|
|
134
141
|
* Create supply message
|
|
135
142
|
* @returns supply message as a cell
|
|
@@ -269,7 +276,7 @@ export class Evaa implements Contract {
|
|
|
269
276
|
* @returns user contract
|
|
270
277
|
*/
|
|
271
278
|
openUserContract(userAddress: Address): EvaaUser {
|
|
272
|
-
return EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this.
|
|
279
|
+
return EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this._poolConfig.lendingCode), this._poolConfig);
|
|
273
280
|
}
|
|
274
281
|
|
|
275
282
|
getOpenedUserContract(provider: ContractProvider, userAddress: Address): OpenedContract<EvaaUser> {
|
|
@@ -328,7 +335,7 @@ export class Evaa implements Contract {
|
|
|
328
335
|
) {
|
|
329
336
|
const message = this.createLiquidationMessage(parameters);
|
|
330
337
|
|
|
331
|
-
if (!
|
|
338
|
+
if (!isTonAssetId(parameters.loanAsset)) {
|
|
332
339
|
if (!via.address) {
|
|
333
340
|
throw Error('Via address is required for jetton liquidation');
|
|
334
341
|
}
|
|
@@ -374,10 +381,10 @@ export class Evaa implements Contract {
|
|
|
374
381
|
async getSync(provider: ContractProvider) {
|
|
375
382
|
const state = (await provider.getState()).state;
|
|
376
383
|
if (state.type === 'active') {
|
|
377
|
-
this._data = parseMasterData(state.data!.toString('base64'), this.
|
|
378
|
-
if (this._data.upgradeConfig.masterCodeVersion !== this.
|
|
384
|
+
this._data = parseMasterData(state.data!.toString('base64'), this._poolConfig.poolAssetsConfig, this._poolConfig.masterConstants);
|
|
385
|
+
if (this._data.upgradeConfig.masterCodeVersion !== this._poolConfig.masterVersion) {
|
|
379
386
|
throw Error(
|
|
380
|
-
`Outdated SDK pool version. It supports only master code version ${this.
|
|
387
|
+
`Outdated SDK pool version. It supports only master code version ${this._poolConfig.masterVersion}, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`,
|
|
381
388
|
);
|
|
382
389
|
}
|
|
383
390
|
this.lastSync = Math.floor(Date.now() / 1000);
|
|
@@ -388,9 +395,9 @@ export class Evaa implements Contract {
|
|
|
388
395
|
|
|
389
396
|
async getPrices(provider: ContractProvider, endpoints?: string[]) {
|
|
390
397
|
if ((endpoints?.length ?? 0) > 0) {
|
|
391
|
-
return await getPrices(endpoints, this.
|
|
398
|
+
return await getPrices(endpoints, this._poolConfig);
|
|
392
399
|
} else {
|
|
393
|
-
return await getPrices(undefined, this.
|
|
400
|
+
return await getPrices(undefined, this._poolConfig);
|
|
394
401
|
}
|
|
395
402
|
}
|
|
396
403
|
}
|
|
@@ -20,6 +20,7 @@ export class EvaaUser implements Contract {
|
|
|
20
20
|
/**
|
|
21
21
|
* Create user contract wrapper from address
|
|
22
22
|
* @param address user contract address
|
|
23
|
+
* @param poolConfig pool config
|
|
23
24
|
*/
|
|
24
25
|
static createFromAddress(address: Address, poolConfig: PoolConfig = MAINNET_POOL_CONFIG) {
|
|
25
26
|
return new EvaaUser(address, poolConfig);
|
package/src/index.ts
CHANGED
|
@@ -12,9 +12,32 @@ export {
|
|
|
12
12
|
calculateMaximumWithdrawAmount,
|
|
13
13
|
presentValue,
|
|
14
14
|
calculateLiquidationData,
|
|
15
|
-
predictHealthFactor
|
|
15
|
+
predictHealthFactor,
|
|
16
|
+
calculateHealthParams,
|
|
17
|
+
BigMath,
|
|
16
18
|
} from './api/math';
|
|
17
19
|
|
|
20
|
+
export {
|
|
21
|
+
calculateLiquidationAmounts,
|
|
22
|
+
calculateMinCollateralByTransferredAmount,
|
|
23
|
+
isLiquidatable,
|
|
24
|
+
isBadDebt,
|
|
25
|
+
addReserve,
|
|
26
|
+
deductReserve,
|
|
27
|
+
addLiquidationBonus,
|
|
28
|
+
deductLiquidationBonus,
|
|
29
|
+
toAssetAmount,
|
|
30
|
+
toAssetWorth,
|
|
31
|
+
PreparedAssetInfo,
|
|
32
|
+
PreparedAssetInfoResult,
|
|
33
|
+
prepareAssetInfo,
|
|
34
|
+
findAssetById,
|
|
35
|
+
selectGreatestAssets,
|
|
36
|
+
calculateAssetsValues,
|
|
37
|
+
AssetsValues,
|
|
38
|
+
SelectedAssets,
|
|
39
|
+
} from './api/liquidation';
|
|
40
|
+
|
|
18
41
|
// Parser
|
|
19
42
|
export { createAssetData, createAssetConfig, parseMasterData, parseUserData, parseUserLiteData } from './api/parser';
|
|
20
43
|
|
|
@@ -28,7 +51,7 @@ export {
|
|
|
28
51
|
WithdrawParameters,
|
|
29
52
|
LiquidationBaseData,
|
|
30
53
|
LiquidationParameters,
|
|
31
|
-
Evaa
|
|
54
|
+
Evaa
|
|
32
55
|
} from './contracts/MasterContract';
|
|
33
56
|
export { EvaaUser } from './contracts/UserContract';
|
|
34
57
|
|
|
@@ -79,10 +102,11 @@ export {
|
|
|
79
102
|
export {
|
|
80
103
|
MAINNET_POOL_CONFIG,
|
|
81
104
|
TESTNET_POOL_CONFIG,
|
|
82
|
-
MAINNET_LP_POOL_CONFIG
|
|
105
|
+
MAINNET_LP_POOL_CONFIG
|
|
83
106
|
} from './constants/pools';
|
|
84
107
|
|
|
85
108
|
export {
|
|
109
|
+
ASSET_ID,
|
|
86
110
|
UNDEFINED_ASSET,
|
|
87
111
|
TON_MAINNET,
|
|
88
112
|
USDT_MAINNET,
|
|
@@ -95,11 +119,11 @@ export {
|
|
|
95
119
|
TSTON_MAINNET,
|
|
96
120
|
JUSDT_TESTNET,
|
|
97
121
|
JUSDC_TESTNET,
|
|
98
|
-
STTON_TESTNET
|
|
122
|
+
STTON_TESTNET
|
|
99
123
|
} from './constants/assets';
|
|
100
124
|
|
|
101
|
-
export * from './constants/assets'
|
|
102
|
-
export * from './utils/utils'
|
|
125
|
+
export * from './constants/assets';
|
|
126
|
+
export * from './utils/utils';
|
|
103
127
|
|
|
104
128
|
// Utils
|
|
105
129
|
export { getLastSentBoc, getTonConnectSender } from './utils/tonConnectSender';
|
package/src/types/Master.ts
CHANGED
|
@@ -8,7 +8,10 @@ export type MasterConstants = {
|
|
|
8
8
|
ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: bigint,
|
|
9
9
|
ASSET_LIQUIDATION_THRESHOLD_SCALE: bigint,
|
|
10
10
|
ASSET_LIQUIDATION_BONUS_SCALE: bigint,
|
|
11
|
-
ASSET_ORIGINATION_FEE_SCALE: bigint
|
|
11
|
+
ASSET_ORIGINATION_FEE_SCALE: bigint,
|
|
12
|
+
ASSET_SRATE_SCALE: bigint,
|
|
13
|
+
ASSET_BRATE_SCALE: bigint,
|
|
14
|
+
COLLATERAL_WORTH_THRESHOLD: bigint,
|
|
12
15
|
};
|
|
13
16
|
|
|
14
17
|
export type PoolAssetsConfig = PoolAssetConfig[];
|
|
@@ -86,7 +89,7 @@ export type AssetData = {
|
|
|
86
89
|
balance: bigint;
|
|
87
90
|
trackingSupplyIndex: bigint;
|
|
88
91
|
trackingBorrowIndex: bigint;
|
|
89
|
-
awaitedSupply
|
|
92
|
+
awaitedSupply: bigint;
|
|
90
93
|
};
|
|
91
94
|
|
|
92
95
|
export type AssetInterest = {
|
package/src/types/User.ts
CHANGED
|
@@ -74,6 +74,14 @@ export type UserRewards = {
|
|
|
74
74
|
trackingAccured: bigint;
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
+
export type HealthParamsArgs = {
|
|
78
|
+
assetsData: ExtendedAssetsData;
|
|
79
|
+
assetsConfig: ExtendedAssetsConfig;
|
|
80
|
+
principals: Dictionary<bigint, bigint>;
|
|
81
|
+
prices: Dictionary<bigint, bigint>;
|
|
82
|
+
poolConfig: PoolConfig;
|
|
83
|
+
}
|
|
84
|
+
|
|
77
85
|
export enum BalanceChangeType {
|
|
78
86
|
Borrow = 0,
|
|
79
87
|
Repay = 1,
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { PoolAssetConfig } from "../types/Master";
|
|
2
|
+
import { ASSET_ID } from '../constants/assets';
|
|
2
3
|
|
|
3
4
|
export function isTonAsset(asset: PoolAssetConfig) {
|
|
4
5
|
return asset.name === 'TON';
|
|
5
6
|
}
|
|
6
7
|
|
|
8
|
+
export function isTonAssetId(assetId: bigint) {
|
|
9
|
+
return assetId === ASSET_ID.TON;
|
|
10
|
+
}
|