@evaafi/sdk 0.5.3 → 0.5.4

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.
@@ -0,0 +1,5 @@
1
+ import { PoolConfig } from "../types/Master";
2
+ export declare const MAINNET_POOL_CONFIG: PoolConfig;
3
+ export declare const TESTNET_POOL_CONFIG: PoolConfig;
4
+ export declare const TESTNET_LP_POOL_CONFIG: PoolConfig;
5
+ export declare const MAINNET_LP_POOL_CONFIG: PoolConfig;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAINNET_LP_POOL_CONFIG = exports.TESTNET_LP_POOL_CONFIG = exports.TESTNET_POOL_CONFIG = exports.MAINNET_POOL_CONFIG = void 0;
4
+ const assets_1 = require("./assets");
5
+ const general_1 = require("./general");
6
+ exports.MAINNET_POOL_CONFIG = {
7
+ masterAddress: general_1.EVAA_MASTER_MAINNET,
8
+ masterVersion: general_1.MAINNET_VERSION,
9
+ masterConstants: general_1.MASTER_CONSTANTS,
10
+ nftId: general_1.MAIN_POOL_NFT_ID,
11
+ poolAssetsConfig: [
12
+ assets_1.TON_MAINNET,
13
+ assets_1.JUSDT_MAINNET,
14
+ assets_1.JUSDC_MAINNET,
15
+ assets_1.STTON_MAINNET,
16
+ assets_1.TSTON_MAINNET,
17
+ assets_1.USDT_MAINNET
18
+ ],
19
+ lendingCode: general_1.LENDING_CODE
20
+ };
21
+ exports.TESTNET_POOL_CONFIG = {
22
+ masterAddress: general_1.EVAA_MASTER_TESTNET,
23
+ masterVersion: general_1.TESTNET_VERSION,
24
+ masterConstants: general_1.MASTER_CONSTANTS,
25
+ nftId: general_1.MAIN_POOL_NFT_ID,
26
+ poolAssetsConfig: [
27
+ assets_1.TON_MAINNET,
28
+ assets_1.JUSDT_TESTNET,
29
+ assets_1.JUSDC_TESTNET,
30
+ assets_1.STTON_TESTNET
31
+ ],
32
+ lendingCode: general_1.LENDING_CODE
33
+ };
34
+ exports.TESTNET_LP_POOL_CONFIG = {
35
+ masterAddress: general_1.EVAA_LP_TESTNET,
36
+ masterVersion: general_1.EVAA_LP_TESTNET_VERSION,
37
+ masterConstants: general_1.MASTER_CONSTANTS,
38
+ nftId: general_1.LP_POOL_NFT_ID,
39
+ poolAssetsConfig: [
40
+ assets_1.TON_MAINNET,
41
+ assets_1.JUSDT_TESTNET,
42
+ assets_1.JUSDC_TESTNET,
43
+ assets_1.STTON_TESTNET
44
+ ],
45
+ lendingCode: general_1.LENDING_CODE
46
+ };
47
+ exports.MAINNET_LP_POOL_CONFIG = {
48
+ masterAddress: general_1.EVAA_LP_MAINNET,
49
+ masterVersion: general_1.EVAA_LP_MAINNET_VERSION,
50
+ masterConstants: general_1.MASTER_CONSTANTS,
51
+ nftId: general_1.LP_POOL_NFT_ID,
52
+ poolAssetsConfig: [
53
+ assets_1.TON_MAINNET,
54
+ assets_1.USDT_MAINNET,
55
+ assets_1.TONUSDT_DEDUST_MAINNET,
56
+ assets_1.TON_STORM_MAINNET,
57
+ assets_1.USDT_STORM_MAINNET,
58
+ ],
59
+ lendingCode: general_1.LENDING_CODE
60
+ };
@@ -1,14 +1,14 @@
1
1
  import { Address, Cell, Contract, ContractProvider, OpenedContract, Sender } from '@ton/core';
2
2
  import { Maybe } from '@ton/core/dist/utils/maybe';
3
3
  import { EvaaUser } from './UserContract';
4
- import { MasterData } from '../types/Master';
4
+ import { MasterData, PoolAssetConfig, PoolConfig, PoolJettonAssetConfig } from '../types/Master';
5
5
  /**
6
6
  * Parameters for the Evaa contract
7
7
  * @property testnet - true for testnet, false for mainnet
8
8
  * @property debug - true to enable debug mode (optional)
9
9
  */
10
10
  export type EvaaParameters = {
11
- testnet: boolean;
11
+ poolConfig: PoolConfig;
12
12
  debug?: boolean;
13
13
  };
14
14
  /**
@@ -33,25 +33,26 @@ export type SupplyBaseParameters = {
33
33
  includeUserCode: boolean;
34
34
  amount: bigint;
35
35
  userAddress: Address;
36
- assetID: bigint;
37
36
  };
38
37
  /**
39
38
  * Parameters for the TON supply message
40
39
  * @property type - 'ton'
41
40
  */
42
41
  export type TonSupplyParameters = SupplyBaseParameters & {
43
- type: 'ton';
42
+ asset: PoolAssetConfig;
44
43
  };
