@evaafi/sdk 0.6.0-a → 0.6.1

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.
@@ -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 poolConfig: PoolConfig;
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.poolConfig = parameters?.poolConfig ?? MAINNET_POOL_CONFIG;
129
- this.address = this.poolConfig.masterAddress;
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.poolConfig.lendingCode), this.poolConfig);
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 (!isTonAsset(parameters.asset)) {
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.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
378
- if (this._data.upgradeConfig.masterCodeVersion !== this.poolConfig.masterVersion) {
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.poolConfig.masterVersion}, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`,
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.poolConfig);
398
+ return await getPrices(endpoints, this._poolConfig);
392
399
  } else {
393
- return await getPrices(undefined, this.poolConfig);
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';
@@ -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[];
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,
@@ -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
+ }