@evaafi/sdk 0.5.1 → 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.
- package/dist/api/math.d.ts +8 -8
- package/dist/api/math.js +30 -31
- package/dist/api/parser.d.ts +4 -4
- package/dist/api/parser.js +42 -46
- package/dist/api/prices.d.ts +1 -1
- package/dist/api/prices.js +21 -25
- package/dist/constants/assets.d.ts +16 -0
- package/dist/constants/assets.js +77 -0
- package/dist/constants/general.d.ts +38 -0
- package/dist/constants/general.js +41 -0
- package/dist/constants/pools.d.ts +5 -0
- package/dist/constants/pools.js +60 -0
- package/dist/contracts/MasterContract.d.ts +13 -11
- package/dist/contracts/MasterContract.js +39 -35
- package/dist/contracts/UserContract.d.ts +6 -7
- package/dist/contracts/UserContract.js +13 -13
- package/dist/index.d.ts +7 -4
- package/dist/index.js +45 -12
- package/dist/types/Master.d.ts +32 -2
- package/dist/types/User.d.ts +4 -3
- package/dist/utils/userJettonWallet.d.ts +2 -1
- package/dist/utils/userJettonWallet.js +45 -61
- package/package.json +8 -1
- package/src/api/math.ts +38 -36
- package/src/api/parser.ts +51 -52
- package/src/api/prices.ts +23 -25
- package/src/constants/assets.ts +117 -0
- package/src/constants/general.ts +54 -0
- package/src/constants/pools.ts +63 -0
- package/src/contracts/MasterContract.ts +51 -43
- package/src/contracts/UserContract.ts +24 -21
- package/src/index.ts +33 -4
- package/src/types/Master.ts +37 -2
- package/src/types/User.ts +4 -3
- package/src/utils/userJettonWallet.ts +67 -63
- package/src/constants.ts +0 -127
package/dist/api/math.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { AssetConfig, AssetData, AssetInterest, ExtendedAssetData } from '../types/Master';
|
|
1
|
+
import { AssetConfig, AssetData, AssetInterest, ExtendedAssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants } from '../types/Master';
|
|
2
2
|
import { Dictionary } from '@ton/core';
|
|
3
3
|
import { LiquidationData, PredictHealthFactorArgs, UserBalance } from '../types/User';
|
|
4
4
|
export declare function mulFactor(decimal: bigint, a: bigint, b: bigint): bigint;
|
|
5
5
|
export declare function mulDiv(x: bigint, y: bigint, z: bigint): bigint;
|
|
6
6
|
export declare function bigIntMax(...args: bigint[]): bigint;
|
|
7
7
|
export declare function bigIntMin(...args: bigint[]): bigint;
|
|
8
|
-
export declare function calculatePresentValue(index: bigint, principalValue: bigint): bigint;
|
|
9
|
-
export declare function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData): {
|
|
8
|
+
export declare function calculatePresentValue(index: bigint, principalValue: bigint, masterConstants: MasterConstants): bigint;
|
|
9
|
+
export declare function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): {
|
|
10
10
|
sRate: bigint;
|
|
11
11
|
bRate: bigint;
|
|
12
12
|
supplyInterest: bigint;
|
|
13
13
|
borrowInterest: bigint;
|
|
14
14
|
now: bigint;
|
|
15
15
|
};
|
|
16
|
-
export declare function calculateAssetData(assetsConfigDict:
|
|
17
|
-
export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData): AssetInterest;
|
|
18
|
-
export declare function getAvailableToBorrow(assetsConfig:
|
|
19
|
-
export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint): UserBalance;
|
|
20
|
-
export declare function calculateLiquidationData(assetsConfig:
|
|
16
|
+
export declare function calculateAssetData(assetsConfigDict: ExtendedAssetsConfig, assetsDataDict: Dictionary<bigint, AssetData>, assetId: bigint, masterConstants: MasterConstants): ExtendedAssetData;
|
|
17
|
+
export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): AssetInterest;
|
|
18
|
+
export declare function getAvailableToBorrow(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): bigint;
|
|
19
|
+
export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint, masterConstants: MasterConstants): UserBalance;
|
|
20
|
+
export declare function calculateLiquidationData(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): LiquidationData;
|
|
21
21
|
export declare function predictHealthFactor(args: PredictHealthFactorArgs): number;
|
package/dist/api/math.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.predictHealthFactor = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMin = exports.bigIntMax = exports.mulDiv = exports.mulFactor = void 0;
|
|
4
|
-
const constants_1 = require("../constants");
|
|
5
4
|
const User_1 = require("../types/User");
|
|
6
5
|
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
7
6
|
function mulFactor(decimal, a, b) {
|
|
@@ -20,17 +19,17 @@ function bigIntMin(...args) {
|
|
|
20
19
|
return args.reduce((m, e) => (e < m ? e : m));
|
|
21
20
|
}
|
|
22
21
|
exports.bigIntMin = bigIntMin;
|
|
23
|
-
function calculatePresentValue(index, principalValue) {
|
|
24
|
-
return (principalValue * index) /
|
|
22
|
+
function calculatePresentValue(index, principalValue, masterConstants) {
|
|
23
|
+
return (principalValue * index) / masterConstants.FACTOR_SCALE;
|
|
25
24
|
}
|
|
26
25
|
exports.calculatePresentValue = calculatePresentValue;
|
|
27
|
-
function calculateCurrentRates(assetConfig, assetData) {
|
|
26
|
+
function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
28
27
|
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
29
28
|
const timeElapsed = now - assetData.lastAccural;
|
|
30
|
-
const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData);
|
|
29
|
+
const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData, masterConstants);
|
|
31
30
|
if (timeElapsed > 0) {
|
|
32
|
-
const updatedSRate = assetData.sRate + mulFactor(
|
|
33
|
-
const updatedBRate = assetData.bRate + mulFactor(
|
|
31
|
+
const updatedSRate = assetData.sRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.sRate, supplyInterest * timeElapsed);
|
|
32
|
+
const updatedBRate = assetData.bRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.bRate, borrowInterest * timeElapsed);
|
|
34
33
|
return {
|
|
35
34
|
sRate: updatedSRate,
|
|
36
35
|
bRate: updatedBRate,
|
|
@@ -48,13 +47,13 @@ function calculateCurrentRates(assetConfig, assetData) {
|
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
49
|
exports.calculateCurrentRates = calculateCurrentRates;
|
|
51
|
-
function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
|
|
50
|
+
function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterConstants) {
|
|
52
51
|
const config = assetsConfigDict.get(assetId);
|
|
53
52
|
const data = assetsDataDict.get(assetId);
|
|
54
53
|
if (!data || !config) {
|
|
55
54
|
throw new Error('Asset Data or Config is not accessible');
|
|
56
55
|
}
|
|
57
|
-
const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data);
|
|
56
|
+
const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data, masterConstants);
|
|
58
57
|
data.sRate = sRate || 0n;
|
|
59
58
|
data.bRate = bRate || 0n;
|
|
60
59
|
data.lastAccural = now;
|
|
@@ -67,34 +66,34 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
|
|
|
67
66
|
};
|
|
68
67
|
}
|
|
69
68
|
exports.calculateAssetData = calculateAssetData;
|
|
70
|
-
function calculateAssetInterest(assetConfig, assetData) {
|
|
71
|
-
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply);
|
|
72
|
-
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow);
|
|
69
|
+
function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
70
|
+
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
|
|
71
|
+
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
|
|
73
72
|
let utilization = 0n;
|
|
74
73
|
let supplyInterest = 0n;
|
|
75
74
|
let borrowInterest = 0n;
|
|
76
75
|
if (totalSupply !== 0n) {
|
|
77
|
-
utilization = (totalBorrow *
|
|
76
|
+
utilization = (totalBorrow * masterConstants.FACTOR_SCALE) / totalSupply;
|
|
78
77
|
}
|
|
79
78
|
if (utilization <= assetConfig.targetUtilization) {
|
|
80
79
|
borrowInterest =
|
|
81
80
|
assetConfig.baseBorrowRate +
|
|
82
|
-
mulFactor(
|
|
81
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, utilization);
|
|
83
82
|
}
|
|
84
83
|
else {
|
|
85
84
|
borrowInterest =
|
|
86
85
|
assetConfig.baseBorrowRate +
|
|
87
|
-
mulFactor(
|
|
88
|
-
mulFactor(
|
|
86
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, assetConfig.targetUtilization) +
|
|
87
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeHigh, utilization - assetConfig.targetUtilization);
|
|
89
88
|
}
|
|
90
|
-
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization,
|
|
89
|
+
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, masterConstants.FACTOR_SCALE), masterConstants.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, masterConstants.ASSET_RESERVE_FACTOR_SCALE);
|
|
91
90
|
return {
|
|
92
91
|
supplyInterest,
|
|
93
92
|
borrowInterest,
|
|
94
93
|
};
|
|
95
94
|
}
|
|
96
95
|
exports.calculateAssetInterest = calculateAssetInterest;
|
|
97
|
-
function getAvailableToBorrow(assetsConfig, assetsData, principals, prices) {
|
|
96
|
+
function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) {
|
|
98
97
|
let borrowLimit = 0n;
|
|
99
98
|
let borrowAmount = 0n;
|
|
100
99
|
for (const assetID of principals.keys()) {
|
|
@@ -103,28 +102,28 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices) {
|
|
|
103
102
|
const price = prices.get(assetID);
|
|
104
103
|
const principal = principals.get(assetID);
|
|
105
104
|
if (principal < 0) {
|
|
106
|
-
borrowAmount += (calculatePresentValue(assetData.bRate, -principal) * price) / 10n ** assetConfig.decimals;
|
|
105
|
+
borrowAmount += (calculatePresentValue(assetData.bRate, -principal, masterConstants) * price) / 10n ** assetConfig.decimals;
|
|
107
106
|
}
|
|
108
107
|
else if (principal > 0) {
|
|
109
108
|
borrowLimit +=
|
|
110
|
-
(calculatePresentValue(assetData.sRate, principal) * price * assetConfig.collateralFactor) /
|
|
109
|
+
(calculatePresentValue(assetData.sRate, principal, masterConstants) * price * assetConfig.collateralFactor) /
|
|
111
110
|
10n ** assetConfig.decimals /
|
|
112
|
-
|
|
111
|
+
masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
113
112
|
}
|
|
114
113
|
}
|
|
115
114
|
return borrowLimit - borrowAmount;
|
|
116
115
|
}
|
|
117
116
|
exports.getAvailableToBorrow = getAvailableToBorrow;
|
|
118
|
-
function presentValue(sRate, bRate, principalValue) {
|
|
117
|
+
function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
119
118
|
if (principalValue > 0) {
|
|
120
119
|
return {
|
|
121
|
-
amount: calculatePresentValue(sRate, principalValue),
|
|
120
|
+
amount: calculatePresentValue(sRate, principalValue, masterConstants),
|
|
122
121
|
type: User_1.BalanceType.supply,
|
|
123
122
|
};
|
|
124
123
|
}
|
|
125
124
|
else if (principalValue < 0) {
|
|
126
125
|
return {
|
|
127
|
-
amount: calculatePresentValue(bRate, -principalValue),
|
|
126
|
+
amount: calculatePresentValue(bRate, -principalValue, masterConstants),
|
|
128
127
|
type: User_1.BalanceType.borrow,
|
|
129
128
|
};
|
|
130
129
|
}
|
|
@@ -136,7 +135,7 @@ function presentValue(sRate, bRate, principalValue) {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
exports.presentValue = presentValue;
|
|
139
|
-
function calculateLiquidationData(assetsConfig, assetsData, principals, prices) {
|
|
138
|
+
function calculateLiquidationData(assetsConfig, assetsData, principals, prices, masterConstants) {
|
|
140
139
|
let gCollateralValue = 0n;
|
|
141
140
|
let gCollateralAsset = 0n;
|
|
142
141
|
let gLoanValue = 0n;
|
|
@@ -150,7 +149,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
150
149
|
const balance = principal > 0 ? (principal * assetData.sRate) / BigInt(1e12) : (principal * assetData.bRate) / BigInt(1e12);
|
|
151
150
|
if (balance > 0) {
|
|
152
151
|
const assetWorth = (balance * prices.get(key)) / 10n ** assetConfig.decimals;
|
|
153
|
-
totalLimit += (assetWorth * assetConfig.liquidationThreshold) /
|
|
152
|
+
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
154
153
|
if (assetWorth > gCollateralValue) {
|
|
155
154
|
gCollateralValue = assetWorth;
|
|
156
155
|
gCollateralAsset = key;
|
|
@@ -174,7 +173,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
174
173
|
const loanDecimal = 10n ** gLoanAssetConfig.decimals;
|
|
175
174
|
values.push((bigIntMax(gCollateralValue / 2n, bigIntMin(gCollateralValue, 10000000000n)) *
|
|
176
175
|
loanDecimal *
|
|
177
|
-
|
|
176
|
+
masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
178
177
|
liquidationBonus /
|
|
179
178
|
gLoanAssetPrice);
|
|
180
179
|
values.push((gLoanValue * loanDecimal) / gLoanAssetPrice);
|
|
@@ -212,7 +211,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
212
211
|
}
|
|
213
212
|
exports.calculateLiquidationData = calculateLiquidationData;
|
|
214
213
|
function predictHealthFactor(args) {
|
|
215
|
-
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices);
|
|
214
|
+
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices, args.masterConstants);
|
|
216
215
|
const tokenHash = (0, sha256BigInt_1.sha256Hash)(args.tokenSymbol);
|
|
217
216
|
const assetConfig = args.assetsConfig.get(tokenHash);
|
|
218
217
|
const assetPrice = Number(args.prices.get(tokenHash));
|
|
@@ -224,16 +223,16 @@ function predictHealthFactor(args) {
|
|
|
224
223
|
const changeType = args.balanceChangeType;
|
|
225
224
|
if (currentAmount != null && currentAmount != 0n) {
|
|
226
225
|
if (changeType == User_1.BalanceChangeType.Borrow) {
|
|
227
|
-
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(
|
|
226
|
+
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(args.masterConstants.ASSET_ORIGINATION_FEE_SCALE));
|
|
228
227
|
}
|
|
229
228
|
else if (changeType == User_1.BalanceChangeType.Repay) {
|
|
230
229
|
totalBorrow -= currentBalance;
|
|
231
230
|
}
|
|
232
231
|
else if (changeType == User_1.BalanceChangeType.Withdraw) {
|
|
233
|
-
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(
|
|
232
|
+
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
234
233
|
}
|
|
235
234
|
else if (changeType == User_1.BalanceChangeType.Supply) {
|
|
236
|
-
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(
|
|
235
|
+
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
237
236
|
}
|
|
238
237
|
}
|
|
239
238
|
if (Number(totalLimit) == 0) {
|
package/dist/api/parser.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Dictionary, DictionaryValue } from '@ton/core';
|
|
2
|
-
import { AssetConfig, AssetData,
|
|
2
|
+
import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, MasterData, PoolAssetsConfig } from '../types/Master';
|
|
3
3
|
import { UserData, UserLiteData } from '../types/User';
|
|
4
4
|
export declare function createAssetData(): DictionaryValue<AssetData>;
|
|
5
5
|
export declare function createAssetConfig(): DictionaryValue<AssetConfig>;
|
|
6
|
-
export declare function parseMasterData(masterDataBOC: string,
|
|
7
|
-
export declare function parseUserLiteData(userDataBOC: string, assetsData:
|
|
8
|
-
export declare function parseUserData(userLiteData: UserLiteData, assetsData:
|
|
6
|
+
export declare function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants): MasterData;
|
|
7
|
+
export declare function parseUserLiteData(userDataBOC: string, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants, testnet?: boolean, applyDust?: boolean): UserLiteData;
|
|
8
|
+
export declare function parseUserData(userLiteData: UserLiteData, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>, poolAssetConfig: PoolAssetsConfig, masterConstants: MasterConstants, applyDust?: boolean): UserData;
|
package/dist/api/parser.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseUserData = exports.parseUserLiteData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
5
|
const math_1 = require("./math");
|
|
7
6
|
const helpers_1 = require("./helpers");
|
|
8
7
|
const User_1 = require("../types/User");
|
|
@@ -126,8 +125,7 @@ function createAssetConfig() {
|
|
|
126
125
|
};
|
|
127
126
|
}
|
|
128
127
|
exports.createAssetConfig = createAssetConfig;
|
|
129
|
-
function parseMasterData(masterDataBOC,
|
|
130
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
128
|
+
function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
131
129
|
const masterSlice = core_1.Cell.fromBase64(masterDataBOC).beginParse();
|
|
132
130
|
const meta = masterSlice.loadRef().beginParse().loadStringTail();
|
|
133
131
|
const upgradeConfigParser = masterSlice.loadRef().beginParse();
|
|
@@ -152,9 +150,9 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
152
150
|
supply: core_1.Dictionary.empty(),
|
|
153
151
|
borrow: core_1.Dictionary.empty(),
|
|
154
152
|
};
|
|
155
|
-
for (const [tokenSymbol,
|
|
156
|
-
const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict,
|
|
157
|
-
assetsExtendedData.set(
|
|
153
|
+
for (const [tokenSymbol, asset] of Object.entries(poolAssetsConfig)) {
|
|
154
|
+
const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict, asset.assetId, masterConstants);
|
|
155
|
+
assetsExtendedData.set(asset.assetId, assetData);
|
|
158
156
|
}
|
|
159
157
|
const masterConfig = {
|
|
160
158
|
ifActive: masterConfigSlice.loadInt(8),
|
|
@@ -164,13 +162,13 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
164
162
|
walletToMaster: (0, helpers_1.loadMaybeMyRef)(masterConfigSlice),
|
|
165
163
|
};
|
|
166
164
|
masterConfigSlice.endParse();
|
|
167
|
-
for (const [_,
|
|
168
|
-
const assetData = assetsExtendedData.get(
|
|
169
|
-
const totalSupply = (0, math_1.calculatePresentValue)(assetData.sRate, assetData.totalSupply);
|
|
170
|
-
const totalBorrow = (0, math_1.calculatePresentValue)(assetData.bRate, assetData.totalBorrow);
|
|
171
|
-
assetsReserves.set(
|
|
172
|
-
apy.supply.set(
|
|
173
|
-
apy.borrow.set(
|
|
165
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
166
|
+
const assetData = assetsExtendedData.get(asset.assetId);
|
|
167
|
+
const totalSupply = (0, math_1.calculatePresentValue)(assetData.sRate, assetData.totalSupply, masterConstants);
|
|
168
|
+
const totalBorrow = (0, math_1.calculatePresentValue)(assetData.bRate, assetData.totalBorrow, masterConstants);
|
|
169
|
+
assetsReserves.set(asset.assetId, assetData.balance - totalSupply + totalBorrow);
|
|
170
|
+
apy.supply.set(asset.assetId, (1 + (Number(assetData.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1);
|
|
171
|
+
apy.borrow.set(asset.assetId, (1 + (Number(assetData.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1);
|
|
174
172
|
}
|
|
175
173
|
return {
|
|
176
174
|
meta: meta,
|
|
@@ -183,8 +181,7 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
183
181
|
};
|
|
184
182
|
}
|
|
185
183
|
exports.parseMasterData = parseMasterData;
|
|
186
|
-
function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = false, applyDust = false) {
|
|
187
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
184
|
+
function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolAssetsConfig, masterConstants, testnet = false, applyDust = false) {
|
|
188
185
|
const userSlice = core_1.Cell.fromBase64(userDataBOC).beginParse();
|
|
189
186
|
const codeVersion = userSlice.loadCoins();
|
|
190
187
|
const masterAddress = userSlice.loadAddress();
|
|
@@ -217,16 +214,16 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = fals
|
|
|
217
214
|
*/
|
|
218
215
|
userSlice.endParse();
|
|
219
216
|
const userBalances = core_1.Dictionary.empty();
|
|
220
|
-
for (const [_,
|
|
221
|
-
const assetData = assetsData.get(
|
|
222
|
-
const assetConfig = assetsConfig.get(
|
|
223
|
-
let principals = principalsDict.get(
|
|
217
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
218
|
+
const assetData = assetsData.get(asset.assetId);
|
|
219
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
220
|
+
let principals = principalsDict.get(asset.assetId) || 0n;
|
|
224
221
|
if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust)) { // abs(principals) < dust
|
|
225
222
|
principals = 0n;
|
|
226
|
-
principalsDict.set(
|
|
223
|
+
principalsDict.set(asset.assetId, 0n);
|
|
227
224
|
}
|
|
228
|
-
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals);
|
|
229
|
-
userBalances.set(
|
|
225
|
+
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
|
|
226
|
+
userBalances.set(asset.assetId, balance);
|
|
230
227
|
}
|
|
231
228
|
return {
|
|
232
229
|
type: 'active',
|
|
@@ -247,52 +244,51 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = fals
|
|
|
247
244
|
};
|
|
248
245
|
}
|
|
249
246
|
exports.parseUserLiteData = parseUserLiteData;
|
|
250
|
-
function parseUserData(userLiteData, assetsData, assetsConfig, prices,
|
|
251
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
247
|
+
function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolAssetConfig, masterConstants, applyDust = false) {
|
|
252
248
|
const withdrawalLimits = core_1.Dictionary.empty();
|
|
253
249
|
const borrowLimits = core_1.Dictionary.empty();
|
|
254
250
|
let supplyBalance = 0n;
|
|
255
251
|
let borrowBalance = 0n;
|
|
256
|
-
for (const [_,
|
|
257
|
-
const assetData = assetsData.get(
|
|
258
|
-
const assetConfig = assetsConfig.get(
|
|
259
|
-
let principals = userLiteData.principals.get(
|
|
252
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
253
|
+
const assetData = assetsData.get(asset.assetId);
|
|
254
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
255
|
+
let principals = userLiteData.principals.get(asset.assetId) || 0n;
|
|
260
256
|
if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust)) { // abs(principals) < dust
|
|
261
257
|
principals = 0n;
|
|
262
|
-
userLiteData.principals.set(
|
|
258
|
+
userLiteData.principals.set(asset.assetId, 0n);
|
|
263
259
|
}
|
|
264
|
-
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals);
|
|
265
|
-
userLiteData.balances.set(
|
|
260
|
+
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
|
|
261
|
+
userLiteData.balances.set(asset.assetId, balance);
|
|
266
262
|
}
|
|
267
|
-
for (const [_,
|
|
268
|
-
const assetConfig = assetsConfig.get(
|
|
269
|
-
const balance = userLiteData.balances.get(
|
|
263
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
264
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
265
|
+
const balance = userLiteData.balances.get(asset.assetId);
|
|
270
266
|
if (balance.type === User_1.BalanceType.supply) {
|
|
271
|
-
supplyBalance += (balance.amount * prices.get(
|
|
267
|
+
supplyBalance += (balance.amount * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
272
268
|
}
|
|
273
269
|
if (balance.type === User_1.BalanceType.borrow) {
|
|
274
|
-
borrowBalance += (balance.amount * prices.get(
|
|
270
|
+
borrowBalance += (balance.amount * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
275
271
|
}
|
|
276
272
|
}
|
|
277
|
-
const availableToBorrow = (0, math_1.getAvailableToBorrow)(assetsConfig, assetsData, userLiteData.principals, prices);
|
|
278
|
-
for (const [_,
|
|
279
|
-
const assetConfig = assetsConfig.get(
|
|
280
|
-
const assetData = assetsData.get(
|
|
281
|
-
const balance = userLiteData.balances.get(
|
|
273
|
+
const availableToBorrow = (0, math_1.getAvailableToBorrow)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
|
|
274
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
275
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
276
|
+
const assetData = assetsData.get(asset.assetId);
|
|
277
|
+
const balance = userLiteData.balances.get(asset.assetId);
|
|
282
278
|
if (balance.type === User_1.BalanceType.supply) {
|
|
283
|
-
withdrawalLimits.set(
|
|
284
|
-
(borrowBalance *
|
|
279
|
+
withdrawalLimits.set(asset.assetId, (0, math_1.bigIntMax)((0, math_1.bigIntMin)(assetData.balance, ((supplyBalance -
|
|
280
|
+
(borrowBalance * masterConstants.ASSET_COEFFICIENT_SCALE) / assetConfig.collateralFactor) *
|
|
285
281
|
10n ** assetConfig.decimals) /
|
|
286
|
-
prices.get(
|
|
282
|
+
prices.get(asset.assetId) -
|
|
287
283
|
5n, balance.amount), 0n));
|
|
288
284
|
}
|
|
289
|
-
borrowLimits.set(
|
|
285
|
+
borrowLimits.set(asset.assetId, (0, math_1.bigIntMin)((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId), assetData.balance));
|
|
290
286
|
}
|
|
291
287
|
const limitUsed = borrowBalance + availableToBorrow;
|
|
292
288
|
const limitUsedPercent = limitUsed === 0n
|
|
293
289
|
? 0
|
|
294
290
|
: Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
|
|
295
|
-
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices);
|
|
291
|
+
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
|
|
296
292
|
const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
|
|
297
293
|
return {
|
|
298
294
|
...userLiteData,
|
package/dist/api/prices.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PriceData } from '../types/Common';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function getPricesByNft(nftId: string, endpoints?: string[]): Promise<PriceData>;
|
package/dist/api/prices.js
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPricesByNft = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.error(error);
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
5
|
+
async function getPricesByNft(nftId, endpoints = ["api.stardust-mainnet.iotaledger.net"]) {
|
|
6
|
+
return await Promise.any(endpoints.map(x => loadPrices(nftId, x)));
|
|
7
|
+
}
|
|
8
|
+
exports.getPricesByNft = getPricesByNft;
|
|
9
|
+
async function loadPrices(nftId, endpoint = "api.stardust-mainnet.iotaledger.net") {
|
|
10
|
+
let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${nftId}`, {
|
|
11
|
+
headers: { accept: 'application/json' },
|
|
12
|
+
});
|
|
13
|
+
let outputId = (await result.json());
|
|
14
|
+
result = await fetch(`https://${endpoint}/api/core/v2/outputs/${outputId.items[0]}`, {
|
|
15
|
+
headers: { accept: 'application/json' },
|
|
16
|
+
});
|
|
17
|
+
let resData = (await result.json());
|
|
18
|
+
const data = JSON.parse(decodeURIComponent(resData.output.features[0].data.replace('0x', '').replace(/[0-9a-f]{2}/g, '%$&')));
|
|
19
|
+
const pricesCell = core_1.Cell.fromBoc(Buffer.from(data['packedPrices'], 'hex'))[0];
|
|
20
|
+
const signature = Buffer.from(data['signature'], 'hex');
|
|
21
|
+
return {
|
|
22
|
+
dict: pricesCell.beginParse().loadDictDirect(core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.BigUint(64)),
|
|
23
|
+
dataCell: (0, core_1.beginCell)().storeRef(pricesCell).storeBuffer(signature).endCell(),
|
|
24
|
+
};
|
|
28
25
|
}
|
|
29
|
-
exports.getPrices = getPrices;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PoolAssetConfig } from "../types/Master";
|
|
2
|
+
export declare const TON_MAINNET: PoolAssetConfig;
|
|
3
|
+
export declare const TON_TESTNET: import("../types/Master").PoolTonAssetConfig & {
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const JUSDT_MAINNET: PoolAssetConfig;
|
|
7
|
+
export declare const JUSDC_MAINNET: PoolAssetConfig;
|
|
8
|
+
export declare const STTON_MAINNET: PoolAssetConfig;
|
|
9
|
+
export declare const TSTON_MAINNET: PoolAssetConfig;
|
|
10
|
+
export declare const USDT_MAINNET: PoolAssetConfig;
|
|
11
|
+
export declare const JUSDT_TESTNET: PoolAssetConfig;
|
|
12
|
+
export declare const JUSDC_TESTNET: PoolAssetConfig;
|
|
13
|
+
export declare const STTON_TESTNET: PoolAssetConfig;
|
|
14
|
+
export declare const TONUSDT_DEDUST_MAINNET: PoolAssetConfig;
|
|
15
|
+
export declare const TON_STORM_MAINNET: PoolAssetConfig;
|
|
16
|
+
export declare const USDT_STORM_MAINNET: PoolAssetConfig;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.USDT_MAINNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.TON_TESTNET = exports.TON_MAINNET = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
6
|
+
const general_1 = require("./general");
|
|
7
|
+
exports.TON_MAINNET = {
|
|
8
|
+
name: 'TON',
|
|
9
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TON')
|
|
10
|
+
};
|
|
11
|
+
exports.TON_TESTNET = exports.TON_MAINNET;
|
|
12
|
+
exports.JUSDT_MAINNET = {
|
|
13
|
+
name: 'jUSDT',
|
|
14
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
15
|
+
jettonMasterAddress: core_1.Address.parse('EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA'),
|
|
16
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
17
|
+
};
|
|
18
|
+
exports.JUSDC_MAINNET = {
|
|
19
|
+
name: 'jUSDC',
|
|
20
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
21
|
+
jettonMasterAddress: core_1.Address.parse('EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728'),
|
|
22
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
23
|
+
};
|
|
24
|
+
exports.STTON_MAINNET = {
|
|
25
|
+
name: 'stTON',
|
|
26
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
27
|
+
jettonMasterAddress: core_1.Address.parse('EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k'),
|
|
28
|
+
jettonWalletCode: core_1.Cell.fromBase64('te6cckECEgEAA2IAART/APSkE/S88sgLAQIBYgIDAgLMBAUAG6D2BdqJofQB9IH0gahhAgHUBgcCASAJCgHPCDHAJJfBOAB0NMDAXGwlRNfA/AN4PpA+kAx+gAxcdch+gAx+gAwc6m0AALTHyGCEA+KfqW6lTE0WfAK4CGCEBeNRRm6ljFERAPwC+AhghBZXwe8upUxNFnwDOAUXwTABOMCMIQP8vCAIABE+kQwwADy4U2AAfO1E0PoA+kD6QNQwECNfAwGCCJiWgKFtgBByIm6zIJFxkXDiA8jLBVAGzxZQBPoCy2oDk1jMAZEw4gHJAfsAAgFYCwwCAUgQEQHxAPTP/oA+kAh8AHtRND6APpA+kDUMFE2oVIqxwXy4sEowv/y4sJUNEJwVCATVBQDyFAE+gJYzxYBzxbMySLIywES9AD0AMsAySD5AHB0yMsCygfL/8nQBPpA9AQx+gAg10nCAPLixHeAGMjLBVAIzxZw+gIXy2sTzIA0C9ztRND6APpA+kDUMAjTP/oAUVGgBfpA+kBTW8cFVHNtcFQgE1QUA8hQBPoCWM8WAc8WzMkiyMsBEvQA9ADLAMn5AHB0yMsCygfL/8nQUA3HBRyx8uLDCvoAUaihggiYloBmtgihggjk4cCgGKEnlxBJEDg3XwTjDSXXCwGAODwCeghAXjUUZyMsfGcs/UAf6AiLPFlAGzxYl+gJQA88WyVAFzCORcpFx4lAIqBOgggpiWgCgFLzy4sUEyYBA+wAQI8hQBPoCWM8WAc8WzMntVABwUnmgGKGCEHNi0JzIyx9SMMs/WPoCUAfPFlAHzxbJcYAQyMsFJM8WUAb6AhXLahTMyXH7ABAkECMAfMMAI8IAsI4hghDVMnbbcIAQyMsFUAjPFlAE+gIWy2oSyx8Syz/JcvsAkzVsIeIDyFAE+gJYzxYBzxbMye1UAMkMO1E0PoA+kD6QNQwBtM/+gAwUUShUjfHBfLiwSXC//LiwgSCC5OHAL7y4sWCEHvdl97Iyx8Uyz9Y+gIhzxbJcYAYyMsFJM8WcPoCy2rMyYBA+wBAE8hQBPoCWM8WAc8WzMntVIACBIAg1yHtRND6APpA+kDUMATTHyGCEBeNRRm6AoIQe92X3roSsfLgyNM/MfoAMBOgUCPIUAT6AljPFgHPFszJ7VSBpMmqD')
|
|
29
|
+
};
|
|
30
|
+
exports.TSTON_MAINNET = {
|
|
31
|
+
name: 'tsTON',
|
|
32
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('tsTON'),
|
|
33
|
+
jettonMasterAddress: core_1.Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
|
|
34
|
+
jettonWalletCode: core_1.Cell.fromBase64('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')
|
|
35
|
+
};
|
|
36
|
+
exports.USDT_MAINNET = {
|
|
37
|
+
name: 'USDT',
|
|
38
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('USDT'),
|
|
39
|
+
jettonMasterAddress: core_1.Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'),
|
|
40
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e', 'hex'))[0],
|
|
41
|
+
};
|
|
42
|
+
exports.JUSDT_TESTNET = {
|
|
43
|
+
name: 'jUSDT',
|
|
44
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
45
|
+
jettonMasterAddress: core_1.Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
|
|
46
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
47
|
+
};
|
|
48
|
+
exports.JUSDC_TESTNET = {
|
|
49
|
+
name: 'jUSDC',
|
|
50
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
51
|
+
jettonMasterAddress: core_1.Address.parse('kQDaY5yUatYnHei73HBqRX_Ox9LK2XnR7XuCY9MFC2INbfYI'),
|
|
52
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
53
|
+
};
|
|
54
|
+
exports.STTON_TESTNET = {
|
|
55
|
+
name: 'stTON',
|
|
56
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
57
|
+
jettonMasterAddress: core_1.Address.parse('kQC3Duw3dg8k98xf5S7Bm7YOWVJ5QW8hm3iLqFfJfa_g9h07'),
|
|
58
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7201021201000362000114ff00f4a413f4bcf2c80b0102016202030202cc0405001ba0f605da89a1f401f481f481a8610201d40607020120090a01cf0831c02497c138007434c0c05c6c2544d7c0fc03383e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7c8608403e29fa96ea54c4d167c027808608405e351466ea58c511100fc02b80860841657c1ef2ea54c4d167c02f80517c1300138c08c2103fcbc200800113e910c30003cb85360007ced44d0fa00fa40fa40d43010235f03018208989680a16d801072226eb32091719170e203c8cb055006cf165004fa02cb6a039358cc019130e201c901fb000201200b0c0081d40106b90f6a2687d007d207d206a1802698f90c1080bc6a28cdd0141083deecbef5d0958f97064699f98fd001809d02811e428027d012c678b00e78b6664f6aa401f1503d33ffa00fa4021f001ed44d0fa00fa40fa40d4305136a1522ac705f2e2c128c2fff2e2c254344270542013541403c85004fa0258cf1601cf16ccc922c8cb0112f400f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f40431fa0020d749c200f2e2c4778018c8cb055008cf1670fa0217cb6b13cc80d0201200e0f009e8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a0820a625a00a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5402f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a019ad8228608239387028062849e5c412440e0dd7c138c34975c2c060101100c90c3b51343e803e903e90350c01b4cffe800c145128548df1c17cb8b04970bffcb8b0812082e4e1c02fbcb8b160841ef765f7b232c7c532cfd63e808873c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b552000705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023007cc30023c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed54', 'hex'))[0],
|
|
59
|
+
};
|
|
60
|
+
exports.TONUSDT_DEDUST_MAINNET = {
|
|
61
|
+
name: 'TONUSDT_DEDUST',
|
|
62
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TONUSDT_DEDUST'),
|
|
63
|
+
jettonMasterAddress: core_1.Address.parse('EQA-X_yo3fzzbDbJ_0bzFWKqtRuZFIRa1sJsveZJ1YpViO3r'),
|
|
64
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021201000334000114ff00f4a413f4bcf2c80b0102016202110202cc03060201d4040500c30831c02497c138007434c0c05c6c2544d7c0fc02f83e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7e08403e29fa954882ea54c4d167c0238208405e3514654882ea58c511100fc02780d60841657c1ef2ea4d67c02b817c12103fcbc2000113e910c1c2ebcb85360020148070e020120080a01f100f4cffe803e90087c007b51343e803e903e90350c144da8548ab1c17cb8b04a30bffcb8b0950d109c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c032483e401c1d3232c0b281f2fff274013e903d010c7e800835d270803cb8b11de0063232c1540233c59c3e8085f2dac4f3200900ae8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a08208e4e1c0aa008208989680a0a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5403f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a020822625a004ad8228608239387028062849f8c3c975c2c070c008e00b0c0d00705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023000e10491038375f040076c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed540201200f1000db3b51343e803e903e90350c01f4cffe803e900c145468549271c17cb8b049f0bffcb8b0a0823938702a8005a805af3cb8b0e0841ef765f7b232c7c572cfd400fe8088b3c58073c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b55200083200835c87b51343e803e903e90350c0134c7e08405e3514654882ea0841ef765f784ee84ac7cb8b174cfcc7e800c04e81408f214013e809633c58073c5b3327b5520001ba0f605da89a1f401f481f481a861f0a7d84b', 'hex'))[0],
|
|
65
|
+
};
|
|
66
|
+
exports.TON_STORM_MAINNET = {
|
|
67
|
+
name: 'TON_STORM',
|
|
68
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TON_STORM'),
|
|
69
|
+
jettonMasterAddress: core_1.Address.parse('EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F'),
|
|
70
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
71
|
+
};
|
|
72
|
+
exports.USDT_STORM_MAINNET = {
|
|
73
|
+
name: 'USDT_STORM',
|
|
74
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('USDT_STORM'),
|
|
75
|
+
jettonMasterAddress: core_1.Address.parse('EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW'),
|
|
76
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
77
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Address, Cell } from '@ton/core';
|
|
2
|
+
export declare const MASTER_CONSTANTS: {
|
|
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 declare const EVAA_MASTER_MAINNET: Address;
|
|
11
|
+
export declare const MAINNET_VERSION = 5;
|
|
12
|
+
export declare const EVAA_MASTER_TESTNET: Address;
|
|
13
|
+
export declare const TESTNET_VERSION = 5;
|
|
14
|
+
export declare const EVAA_LP_TESTNET: Address;
|
|
15
|
+
export declare const EVAA_LP_TESTNET_VERSION = 5;
|
|
16
|
+
export declare const EVAA_LP_MAINNET: Address;
|
|
17
|
+
export declare const EVAA_LP_MAINNET_VERSION = 0;
|
|
18
|
+
export declare const MAIN_POOL_NFT_ID = "0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5";
|
|
19
|
+
export declare const LP_POOL_NFT_ID = "0x85f0045998038bebd076987deb4d4c680a323cb04380491eaa7857b6469ba923";
|
|
20
|
+
export declare const LENDING_CODE: Cell;
|
|
21
|
+
export declare const JETTON_WALLET_STANDART_CODE: Cell;
|
|
22
|
+
export declare const JETTON_WALLET_STANDART_CODE_TESTNET: Cell;
|
|
23
|
+
export declare const OPCODES: {
|
|
24
|
+
SUPPLY: number;
|
|
25
|
+
WITHDRAW: number;
|
|
26
|
+
LIQUIDATE: number;
|
|
27
|
+
JETTON_TRANSFER: number;
|
|
28
|
+
ONCHAIN_GETTER: number;
|
|
29
|
+
};
|
|
30
|
+
export declare const FEES: {
|
|
31
|
+
SUPPLY: bigint;
|
|
32
|
+
WITHDRAW: bigint;
|
|
33
|
+
SUPPLY_JETTON: bigint;
|
|
34
|
+
SUPPLY_JETTON_FWD: bigint;
|
|
35
|
+
LIQUIDATION: bigint;
|
|
36
|
+
LIQUIDATION_JETTON: bigint;
|
|
37
|
+
LIQUIDATION_JETTON_FWD: bigint;
|
|
38
|
+
};
|