45
44
  /**
46
45
  * Parameters for the jetton supply message
47
46
  * @property type - 'jetton'
48
47
  */
49
48
  export type JettonSupplyParameters = SupplyBaseParameters & JettonMessageParameters & {
50
- type: 'jetton';
49
+ asset: PoolJettonAssetConfig & PoolAssetConfig;
51
50
  };
51
+ export type SupplyParameters = TonSupplyParameters | JettonSupplyParameters;
52
52
  /**
53
53
  * Parameters for the withdraw message
54
54
  * @property queryID - unique query ID
55
+ * * @property assetID - asset ID
55
56
  * @property assetID - asset ID
56
57
  * @property amount - amount to withdraw
57
58
  * @property userAddress - user address
@@ -60,11 +61,11 @@ export type JettonSupplyParameters = SupplyBaseParameters & JettonMessageParamet
60
61
  */
61
62
  export type WithdrawParameters = {
62
63
  queryID: bigint;
63
- assetID: bigint;
64
64
  amount: bigint;
65
65
  userAddress: Address;
66
66
  includeUserCode: boolean;
67
67
  priceData: Cell;
68
+ asset: PoolAssetConfig;
68
69
  };
69
70
  /**
70
71
  * Base data for liquidation. Can be obtained from the user contract liquidationParameters getter
@@ -101,21 +102,21 @@ export type LiquidationBaseParameters = LiquidationBaseData & {
101
102
  * @property type - 'ton'
102
103
  */
103
104
  export type TonLiquidationParameters = LiquidationBaseParameters & {
104
- type: 'ton';
105
+ asset: PoolAssetConfig;
105
106
  };
106
107
  /**
107
108
  * Parameters for the jetton liquidation message
108
109
  * @property type - 'jetton'
109
110
  */
110
111
  export type JettonLiquidationParameters = LiquidationBaseParameters & JettonMessageParameters & {
111
- type: 'jetton';
112
+ asset: PoolAssetConfig & PoolJettonAssetConfig;
112
113
  };
113
114
  /**
114
115
  * Evaa master contract wrapper
115
116
  */
116
117
  export declare class Evaa implements Contract {
117
118
  readonly address: Address;
118
- readonly network: 'mainnet' | 'testnet';
119
+ private poolConfig;
119
120
  private readonly debug?;
120
121
  private _data?;
121
122
  private lastSync;
@@ -128,7 +129,7 @@ export declare class Evaa implements Contract {
128
129
  * Create supply message
129
130
  * @returns supply message as a cell
130
131
  */
131
- createSupplyMessage(parameters: TonSupplyParameters | JettonSupplyParameters): Cell;
132
+ createSupplyMessage(parameters: SupplyParameters): Cell;
132
133
  /**
133
134
  * Create withdraw message
134
135
  * @returns withdraw message as a cell
@@ -144,7 +145,7 @@ export declare class Evaa implements Contract {
144
145
  * @param userAddress
145
146
  * @returns user contract address
146
147
  */
147
- calculateUserSCAddr(userAddress: Address): Address;
148
+ calculateUserSCAddr(userAddress: Address, lendingCode: Cell): Address;
148
149
  /**
149
150
  * Open user contract wrapper
150
151
  * @param userAddress
@@ -168,4 +169,5 @@ export declare class Evaa implements Contract {
168
169
  * Sync master contract data
169
170
  */
170
171
  getSync(provider: ContractProvider): Promise<void>;
172
+ getPrices(provider: ContractProvider, endpoints?: string[]): Promise<import("..").PriceData>;
171
173
  }
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Evaa = void 0;
4
4
  const core_1 = require("@ton/core");
5
- const constants_1 = require("../constants");
5
+ const general_1 = require("../constants/general");
6
6
  const UserContract_1 = require("./UserContract");
7
7
  const parser_1 = require("../api/parser");
8
8
  const JettonWallet_1 = require("./JettonWallet");
9
9
  const userJettonWallet_1 = require("../utils/userJettonWallet");
10
+ const __1 = require("..");
10
11
  /**
11
12
  * Evaa master contract wrapper
12
13
  */
@@ -16,13 +17,9 @@ class Evaa {
16
17
  * @param parameters Evaa contract parameters
17
18
  */
18
19
  constructor(parameters) {
19
- this.address = constants_1.EVAA_MASTER_MAINNET;
20
- this.network = 'mainnet';
21
20
  this.lastSync = 0;
22
- if (parameters?.testnet) {
23
- this.network = 'testnet';
24
- this.address = constants_1.EVAA_MASTER_TESTNET;
25
- }
21
+ this.poolConfig = parameters?.poolConfig ?? __1.MAINNET_POOL_CONFIG;
22
+ this.address = this.poolConfig.masterAddress;
26
23
  this.debug = parameters?.debug;
27
24
  }
28
25
  /**
@@ -30,18 +27,19 @@ class Evaa {
30
27
  * @returns supply message as a cell
31
28
  */
32
29
  createSupplyMessage(parameters) {
33
- if (parameters.type === 'jetton') {
30
+ if ('jettonMasterAddress' in parameters.asset) {
31
+ const jettonParams = parameters;
34
32
  return (0, core_1.beginCell)()
35
- .storeUint(constants_1.OPCODES.JETTON_TRANSFER, 32)
33
+ .storeUint(general_1.OPCODES.JETTON_TRANSFER, 32)
36
34
  .storeUint(parameters.queryID, 64)
37
35
  .storeCoins(parameters.amount)
38
36
  .storeAddress(this.address)
39
- .storeAddress(parameters.responseAddress ?? parameters.userAddress)
37
+ .storeAddress(jettonParams.responseAddress ?? parameters.userAddress)
40
38
  .storeBit(0)
41
- .storeCoins(parameters.forwardAmount ?? constants_1.FEES.SUPPLY_JETTON_FWD)
39
+ .storeCoins(jettonParams.forwardAmount ?? general_1.FEES.SUPPLY_JETTON_FWD)
42
40
  .storeBit(1)
43
41
  .storeRef((0, core_1.beginCell)()
44
- .storeUint(constants_1.OPCODES.SUPPLY, 32)
42
+ .storeUint(general_1.OPCODES.SUPPLY, 32)
45
43
  .storeInt(parameters.includeUserCode ? -1 : 0, 2)
46
44
  .storeAddress(parameters.userAddress)
47
45
  /* Will be in v6
@@ -52,7 +50,7 @@ class Evaa {
52
50
  }
53
51
  else {
54
52
  return (0, core_1.beginCell)()
55
- .storeUint(constants_1.OPCODES.SUPPLY, 32)
53
+ .storeUint(general_1.OPCODES.SUPPLY, 32)
56
54
  .storeUint(parameters.queryID, 64)
57
55
  .storeInt(parameters.includeUserCode ? -1 : 0, 2)
58
56
  .storeUint(parameters.amount, 64)
@@ -69,9 +67,9 @@ class Evaa {
69
67
  */
70
68
  createWithdrawMessage(parameters) {
71
69
  return (0, core_1.beginCell)()
72
- .storeUint(constants_1.OPCODES.WITHDRAW, 32)
70
+ .storeUint(general_1.OPCODES.WITHDRAW, 32)
73
71
  .storeUint(parameters.queryID, 64)
74
- .storeUint(parameters.assetID, 256)
72
+ .storeUint(parameters.asset.assetId, 256)
75
73
  .storeUint(parameters.amount, 64)
76
74
  .storeAddress(parameters.userAddress)
77
75
  .storeInt(parameters.includeUserCode ? -1 : 0, 2)
@@ -86,18 +84,19 @@ class Evaa {
86
84
  * @returns liquidation message as a cell
87
85
  */
88
86
  createLiquidationMessage(parameters) {
89
- if (parameters.type === 'jetton') {
87
+ if ('jettonMasterAddress' in parameters.asset) {
88
+ const jettonParams = parameters;
90
89
  return (0, core_1.beginCell)()
91
- .storeUint(constants_1.OPCODES.JETTON_TRANSFER, 32)
90
+ .storeUint(general_1.OPCODES.JETTON_TRANSFER, 32)
92
91
  .storeUint(parameters.queryID, 64)
93
92
  .storeCoins(parameters.liquidationAmount)
94
93
  .storeAddress(this.address)
95
- .storeAddress(parameters.responseAddress ?? parameters.liquidatorAddress)
94
+ .storeAddress(jettonParams.responseAddress ?? parameters.liquidatorAddress)
96
95
  .storeBit(0)
97
- .storeCoins(parameters.forwardAmount ?? constants_1.FEES.LIQUIDATION_JETTON_FWD)
96
+ .storeCoins(jettonParams.forwardAmount ?? general_1.FEES.LIQUIDATION_JETTON_FWD)
98
97
  .storeBit(1)
99
98
  .storeRef((0, core_1.beginCell)()
100
- .storeUint(constants_1.OPCODES.LIQUIDATE, 32)
99
+ .storeUint(general_1.OPCODES.LIQUIDATE, 32)
101
100
  .storeAddress(parameters.borrowerAddress)
102
101
  .storeAddress(parameters.liquidatorAddress)
103
102
  .storeUint(parameters.collateralAsset, 256)
@@ -112,7 +111,7 @@ class Evaa {
112
111
  }
113
112
  else {
114
113
  return (0, core_1.beginCell)()
115
- .storeUint(constants_1.OPCODES.LIQUIDATE, 32)
114
+ .storeUint(general_1.OPCODES.LIQUIDATE, 32)
116
115
  .storeUint(parameters.queryID, 64)
117
116
  .storeAddress(parameters.borrowerAddress)
118
117
  .storeAddress(parameters.liquidatorAddress)
@@ -129,7 +128,7 @@ class Evaa {
129
128
  * @param userAddress
130
129
  * @returns user contract address
131
130
  */
132
- calculateUserSCAddr(userAddress) {
131
+ calculateUserSCAddr(userAddress, lendingCode) {
133
132
  const lendingData = (0, core_1.beginCell)()
134
133
  .storeAddress(this.address)
135
134
  .storeAddress(userAddress)
@@ -138,7 +137,7 @@ class Evaa {
138
137
  .endCell();
139
138
  const stateInit = (0, core_1.beginCell)()
140
139
  .store((0, core_1.storeStateInit)({
141
- code: constants_1.LENDING_CODE,
140
+ code: lendingCode,
142
141
  data: lendingData,
143
142
  }))
144
143
  .endCell();
@@ -150,7 +149,7 @@ class Evaa {
150
149
  * @returns user contract
151
150
  */
152
151
  openUserContract(userAddress) {
153
- return UserContract_1.EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress), this.network === 'testnet');
152
+ return UserContract_1.EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this.poolConfig.lendingCode), this.poolConfig);
154
153
  }
155
154
  getOpenedUserContract(provider, userAddress) {
156
155
  return provider.open(this.openUserContract(userAddress));
@@ -163,11 +162,11 @@ class Evaa {
163
162
  }
164
163
  async sendSupply(provider, via, value, parameters) {
165
164
  const message = this.createSupplyMessage(parameters);
166
- if (parameters.type === 'jetton') {
165
+ if ('jettonMasterAddress' in parameters.asset) {
167
166
  if (!via.address) {
168
167
  throw Error('Via address is required for jetton supply');
169
168
  }
170
- const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, parameters.assetID, this.network)));
169
+ const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, parameters.asset)));
171
170
  await jettonWallet.sendTransfer(via, value, message);
172
171
  }
173
172
  else {
@@ -188,11 +187,11 @@ class Evaa {
188
187
  }
189
188
  async sendLiquidation(provider, via, value, parameters) {
190
189
  const message = this.createLiquidationMessage(parameters);
191
- if (parameters.type === 'jetton') {
190
+ if ('jettonMasterAddress' in parameters.asset) {
192
191
  if (!via.address) {
193
192
  throw Error('Via address is required for jetton liquidation');
194
193
  }
195
- const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, parameters.loanAsset, this.network)));
194
+ const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, parameters.asset)));
196
195
  await jettonWallet.sendTransfer(via, value, message);
197
196
  }
198
197
  else {
@@ -212,7 +211,7 @@ class Evaa {
212
211
  value,
213
212
  sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
214
213
  body: (0, core_1.beginCell)()
215
- .storeUint(constants_1.OPCODES.ONCHAIN_GETTER, 32)
214
+ .storeUint(general_1.OPCODES.ONCHAIN_GETTER, 32)
216
215
  .storeUint(queryID, 64)
217
216
  .storeRef(forwardPayload)
218
217
  .endCell(),
@@ -224,12 +223,9 @@ class Evaa {
224
223
  async getSync(provider) {
225
224
  const state = (await provider.getState()).state;
226
225
  if (state.type === 'active') {
227
- this._data = (0, parser_1.parseMasterData)(state.data.toString('base64'), this.network === 'testnet');
228
- if (this.network === 'testnet' && this._data.upgradeConfig.masterCodeVersion !== constants_1.TESTNET_VERSION) {
229
- throw Error(`Outdated SDK version. It supports only master code version ${constants_1.TESTNET_VERSION} on testnet, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`);
230
- }
231
- if (this.network === 'mainnet' && this._data.upgradeConfig.masterCodeVersion !== constants_1.MAINNET_VERSION) {
232
- throw Error(`Outdated SDK version. It supports only master code version ${constants_1.MAINNET_VERSION} on mainnet, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`);
226
+ this._data = (0, parser_1.parseMasterData)(state.data.toString('base64'), this.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
227
+ if (this._data.upgradeConfig.masterCodeVersion !== this.poolConfig.masterVersion) {
228
+ throw Error(`Outdated SDK pool version. It supports only master code version ${this.poolConfig.masterVersion}, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`);
233
229
  }
234
230
  this.lastSync = Math.floor(Date.now() / 1000);
235
231
  }
@@ -237,5 +233,13 @@ class Evaa {
237
233
  throw Error('Master contract is not active');
238
234
  }
239
235
  }
236
+ async getPrices(provider, endpoints) {
237
+ if ((endpoints?.length ?? 0) > 0) {
238
+ return await (0, __1.getPricesByNft)(this.poolConfig.nftId, endpoints);
239
+ }
240
+ else {
241
+ return await (0, __1.getPricesByNft)(this.poolConfig.nftId);
242
+ }
243
+ }
240
244
  }
241
245
  exports.Evaa = Evaa;
@@ -1,24 +1,23 @@
1
1
  import { Address, Cell, Contract, ContractProvider, Dictionary, Sender } from '@ton/core';
2
2
  import { UserData, UserLiteData } from '../types/User';
3
- import { AssetConfig, ExtendedAssetData } from '../types/Master';
3
+ import { ExtendedAssetsConfig, ExtendedAssetsData, PoolConfig } from '../types/Master';
4
4
  import { LiquidationBaseData } from './MasterContract';
5
5
  /**
6
6
  * User contract wrapper
7
7
  */
8
8
  export declare class EvaaUser implements Contract {
9
9
  readonly address: Address;
10
- readonly testnet: boolean;
11
10
  private lastSync;
12
11
  private _liteData?;
13
12
  private _data?;
13
+ private poolConfig;
14
14
  /**
15
15
  * Create user contract wrapper from address
16
16
  * @param address user contract address
17
- * @param testnet testnet flag
18
17
  */
19
- static createFromAddress(address: Address, testnet?: boolean): EvaaUser;
18
+ static createFromAddress(address: Address, poolConfig?: PoolConfig): EvaaUser;
20
19
  private constructor();
21
- getSyncLite(provider: ContractProvider, assetsData: Dictionary<bigint, ExtendedAssetData>, assetsConfig: Dictionary<bigint, AssetConfig>): Promise<void>;
20
+ getSyncLite(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig): Promise<void>;
22
21
  /**
23
22
  * Calculate full user data from lite data and prices
24
23
  * @param assetsData assets data
@@ -26,13 +25,13 @@ export declare class EvaaUser implements Contract {
26
25
  * @param prices prices
27
26
  * @returns true if user data was calculated
28
27
  */
29
- calculateUserData(assetsData: Dictionary<bigint, ExtendedAssetData>, assetsConfig: Dictionary<bigint, AssetConfig>, prices: Dictionary<bigint, bigint>): boolean;
28
+ calculateUserData(assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>): boolean;
30
29
  /**
31
30
  * Open user contract wrapper
32
31
  * @param forwardPayload - payload that will be forwarded to the address which requested the data
33
32
  */
34
33
  sendOnchainGetter(provider: ContractProvider, via: Sender, value: bigint, queryID: bigint, forwardPayload: Cell): Promise<void>;
35
- getSync(provider: ContractProvider, assetsData: Dictionary<bigint, ExtendedAssetData>, assetsConfig: Dictionary<bigint, AssetConfig>, prices: Dictionary<bigint, bigint>): Promise<void>;
34
+ getSync(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>): Promise<void>;
36
35
  /**
37
36
  * Get user contract lite data
38
37
  * @returns user lite data if available, otherwise undefined
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EvaaUser = void 0;
4
4
  const core_1 = require("@ton/core");
5
5
  const parser_1 = require("../api/parser");
6
- const constants_1 = require("../constants");
6
+ const general_1 = require("../constants/general");
7
+ const pools_1 = require("../constants/pools");
8
+ const assets_1 = require("../constants/assets");
7
9
  /**
8
10
  * User contract wrapper
9
11
  */
@@ -11,21 +13,19 @@ class EvaaUser {
11
13
  /**
12
14
  * Create user contract wrapper from address
13
15
  * @param address user contract address
14
- * @param testnet testnet flag
15
16
  */
16
- static createFromAddress(address, testnet = false) {
17
- return new EvaaUser(address, testnet);
17
+ static createFromAddress(address, poolConfig = pools_1.MAINNET_POOL_CONFIG) {
18
+ return new EvaaUser(address, poolConfig);
18
19
  }
19
- constructor(address, testnet = false) {
20
- this.testnet = false;
20
+ constructor(address, poolConfig = pools_1.MAINNET_POOL_CONFIG) {
21
21
  this.lastSync = 0;
22
22
  this.address = address;
23
- this.testnet = testnet;
23
+ this.poolConfig = poolConfig;
24
24
  }
25
25
  async getSyncLite(provider, assetsData, assetsConfig) {
26
26
  const state = (await provider.getState()).state;
27
27
  if (state.type === 'active') {
28
- this._liteData = (0, parser_1.parseUserLiteData)(state.data.toString('base64'), assetsData, assetsConfig, this.testnet);
28
+ this._liteData = (0, parser_1.parseUserLiteData)(state.data.toString('base64'), assetsData, assetsConfig, this.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
29
29
  this.lastSync = Math.floor(Date.now() / 1000);
30
30
  }
31
31
  else {
@@ -42,7 +42,7 @@ class EvaaUser {
42
42
  */
43
43
  calculateUserData(assetsData, assetsConfig, prices) {
44
44
  if (this._liteData) {
45
- this._data = (0, parser_1.parseUserData)(this._liteData, assetsData, assetsConfig, prices, this.testnet);
45
+ this._data = (0, parser_1.parseUserData)(this._liteData, assetsData, assetsConfig, prices, this.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
46
46
  return true;
47
47
  }
48
48
  return false;
@@ -56,7 +56,7 @@ class EvaaUser {
56
56
  value,
57
57
  sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
58
58
  body: (0, core_1.beginCell)()
59
- .storeCoins(BigInt(constants_1.OPCODES.ONCHAIN_GETTER))
59
+ .storeCoins(BigInt(general_1.OPCODES.ONCHAIN_GETTER))
60
60
  .storeUint(queryID, 64)
61
61
  .storeRef(forwardPayload)
62
62
  .endCell(),
@@ -65,8 +65,8 @@ class EvaaUser {
65
65
  async getSync(provider, assetsData, assetsConfig, prices) {
66
66
  const state = (await provider.getState()).state;
67
67
  if (state.type === 'active') {
68
- this._liteData = (0, parser_1.parseUserLiteData)(state.data.toString('base64'), assetsData, assetsConfig, this.testnet);
69
- this._data = (0, parser_1.parseUserData)(this._liteData, assetsData, assetsConfig, prices, this.testnet);
68
+ this._liteData = (0, parser_1.parseUserLiteData)(state.data.toString('base64'), assetsData, assetsConfig, this.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
69
+ this._data = (0, parser_1.parseUserData)(this._liteData, assetsData, assetsConfig, prices, this.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
70
70
  this.lastSync = Math.floor(Date.now() / 1000);
71
71
  }
72
72
  else {
@@ -111,7 +111,7 @@ class EvaaUser {
111
111
  collateralAsset: this._data.liquidationData.greatestCollateralAsset,
112
112
  minCollateralAmount: this._data.liquidationData.minCollateralAmount,
113
113
  liquidationAmount: this._data.liquidationData.liquidationAmount,
114
- tonLiquidation: this._data.liquidationData.greatestLoanAsset === constants_1.MAINNET_ASSETS_ID.TON,
114
+ tonLiquidation: this._data.liquidationData.greatestLoanAsset === assets_1.TON_MAINNET.assetId,
115
115
  };
116
116
  }
117
117
  }
package/dist/index.d.ts CHANGED
@@ -1,12 +1,15 @@
1
1
  export { mulFactor, mulDiv, bigIntMin, bigIntMax, calculatePresentValue, calculateCurrentRates, calculateAssetData, calculateAssetInterest, getAvailableToBorrow, presentValue, calculateLiquidationData, } from './api/math';
2
2
  export { createAssetData, createAssetConfig, parseMasterData, parseUserData, parseUserLiteData } from './api/parser';
3
- export { getPrices } from './api/prices';
3
+ export { getPricesByNft } from './api/prices';
4
4
  export { JettonWallet } from './contracts/JettonWallet';
5
5
  export { EvaaParameters, JettonMessageParameters, TonSupplyParameters, JettonSupplyParameters, WithdrawParameters, LiquidationBaseData, TonLiquidationParameters, JettonLiquidationParameters, Evaa, } from './contracts/MasterContract';
6
6
  export { EvaaUser } from './contracts/UserContract';
7
7
  export { PriceData } from './types/Common';
8
- export { UpgradeConfig, AssetConfig, MasterConfig, AssetData, AssetInterest, AssetApy, ExtendedAssetData, MasterData, } from './types/Master';
8
+ export { UpgradeConfig, AssetConfig, MasterConfig, AssetData, AssetInterest, AssetApy, ExtendedAssetData, MasterData, PoolConfig, ExtendedAssetsData, ExtendedAssetsConfig, PoolAssetConfig, PoolAssetsConfig, } from './types/Master';
9
9
  export { BalanceType, UserBalance, UserLiqudationData, LiquidableData, NonLiquidableData, LiquidationData, UserDataInactive, UserDataActive, UserData, BalanceChangeType } from './types/User';
10
- export { EVAA_MASTER_MAINNET, MAINNET_VERSION, EVAA_MASTER_TESTNET, TESTNET_VERSION, JETTON_MASTER_ADDRESSES, MASTER_CONSTANTS, LENDING_CODE, OPCODES, FEES, } from './constants';
10
+ export { EVAA_MASTER_MAINNET, MAINNET_VERSION, EVAA_MASTER_TESTNET, TESTNET_VERSION, LENDING_CODE, OPCODES, FEES, MASTER_CONSTANTS } from './constants/general';
11
+ export { MAINNET_POOL_CONFIG, TESTNET_POOL_CONFIG, MAINNET_LP_POOL_CONFIG, TESTNET_LP_POOL_CONFIG } from './constants/pools';
12
+ export { TON_MAINNET, USDT_MAINNET, TONUSDT_DEDUST_MAINNET, TON_STORM_MAINNET, USDT_STORM_MAINNET, JUSDT_MAINNET, JUSDC_MAINNET, STTON_MAINNET, TSTON_MAINNET, JUSDT_TESTNET, JUSDC_TESTNET, STTON_TESTNET, } from './constants/assets';
13
+ export * from './constants/assets';
11
14
  export { getLastSentBoc, getTonConnectSender } from './utils/tonConnectSender';
12
15
  export { getUserJettonWallet } from './utils/userJettonWallet';
package/dist/index.js CHANGED
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserJettonWallet = exports.getTonConnectSender = exports.getLastSentBoc = exports.FEES = exports.OPCODES = exports.LENDING_CODE = exports.MASTER_CONSTANTS = exports.JETTON_MASTER_ADDRESSES = exports.TESTNET_VERSION = exports.EVAA_MASTER_TESTNET = exports.MAINNET_VERSION = exports.EVAA_MASTER_MAINNET = exports.BalanceChangeType = exports.BalanceType = exports.EvaaUser = exports.Evaa = exports.JettonWallet = exports.getPrices = exports.parseUserLiteData = exports.parseUserData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMax = exports.bigIntMin = exports.mulDiv = exports.mulFactor = void 0;
17
+ exports.getUserJettonWallet = exports.getTonConnectSender = exports.getLastSentBoc = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.USDT_MAINNET = exports.TON_MAINNET = exports.TESTNET_LP_POOL_CONFIG = exports.MAINNET_LP_POOL_CONFIG = exports.TESTNET_POOL_CONFIG = exports.MAINNET_POOL_CONFIG = exports.MASTER_CONSTANTS = exports.FEES = exports.OPCODES = exports.LENDING_CODE = exports.TESTNET_VERSION = exports.EVAA_MASTER_TESTNET = exports.MAINNET_VERSION = exports.EVAA_MASTER_MAINNET = exports.BalanceChangeType = exports.BalanceType = exports.EvaaUser = exports.Evaa = exports.JettonWallet = exports.getPricesByNft = exports.parseUserLiteData = exports.parseUserData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMax = exports.bigIntMin = exports.mulDiv = exports.mulFactor = void 0;
4
18
  // Math
5
19
  var math_1 = require("./api/math");
6
20
  Object.defineProperty(exports, "mulFactor", { enumerable: true, get: function () { return math_1.mulFactor; } });
@@ -23,7 +37,7 @@ Object.defineProperty(exports, "parseUserData", { enumerable: true, get: functio
23
37
  Object.defineProperty(exports, "parseUserLiteData", { enumerable: true, get: function () { return parser_1.parseUserLiteData; } });
24
38
  // Prices
25
39
  var prices_1 = require("./api/prices");
26
- Object.defineProperty(exports, "getPrices", { enumerable: true, get: function () { return prices_1.getPrices; } });
40
+ Object.defineProperty(exports, "getPricesByNft", { enumerable: true, get: function () { return prices_1.getPricesByNft; } });
27
41
  // Contracts' wrappers
28
42
  var JettonWallet_1 = require("./contracts/JettonWallet");
29
43
  Object.defineProperty(exports, "JettonWallet", { enumerable: true, get: function () { return JettonWallet_1.JettonWallet; } });
@@ -35,16 +49,34 @@ var User_1 = require("./types/User");
35
49
  Object.defineProperty(exports, "BalanceType", { enumerable: true, get: function () { return User_1.BalanceType; } });
36
50
  Object.defineProperty(exports, "BalanceChangeType", { enumerable: true, get: function () { return User_1.BalanceChangeType; } });
37
51
  // Constants
38
- var constants_1 = require("./constants");
39
- Object.defineProperty(exports, "EVAA_MASTER_MAINNET", { enumerable: true, get: function () { return constants_1.EVAA_MASTER_MAINNET; } });
40
- Object.defineProperty(exports, "MAINNET_VERSION", { enumerable: true, get: function () { return constants_1.MAINNET_VERSION; } });
41
- Object.defineProperty(exports, "EVAA_MASTER_TESTNET", { enumerable: true, get: function () { return constants_1.EVAA_MASTER_TESTNET; } });
42
- Object.defineProperty(exports, "TESTNET_VERSION", { enumerable: true, get: function () { return constants_1.TESTNET_VERSION; } });
43
- Object.defineProperty(exports, "JETTON_MASTER_ADDRESSES", { enumerable: true, get: function () { return constants_1.JETTON_MASTER_ADDRESSES; } });
44
- Object.defineProperty(exports, "MASTER_CONSTANTS", { enumerable: true, get: function () { return constants_1.MASTER_CONSTANTS; } });
45
- Object.defineProperty(exports, "LENDING_CODE", { enumerable: true, get: function () { return constants_1.LENDING_CODE; } });
46
- Object.defineProperty(exports, "OPCODES", { enumerable: true, get: function () { return constants_1.OPCODES; } });
47
- Object.defineProperty(exports, "FEES", { enumerable: true, get: function () { return constants_1.FEES; } });
52
+ var general_1 = require("./constants/general");
53
+ Object.defineProperty(exports, "EVAA_MASTER_MAINNET", { enumerable: true, get: function () { return general_1.EVAA_MASTER_MAINNET; } });
54
+ Object.defineProperty(exports, "MAINNET_VERSION", { enumerable: true, get: function () { return general_1.MAINNET_VERSION; } });
55
+ Object.defineProperty(exports, "EVAA_MASTER_TESTNET", { enumerable: true, get: function () { return general_1.EVAA_MASTER_TESTNET; } });
56
+ Object.defineProperty(exports, "TESTNET_VERSION", { enumerable: true, get: function () { return general_1.TESTNET_VERSION; } });
57
+ Object.defineProperty(exports, "LENDING_CODE", { enumerable: true, get: function () { return general_1.LENDING_CODE; } });
58
+ Object.defineProperty(exports, "OPCODES", { enumerable: true, get: function () { return general_1.OPCODES; } });
59
+ Object.defineProperty(exports, "FEES", { enumerable: true, get: function () { return general_1.FEES; } });
60
+ Object.defineProperty(exports, "MASTER_CONSTANTS", { enumerable: true, get: function () { return general_1.MASTER_CONSTANTS; } });
61
+ var pools_1 = require("./constants/pools");
62
+ Object.defineProperty(exports, "MAINNET_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.MAINNET_POOL_CONFIG; } });
63
+ Object.defineProperty(exports, "TESTNET_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.TESTNET_POOL_CONFIG; } });
64
+ Object.defineProperty(exports, "MAINNET_LP_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.MAINNET_LP_POOL_CONFIG; } });
65
+ Object.defineProperty(exports, "TESTNET_LP_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.TESTNET_LP_POOL_CONFIG; } });
66
+ var assets_1 = require("./constants/assets");
67
+ Object.defineProperty(exports, "TON_MAINNET", { enumerable: true, get: function () { return assets_1.TON_MAINNET; } });
68
+ Object.defineProperty(exports, "USDT_MAINNET", { enumerable: true, get: function () { return assets_1.USDT_MAINNET; } });
69
+ Object.defineProperty(exports, "TONUSDT_DEDUST_MAINNET", { enumerable: true, get: function () { return assets_1.TONUSDT_DEDUST_MAINNET; } });
70
+ Object.defineProperty(exports, "TON_STORM_MAINNET", { enumerable: true, get: function () { return assets_1.TON_STORM_MAINNET; } });
71
+ Object.defineProperty(exports, "USDT_STORM_MAINNET", { enumerable: true, get: function () { return assets_1.USDT_STORM_MAINNET; } });
72
+ Object.defineProperty(exports, "JUSDT_MAINNET", { enumerable: true, get: function () { return assets_1.JUSDT_MAINNET; } });
73
+ Object.defineProperty(exports, "JUSDC_MAINNET", { enumerable: true, get: function () { return assets_1.JUSDC_MAINNET; } });
74
+ Object.defineProperty(exports, "STTON_MAINNET", { enumerable: true, get: function () { return assets_1.STTON_MAINNET; } });
75
+ Object.defineProperty(exports, "TSTON_MAINNET", { enumerable: true, get: function () { return assets_1.TSTON_MAINNET; } });
76
+ Object.defineProperty(exports, "JUSDT_TESTNET", { enumerable: true, get: function () { return assets_1.JUSDT_TESTNET; } });
77
+ Object.defineProperty(exports, "JUSDC_TESTNET", { enumerable: true, get: function () { return assets_1.JUSDC_TESTNET; } });
78
+ Object.defineProperty(exports, "STTON_TESTNET", { enumerable: true, get: function () { return assets_1.STTON_TESTNET; } });
79
+ __exportStar(require("./constants/assets"), exports);
48
80
  // Utils
49
81
  var tonConnectSender_1 = require("./utils/tonConnectSender");
50
82
  Object.defineProperty(exports, "getLastSentBoc", { enumerable: true, get: function () { return tonConnectSender_1.getLastSentBoc; } });
@@ -1,4 +1,32 @@
1
1
  import { Address, Cell, Dictionary } from '@ton/core';
2
+ export type MasterConstants = {
3
+ FACTOR_SCALE: bigint;
4
+ ASSET_COEFFICIENT_SCALE: bigint;
5
+ ASSET_PRICE_SCALE: bigint;
6
+ ASSET_RESERVE_FACTOR_SCALE: bigint;
7
+ ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: bigint;
8
+ ASSET_ORIGINATION_FEE_SCALE: bigint;
9
+ };
10
+ export type PoolAssetConfig = (PoolTonAssetConfig | PoolJettonAssetConfig) & {
11
+ name: string;
12
+ };
13
+ export type PoolAssetsConfig = PoolAssetConfig[];
14
+ export type PoolTonAssetConfig = {
15
+ assetId: bigint;
16
+ };
17
+ export type PoolJettonAssetConfig = {
18
+ assetId: bigint;
19
+ jettonMasterAddress: Address;
20
+ jettonWalletCode: Cell;
21
+ };
22
+ export type PoolConfig = {
23
+ masterAddress: Address;
24
+ masterVersion: number;
25
+ masterConstants: MasterConstants;
26
+ nftId: string;
27
+ poolAssetsConfig: PoolAssetsConfig;
28
+ lendingCode: Cell;
29
+ };
2
30
  export type UpgradeConfig = {
3
31
  masterCodeVersion: number;
4
32
  userCodeVersion: number;
@@ -52,12 +80,14 @@ export type AssetApy = {
52
80
  borrowApy: number;
53
81
  };
54
82
  export type ExtendedAssetData = AssetData & AssetInterest & AssetApy;
83
+ export type ExtendedAssetsData = Dictionary<bigint, ExtendedAssetData>;
84
+ export type ExtendedAssetsConfig = Dictionary<bigint, AssetConfig>;
55
85
  export type MasterData = {
56
86
  meta: string;
57
87
  upgradeConfig: UpgradeConfig;
58
88
  masterConfig: MasterConfig;
59
- assetsConfig: Dictionary<bigint, AssetConfig>;
60
- assetsData: Dictionary<bigint, ExtendedAssetData>;
89
+ assetsConfig: ExtendedAssetsConfig;
90
+ assetsData: ExtendedAssetsData;
61
91
  assetsReserves: Dictionary<bigint, bigint>;
62
92
  apy: {
63
93
  supply: Dictionary<bigint, number>;