@evaafi/sdk 0.9.7 → 1.0.0
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/feeds.d.ts +2 -0
- package/dist/api/feeds.js +5 -1
- package/dist/constants/assets/assetId.d.ts +2 -0
- package/dist/constants/assets/assetId.js +5 -0
- package/dist/constants/assets/mainnet.d.ts +2 -0
- package/dist/constants/assets/mainnet.js +7 -4
- package/dist/constants/assets/testnet.d.ts +2 -0
- package/dist/constants/assets/testnet.js +7 -4
- package/dist/constants/pools/mainnet.js +16 -16
- package/dist/constants/pools/testnet.js +7 -7
- package/dist/contracts/AbstractMaster.js +4 -4
- package/dist/contracts/ClassicMaster.js +3 -3
- package/dist/contracts/PythMaster.js +4 -4
- package/dist/utils/userJettonWallet.js +1 -1
- package/dist/utils/utils.d.ts +6 -2
- package/dist/utils/utils.js +11 -7
- package/package.json +1 -1
- package/src/api/feeds.ts +5 -1
- package/src/constants/assets/assetId.ts +5 -0
- package/src/constants/assets/mainnet.ts +7 -3
- package/src/constants/assets/testnet.ts +7 -3
- package/src/constants/pools/mainnet.ts +17 -17
- package/src/constants/pools/testnet.ts +9 -9
- package/src/contracts/AbstractMaster.ts +5 -5
- package/src/contracts/ClassicMaster.ts +4 -4
- package/src/contracts/PythMaster.ts +6 -6
- package/src/utils/userJettonWallet.ts +1 -1
- package/src/utils/utils.ts +9 -4
package/dist/api/feeds.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { HexString } from '@pythnetwork/hermes-client';
|
|
|
3
3
|
import { Dictionary } from '@ton/ton';
|
|
4
4
|
import { Buffer } from 'buffer';
|
|
5
5
|
export declare const FEED_ID: {
|
|
6
|
+
GRAM: string;
|
|
7
|
+
/** @deprecated TON/USD feed retired; the native asset is now priced via gram.usd. Use GRAM. */
|
|
6
8
|
TON: string;
|
|
7
9
|
USDT: string;
|
|
8
10
|
stTON: string;
|
package/dist/api/feeds.js
CHANGED
|
@@ -3,7 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseFeedsMapDict = exports.unpackConnectedFeeds = exports.packConnectedFeeds = exports.bigintToBuffer = exports.FEED_ID = void 0;
|
|
4
4
|
const buffer_1 = require("buffer");
|
|
5
5
|
exports.FEED_ID = {
|
|
6
|
-
TON
|
|
6
|
+
// GRAM (gram.usd) Pyth feed. Replaces the retired TON/USD feed
|
|
7
|
+
// (0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026).
|
|
8
|
+
GRAM: '0xe41cd8a90528974c7b97b506abb694e2cc5750b119f796a7001890c1a93a572d',
|
|
9
|
+
/** @deprecated TON/USD feed retired; the native asset is now priced via gram.usd. Use GRAM. */
|
|
10
|
+
TON: '0xe41cd8a90528974c7b97b506abb694e2cc5750b119f796a7001890c1a93a572d',
|
|
7
11
|
USDT: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
8
12
|
stTON: '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002',
|
|
9
13
|
tsTON: '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25',
|
|
@@ -5,6 +5,11 @@ const sha256BigInt_1 = require("../../utils/sha256BigInt");
|
|
|
5
5
|
exports.ASSET_ID = {
|
|
6
6
|
EVAA: (0, sha256BigInt_1.sha256Hash)('EVAA'),
|
|
7
7
|
// Main
|
|
8
|
+
// GRAM (formerly TON). The token id is sha256('TON') for historical reasons:
|
|
9
|
+
// the native asset was registered on-chain as 'TON' before the GRAM rebrand,
|
|
10
|
+
// so the id must stay sha256('TON') to keep matching existing on-chain state.
|
|
11
|
+
GRAM: (0, sha256BigInt_1.sha256Hash)('TON'),
|
|
12
|
+
/** @deprecated renamed to GRAM; kept for backward compatibility. Same id (sha256('TON')). */
|
|
8
13
|
TON: (0, sha256BigInt_1.sha256Hash)('TON'),
|
|
9
14
|
USDT: (0, sha256BigInt_1.sha256Hash)('USDT'),
|
|
10
15
|
jUSDT: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PoolAssetConfig } from '../../types/Master';
|
|
2
2
|
export declare const UNDEFINED_ASSET: PoolAssetConfig;
|
|
3
|
+
export declare const GRAM_MAINNET: PoolAssetConfig;
|
|
4
|
+
/** @deprecated renamed to GRAM_MAINNET; kept for backward compatibility. */
|
|
3
5
|
export declare const TON_MAINNET: PoolAssetConfig;
|
|
4
6
|
export declare const JUSDT_MAINNET: PoolAssetConfig;
|
|
5
7
|
export declare const JUSDC_MAINNET: PoolAssetConfig;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TUSDE_MAINNET = exports.TUSDT_MAINNET = exports.EVAA_MAINNET = exports.STON_MAINNET = exports.TONUSDT_STONFI_MAINNET = exports.PT_tsUSDe_18Dec2025_MAINNET = exports.PT_tsUSDe_01Sep2025_MAINNET = exports.TSUSDE_MAINNET = exports.USDE_MAINNET = exports.NOT_MAINNET = exports.DOGS_MAINNET = exports.CATI_MAINNET = exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.USDT_MAINNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.TON_MAINNET = exports.UNDEFINED_ASSET = void 0;
|
|
3
|
+
exports.TUSDE_MAINNET = exports.TUSDT_MAINNET = exports.EVAA_MAINNET = exports.STON_MAINNET = exports.TONUSDT_STONFI_MAINNET = exports.PT_tsUSDe_18Dec2025_MAINNET = exports.PT_tsUSDe_01Sep2025_MAINNET = exports.TSUSDE_MAINNET = exports.USDE_MAINNET = exports.NOT_MAINNET = exports.DOGS_MAINNET = exports.CATI_MAINNET = exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.USDT_MAINNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.TON_MAINNET = exports.GRAM_MAINNET = exports.UNDEFINED_ASSET = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
const general_1 = require("../general");
|
|
6
6
|
const assetId_1 = require("./assetId");
|
|
@@ -10,12 +10,15 @@ exports.UNDEFINED_ASSET = {
|
|
|
10
10
|
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
11
11
|
jettonWalletCode: core_1.Cell.EMPTY,
|
|
12
12
|
};
|
|
13
|
-
exports.
|
|
14
|
-
name: '
|
|
15
|
-
|
|
13
|
+
exports.GRAM_MAINNET = {
|
|
14
|
+
name: 'GRAM',
|
|
15
|
+
// historical id: sha256('TON') — the native asset was registered as 'TON' before the GRAM rebrand
|
|
16
|
+
assetId: assetId_1.ASSET_ID.GRAM,
|
|
16
17
|
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
17
18
|
jettonWalletCode: core_1.Cell.EMPTY,
|
|
18
19
|
};
|
|
20
|
+
/** @deprecated renamed to GRAM_MAINNET; kept for backward compatibility. */
|
|
21
|
+
exports.TON_MAINNET = exports.GRAM_MAINNET;
|
|
19
22
|
exports.JUSDT_MAINNET = {
|
|
20
23
|
name: 'jUSDT',
|
|
21
24
|
assetId: assetId_1.ASSET_ID.jUSDT,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { PoolAssetConfig } from '../../types/Master';
|
|
2
|
+
export declare const GRAM_TESTNET: PoolAssetConfig;
|
|
3
|
+
/** @deprecated renamed to GRAM_TESTNET; kept for backward compatibility. */
|
|
2
4
|
export declare const TON_TESTNET: PoolAssetConfig;
|
|
3
5
|
export declare const JUSDT_TESTNET: PoolAssetConfig;
|
|
4
6
|
export declare const JUSDC_TESTNET: PoolAssetConfig;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EUSDC_TESTNET = exports.EUSDT_TESTNET = exports.TGBTC_TESTNET = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.TON_TESTNET = void 0;
|
|
3
|
+
exports.EUSDC_TESTNET = exports.EUSDT_TESTNET = exports.TGBTC_TESTNET = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.TON_TESTNET = exports.GRAM_TESTNET = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
const assets_1 = require("../assets");
|
|
6
6
|
const general_1 = require("../general");
|
|
7
|
-
exports.
|
|
8
|
-
name: '
|
|
9
|
-
|
|
7
|
+
exports.GRAM_TESTNET = {
|
|
8
|
+
name: 'GRAM',
|
|
9
|
+
// historical id: sha256('TON') — the native asset was registered as 'TON' before the GRAM rebrand
|
|
10
|
+
assetId: assets_1.ASSET_ID.GRAM,
|
|
10
11
|
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
11
12
|
jettonWalletCode: core_1.Cell.EMPTY,
|
|
12
13
|
};
|
|
14
|
+
/** @deprecated renamed to GRAM_TESTNET; kept for backward compatibility. */
|
|
15
|
+
exports.TON_TESTNET = exports.GRAM_TESTNET;
|
|
13
16
|
exports.JUSDT_TESTNET = {
|
|
14
17
|
name: 'jUSDT',
|
|
15
18
|
assetId: assets_1.ASSET_ID.jUSDT,
|
|
@@ -8,7 +8,7 @@ const assets_1 = require("../assets");
|
|
|
8
8
|
const general_1 = require("../general");
|
|
9
9
|
// Pool assets configs
|
|
10
10
|
exports.MAINNET_POOL_ASSETS_CONFIG = [
|
|
11
|
-
assets_1.
|
|
11
|
+
assets_1.GRAM_MAINNET,
|
|
12
12
|
assets_1.JUSDT_MAINNET,
|
|
13
13
|
assets_1.JUSDC_MAINNET,
|
|
14
14
|
assets_1.STTON_MAINNET,
|
|
@@ -25,14 +25,14 @@ exports.MAINNET_STABLE_POOL_ASSETS_CONFIG = [
|
|
|
25
25
|
assets_1.PT_tsUSDe_18Dec2025_MAINNET,
|
|
26
26
|
];
|
|
27
27
|
exports.MAINNET_LP_POOL_ASSETS_CONFIG = [
|
|
28
|
-
assets_1.
|
|
28
|
+
assets_1.GRAM_MAINNET,
|
|
29
29
|
assets_1.USDT_MAINNET,
|
|
30
30
|
assets_1.TONUSDT_DEDUST_MAINNET,
|
|
31
31
|
assets_1.TON_STORM_MAINNET,
|
|
32
32
|
assets_1.USDT_STORM_MAINNET,
|
|
33
33
|
assets_1.TONUSDT_STONFI_MAINNET,
|
|
34
34
|
];
|
|
35
|
-
exports.MAINNET_ALTS_POOL_ASSETS_CONFIG = [assets_1.
|
|
35
|
+
exports.MAINNET_ALTS_POOL_ASSETS_CONFIG = [assets_1.GRAM_MAINNET, assets_1.USDT_MAINNET, assets_1.CATI_MAINNET, assets_1.NOT_MAINNET, assets_1.DOGS_MAINNET];
|
|
36
36
|
exports.MAINNET_POOL_CONFIG = {
|
|
37
37
|
masterAddress: general_1.EVAA_MASTER_MAINNET,
|
|
38
38
|
masterVersion: general_1.MAINNET_VERSION,
|
|
@@ -42,10 +42,10 @@ exports.MAINNET_POOL_CONFIG = {
|
|
|
42
42
|
poolAssetsConfig: exports.MAINNET_POOL_ASSETS_CONFIG,
|
|
43
43
|
pythOracle: {
|
|
44
44
|
feedsMap: new Map([
|
|
45
|
-
[feeds_1.FEED_ID.
|
|
45
|
+
[feeds_1.FEED_ID.GRAM, { assetId: assets_1.ASSET_ID.GRAM, feedId: "0x0" }],
|
|
46
46
|
[feeds_1.FEED_ID.USDT, { assetId: assets_1.ASSET_ID.USDT, feedId: "0x0" }],
|
|
47
|
-
[feeds_1.FEED_ID.tsTON, { assetId: assets_1.ASSET_ID.tsTON, feedId: feeds_1.FEED_ID.
|
|
48
|
-
[feeds_1.FEED_ID.stTON, { assetId: assets_1.ASSET_ID.stTON, feedId: feeds_1.FEED_ID.
|
|
47
|
+
[feeds_1.FEED_ID.tsTON, { assetId: assets_1.ASSET_ID.tsTON, feedId: feeds_1.FEED_ID.GRAM }],
|
|
48
|
+
[feeds_1.FEED_ID.stTON, { assetId: assets_1.ASSET_ID.stTON, feedId: feeds_1.FEED_ID.GRAM }],
|
|
49
49
|
[feeds_1.FEED_ID.USDe, { assetId: assets_1.ASSET_ID.USDe, feedId: "0x0" }],
|
|
50
50
|
[feeds_1.FEED_ID.tsUSDe, { assetId: assets_1.ASSET_ID.tsUSDe, feedId: feeds_1.FEED_ID.USDe }],
|
|
51
51
|
]),
|
|
@@ -57,7 +57,7 @@ exports.MAINNET_POOL_CONFIG = {
|
|
|
57
57
|
}),
|
|
58
58
|
poolAssetsConfig: exports.MAINNET_POOL_ASSETS_CONFIG,
|
|
59
59
|
poolAssetsHEConfig: [
|
|
60
|
-
{ title: 'ton', assets: [assets_1.
|
|
60
|
+
{ title: 'ton', assets: [assets_1.GRAM_MAINNET, assets_1.TSTON_MAINNET], heCategory: 1 },
|
|
61
61
|
{ title: 'stable', assets: [assets_1.USDT_MAINNET, assets_1.USDE_MAINNET, assets_1.TSUSDE_MAINNET], heCategory: 2 },
|
|
62
62
|
],
|
|
63
63
|
lendingCode: general_1.LENDING_CODE,
|
|
@@ -86,7 +86,7 @@ exports.MAINNET_LP_POOL_CONFIG = {
|
|
|
86
86
|
}),
|
|
87
87
|
poolAssetsConfig: exports.MAINNET_LP_POOL_ASSETS_CONFIG,
|
|
88
88
|
poolAssetsHEConfig: [
|
|
89
|
-
{ title: 'ton', assets: [assets_1.
|
|
89
|
+
{ title: 'ton', assets: [assets_1.GRAM_MAINNET, assets_1.TON_STORM_MAINNET], heCategory: 1 },
|
|
90
90
|
{ title: 'stable', assets: [assets_1.USDT_MAINNET, assets_1.USDT_STORM_MAINNET], heCategory: 2 },
|
|
91
91
|
],
|
|
92
92
|
lendingCode: general_1.LENDING_CODE,
|
|
@@ -102,7 +102,7 @@ exports.MAINNET_LP_POOL_COPY_CONFIG = {
|
|
|
102
102
|
}),
|
|
103
103
|
poolAssetsConfig: exports.MAINNET_LP_POOL_ASSETS_CONFIG,
|
|
104
104
|
poolAssetsHEConfig: [
|
|
105
|
-
{ title: 'ton', assets: [assets_1.
|
|
105
|
+
{ title: 'ton', assets: [assets_1.GRAM_MAINNET, assets_1.TON_STORM_MAINNET], heCategory: 1 },
|
|
106
106
|
{ title: 'stable', assets: [assets_1.USDT_MAINNET, assets_1.USDT_STORM_MAINNET], heCategory: 2 },
|
|
107
107
|
],
|
|
108
108
|
lendingCode: general_1.LENDING_CODE,
|
|
@@ -120,7 +120,7 @@ exports.MAINNET_ALTS_POOL_CONFIG = {
|
|
|
120
120
|
poolAssetsHEConfig: [],
|
|
121
121
|
lendingCode: general_1.LENDING_CODE,
|
|
122
122
|
};
|
|
123
|
-
exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.
|
|
123
|
+
exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.GRAM_MAINNET, assets_1.USDT_MAINNET, assets_1.JUSDT_MAINNET];
|
|
124
124
|
exports.MAINNET_PYTH_V8_TOB_POOL_CONFIG = {
|
|
125
125
|
masterAddress: general_1.EVAA_PYTH_TOB_MAINNET,
|
|
126
126
|
masterVersion: general_1.EVAA_PYTH_TOB_VERSION,
|
|
@@ -130,7 +130,7 @@ exports.MAINNET_PYTH_V8_TOB_POOL_CONFIG = {
|
|
|
130
130
|
poolAssetsConfig: exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG,
|
|
131
131
|
pythOracle: {
|
|
132
132
|
feedsMap: new Map([
|
|
133
|
-
[feeds_1.FEED_ID.
|
|
133
|
+
[feeds_1.FEED_ID.GRAM, { assetId: assets_1.ASSET_ID.GRAM, feedId: '0x0' }],
|
|
134
134
|
[feeds_1.FEED_ID.USDT, { assetId: assets_1.ASSET_ID.USDT, feedId: '0x0' }],
|
|
135
135
|
]),
|
|
136
136
|
pythAddress: general_1.PYTH_ORACLE_MAINNET,
|
|
@@ -141,7 +141,7 @@ exports.MAINNET_PYTH_V8_TOB_POOL_CONFIG = {
|
|
|
141
141
|
poolAssetsHEConfig: [],
|
|
142
142
|
lendingCode: general_1.LENDING_CODE,
|
|
143
143
|
};
|
|
144
|
-
exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.
|
|
144
|
+
exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.GRAM_MAINNET, assets_1.USDT_MAINNET];
|
|
145
145
|
exports.MAINNET_V8_TOB_POOL_CONFIG = {
|
|
146
146
|
masterAddress: general_1.EVAA_TOB_MAINNET,
|
|
147
147
|
masterVersion: general_1.EVAA_TOB_VERSION,
|
|
@@ -160,7 +160,7 @@ exports.MAINNET_MASTER_TON_REWARD_CONFIG = {
|
|
|
160
160
|
evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
|
|
161
161
|
rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_MAINNET,
|
|
162
162
|
rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_MAINNET,
|
|
163
|
-
asset: assets_1.
|
|
163
|
+
asset: assets_1.GRAM_MAINNET,
|
|
164
164
|
availableReward: 0,
|
|
165
165
|
publicKey: Buffer.from('bfe9a30221db4dff4c17e55d985e0b13a8f597bbb28002f311dc4429dad1ca95', 'hex'), // adminAddress publicKey
|
|
166
166
|
};
|
|
@@ -187,13 +187,13 @@ exports.MAINNET_CLASSIC_HE_POOL_CONFIG = {
|
|
|
187
187
|
masterVersion: 0,
|
|
188
188
|
masterConstants: general_1.MASTER_CONSTANTS,
|
|
189
189
|
collector: new oracles_1.FakeCollector(core_1.Dictionary.empty()
|
|
190
|
-
.set(assets_1.ASSET_ID.
|
|
190
|
+
.set(assets_1.ASSET_ID.GRAM, 1300000000n)
|
|
191
191
|
.set(assets_1.ASSET_ID.tsTON, 1500000000n)
|
|
192
192
|
.set(assets_1.ASSET_ID.TUSDT, 1000000000n)
|
|
193
193
|
.set(assets_1.ASSET_ID.TUSDe, 1000000000n)),
|
|
194
|
-
poolAssetsConfig: [assets_1.
|
|
194
|
+
poolAssetsConfig: [assets_1.GRAM_MAINNET, assets_1.TSTON_MAINNET, assets_1.TUSDE_MAINNET, assets_1.TUSDT_MAINNET],
|
|
195
195
|
poolAssetsHEConfig: [
|
|
196
|
-
{ title: 'ton', assets: [assets_1.
|
|
196
|
+
{ title: 'ton', assets: [assets_1.GRAM_MAINNET, assets_1.TSTON_MAINNET], heCategory: 1 },
|
|
197
197
|
{ title: 'stable', assets: [assets_1.TUSDT_MAINNET, assets_1.TUSDE_MAINNET], heCategory: 2 },
|
|
198
198
|
],
|
|
199
199
|
lendingCode: general_1.LENDING_CODE,
|
|
@@ -6,8 +6,8 @@ const feeds_1 = require("../../api/feeds");
|
|
|
6
6
|
const oracles_1 = require("../../oracles");
|
|
7
7
|
const assets_1 = require("../assets");
|
|
8
8
|
const general_1 = require("../general");
|
|
9
|
-
exports.TESTNET_POOL_ASSETS_CONFIG = [assets_1.
|
|
10
|
-
exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = [assets_1.
|
|
9
|
+
exports.TESTNET_POOL_ASSETS_CONFIG = [assets_1.GRAM_TESTNET, assets_1.JUSDC_TESTNET];
|
|
10
|
+
exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = [assets_1.GRAM_TESTNET, assets_1.JUSDC_TESTNET];
|
|
11
11
|
exports.TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED = {
|
|
12
12
|
masterAddress: general_1.EVAA_MASTER_TESTNET_PYTH_TOB_AUDITED,
|
|
13
13
|
masterVersion: general_1.TESTNET_PYTH_VERSION_TOB_AUDITED,
|
|
@@ -17,9 +17,9 @@ exports.TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED = {
|
|
|
17
17
|
pythOracle: {
|
|
18
18
|
feedsMap: new Map([
|
|
19
19
|
[
|
|
20
|
-
feeds_1.FEED_ID.
|
|
20
|
+
feeds_1.FEED_ID.GRAM,
|
|
21
21
|
{
|
|
22
|
-
assetId: assets_1.ASSET_ID.
|
|
22
|
+
assetId: assets_1.ASSET_ID.GRAM,
|
|
23
23
|
feedId: '0x0',
|
|
24
24
|
},
|
|
25
25
|
],
|
|
@@ -51,12 +51,12 @@ exports.TESTNET_CLASSIC_HE_POOL_CONFIG = {
|
|
|
51
51
|
masterVersion: 0,
|
|
52
52
|
masterConstants: general_1.MASTER_CONSTANTS,
|
|
53
53
|
collector: new oracles_1.ClassicCollector({
|
|
54
|
-
poolAssetsConfig: [assets_1.
|
|
54
|
+
poolAssetsConfig: [assets_1.GRAM_MAINNET, assets_1.TSTON_MAINNET, assets_1.USDT_MAINNET, assets_1.USDE_MAINNET],
|
|
55
55
|
minimalOracles: 1,
|
|
56
56
|
evaaOracles: general_1.ORACLES_TESTNET,
|
|
57
57
|
}),
|
|
58
58
|
lendingCode: general_1.LENDING_CODE,
|
|
59
|
-
poolAssetsConfig: [assets_1.
|
|
59
|
+
poolAssetsConfig: [assets_1.GRAM_MAINNET, assets_1.TSTON_MAINNET, assets_1.USDT_MAINNET, assets_1.USDE_MAINNET],
|
|
60
60
|
poolAssetsHEConfig: [],
|
|
61
61
|
};
|
|
62
62
|
exports.TESTNET_MASTER_REWARD_CONFIG = {
|
|
@@ -64,7 +64,7 @@ exports.TESTNET_MASTER_REWARD_CONFIG = {
|
|
|
64
64
|
evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
|
|
65
65
|
rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_TESTNET,
|
|
66
66
|
rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_TESTNET,
|
|
67
|
-
asset: assets_1.
|
|
67
|
+
asset: assets_1.GRAM_TESTNET,
|
|
68
68
|
availableReward: 0,
|
|
69
69
|
publicKey: Buffer.from('c38be45e033419b49cd22c97fbd23610fbc851a931208f8b4a1817dd11cb63ac', 'hex'), // adminAddress publicKey
|
|
70
70
|
};
|
|
@@ -90,7 +90,7 @@ class AbstractEvaaMaster {
|
|
|
90
90
|
.endCell();
|
|
91
91
|
}
|
|
92
92
|
buildSupplyWithdrawOperationPayload(parameters) {
|
|
93
|
-
const isTon = (0, __1.
|
|
93
|
+
const isTon = (0, __1.isGramAsset)(parameters.supplyAsset);
|
|
94
94
|
const supplyData = (0, core_1.beginCell)();
|
|
95
95
|
if (isTon) {
|
|
96
96
|
supplyData.storeUint(parameters.supplyAmount, 64);
|
|
@@ -124,7 +124,7 @@ class AbstractEvaaMaster {
|
|
|
124
124
|
createSupplyMessage(parameters) {
|
|
125
125
|
AbstractEvaaMaster.validateSupplyParameters(parameters);
|
|
126
126
|
const subaccountId = parameters.subaccountId ?? 0;
|
|
127
|
-
const isTon = (0, __1.
|
|
127
|
+
const isTon = (0, __1.isGramAsset)(parameters.asset);
|
|
128
128
|
const operationPayload = (0, core_1.beginCell)()
|
|
129
129
|
.storeUint(general_1.OPCODES.SUPPLY_MASTER, 32)
|
|
130
130
|
.storeBuilder(isTon ? (0, core_1.beginCell)().storeUint(parameters.queryID, 64) : (0, core_1.beginCell)())
|
|
@@ -175,7 +175,7 @@ class AbstractEvaaMaster {
|
|
|
175
175
|
.storeUint(parameters.collateralAsset, 256)
|
|
176
176
|
.storeUint(parameters.minCollateralAmount, 64)
|
|
177
177
|
.storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
178
|
-
.storeUint((0, __1.
|
|
178
|
+
.storeUint((0, __1.isGramAsset)(parameters.asset) ? parameters.liquidationAmount : 0, 64);
|
|
179
179
|
}
|
|
180
180
|
// ========== CONTRACT INTERACTION HELPERS ==========
|
|
181
181
|
/**
|
|
@@ -232,7 +232,7 @@ class AbstractEvaaMaster {
|
|
|
232
232
|
});
|
|
233
233
|
}
|
|
234
234
|
async sendTx(provider, via, value, message, asset) {
|
|
235
|
-
if (!(0, __1.
|
|
235
|
+
if (!(0, __1.isGramAsset)(asset)) {
|
|
236
236
|
if (!via.address)
|
|
237
237
|
throw new Error('Via address is required for jetton supply');
|
|
238
238
|
const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, asset)));
|
|
@@ -22,7 +22,7 @@ class EvaaMasterClassic extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
22
22
|
.endCell();
|
|
23
23
|
}
|
|
24
24
|
createSupplyWithdrawMessage(parameters) {
|
|
25
|
-
const isTon = (0, __1.
|
|
25
|
+
const isTon = (0, __1.isGramAsset)(parameters.supplyAsset);
|
|
26
26
|
const operationPayload = this.buildSupplyWithdrawOperationPayload(parameters);
|
|
27
27
|
const refOpCode = parameters.priceData
|
|
28
28
|
? general_1.OPCODES.SUPPLY_WITHDRAW_MASTER
|
|
@@ -41,7 +41,7 @@ class EvaaMasterClassic extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
41
41
|
async sendWithdraw(provider, via, value, parameters) {
|
|
42
42
|
// Compatibility layer using supply-withdraw with TON zero supply
|
|
43
43
|
await this.sendSupplyWithdraw(provider, via, value, {
|
|
44
|
-
supplyAsset: __1.
|
|
44
|
+
supplyAsset: __1.GRAM_MAINNET,
|
|
45
45
|
supplyAmount: 0n,
|
|
46
46
|
queryID: parameters.queryID,
|
|
47
47
|
withdrawAsset: parameters.asset,
|
|
@@ -63,7 +63,7 @@ class EvaaMasterClassic extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
63
63
|
return operationPayloadBuilder.storeRef(innerBuilder).storeRef(parameters.priceData);
|
|
64
64
|
}
|
|
65
65
|
createLiquidationMessage(parameters) {
|
|
66
|
-
const isTon = (0, __1.
|
|
66
|
+
const isTon = (0, __1.isGramAsset)(parameters.asset);
|
|
67
67
|
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
68
68
|
if (!isTon) {
|
|
69
69
|
return this.createJettonTransferMessage(parameters, general_1.FEES.LIQUIDATION_JETTON_FWD, (0, core_1.beginCell)().storeUint(general_1.OPCODES.LIQUIDATE_MASTER, 32).storeBuilder(operationPayload).endCell());
|
|
@@ -70,7 +70,7 @@ class EvaaMasterPyth extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
70
70
|
.storeUint(general_1.OPCODES.SUPPLY_WITHDRAW_MASTER_WITHOUT_PRICES, 32)
|
|
71
71
|
.storeSlice(operationPayload.beginParse())
|
|
72
72
|
.endCell();
|
|
73
|
-
if (!(0, utils_1.
|
|
73
|
+
if (!(0, utils_1.isGramAsset)(parameters.supplyAsset)) {
|
|
74
74
|
return this.createJettonTransferMessage(parameters, general_1.FEES.SUPPLY_WITHDRAW + general_1.FEES.JETTON_FWD, messageBody);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
@@ -87,7 +87,7 @@ class EvaaMasterPyth extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
87
87
|
if (!parameters.pyth) {
|
|
88
88
|
return this.createSupplyWithdrawMessageNoPrices(parameters, operationPayload);
|
|
89
89
|
}
|
|
90
|
-
if (!(0, utils_1.
|
|
90
|
+
if (!(0, utils_1.isGramAsset)(parameters.supplyAsset)) {
|
|
91
91
|
return this.createJettonPythMessage(parameters, // as JettonParams & { queryID: number | bigint },
|
|
92
92
|
operationPayload, parameters.pyth, general_1.OPCODES.SUPPLY_WITHDRAW_MASTER_JETTON);
|
|
93
93
|
}
|
|
@@ -116,7 +116,7 @@ class EvaaMasterPyth extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
116
116
|
}
|
|
117
117
|
async sendWithdraw(provider, via, value, parameters) {
|
|
118
118
|
const message = this.createSupplyWithdrawMessage({
|
|
119
|
-
supplyAsset: constants_1.
|
|
119
|
+
supplyAsset: constants_1.GRAM_MAINNET,
|
|
120
120
|
supplyAmount: 0n,
|
|
121
121
|
queryID: parameters.queryID,
|
|
122
122
|
withdrawAsset: parameters.asset,
|
|
@@ -146,7 +146,7 @@ class EvaaMasterPyth extends AbstractMaster_1.AbstractEvaaMaster {
|
|
|
146
146
|
}
|
|
147
147
|
createLiquidationMessage(parameters) {
|
|
148
148
|
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
149
|
-
if (!(0, utils_1.
|
|
149
|
+
if (!(0, utils_1.isGramAsset)(parameters.asset)) {
|
|
150
150
|
return this.createJettonPythMessage(parameters, operationPayload, parameters.pyth, general_1.OPCODES.LIQUIDATE_MASTER);
|
|
151
151
|
}
|
|
152
152
|
else {
|
|
@@ -58,7 +58,7 @@ function getUserJettonData(ownerAddress, assetName, jettonWalletCode, jettonMast
|
|
|
58
58
|
}
|
|
59
59
|
function getUserJettonWallet(ownerAddress, poolAssetConfig) {
|
|
60
60
|
const assetName = poolAssetConfig.name;
|
|
61
|
-
if (assetName == '
|
|
61
|
+
if (assetName == 'GRAM' || poolAssetConfig.assetId === assets_1.UNDEFINED_ASSET.assetId) {
|
|
62
62
|
throw new Error(`Cant getUserJettonWallet for ${poolAssetConfig.name} asset`);
|
|
63
63
|
}
|
|
64
64
|
let jettonWalletCode = poolAssetConfig.jettonWalletCode;
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { PoolAssetConfig } from '../types/Master';
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
2
|
+
export declare function isGramAsset(asset: PoolAssetConfig): boolean;
|
|
3
|
+
export declare function isGramAssetId(assetId: bigint): boolean;
|
|
4
|
+
/** @deprecated renamed to isGramAsset; kept for backward compatibility. */
|
|
5
|
+
export declare const isTonAsset: typeof isGramAsset;
|
|
6
|
+
/** @deprecated renamed to isGramAssetId; kept for backward compatibility. */
|
|
7
|
+
export declare const isTonAssetId: typeof isGramAssetId;
|
|
4
8
|
export declare function delay(ms: number): Promise<unknown>;
|
|
5
9
|
export interface FetchConfig {
|
|
6
10
|
retries: number;
|
package/dist/utils/utils.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidSubaccountId = exports.proxyFetchRetries = exports.DefaultFetchConfig = exports.delay = exports.isTonAssetId = exports.isTonAsset = void 0;
|
|
3
|
+
exports.isValidSubaccountId = exports.proxyFetchRetries = exports.DefaultFetchConfig = exports.delay = exports.isTonAssetId = exports.isTonAsset = exports.isGramAssetId = exports.isGramAsset = void 0;
|
|
4
4
|
const assets_1 = require("../constants/assets");
|
|
5
|
-
function
|
|
6
|
-
return asset.name === '
|
|
5
|
+
function isGramAsset(asset) {
|
|
6
|
+
return asset.name === 'GRAM';
|
|
7
7
|
}
|
|
8
|
-
exports.
|
|
9
|
-
function
|
|
10
|
-
return assetId === assets_1.ASSET_ID.
|
|
8
|
+
exports.isGramAsset = isGramAsset;
|
|
9
|
+
function isGramAssetId(assetId) {
|
|
10
|
+
return assetId === assets_1.ASSET_ID.GRAM;
|
|
11
11
|
}
|
|
12
|
-
exports.
|
|
12
|
+
exports.isGramAssetId = isGramAssetId;
|
|
13
|
+
/** @deprecated renamed to isGramAsset; kept for backward compatibility. */
|
|
14
|
+
exports.isTonAsset = isGramAsset;
|
|
15
|
+
/** @deprecated renamed to isGramAssetId; kept for backward compatibility. */
|
|
16
|
+
exports.isTonAssetId = isGramAssetId;
|
|
13
17
|
function delay(ms) {
|
|
14
18
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
19
|
}
|
package/package.json
CHANGED
package/src/api/feeds.ts
CHANGED
|
@@ -3,7 +3,11 @@ import { Dictionary } from '@ton/ton';
|
|
|
3
3
|
import { Buffer } from 'buffer';
|
|
4
4
|
|
|
5
5
|
export const FEED_ID = {
|
|
6
|
-
TON
|
|
6
|
+
// GRAM (gram.usd) Pyth feed. Replaces the retired TON/USD feed
|
|
7
|
+
// (0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026).
|
|
8
|
+
GRAM: '0xe41cd8a90528974c7b97b506abb694e2cc5750b119f796a7001890c1a93a572d',
|
|
9
|
+
/** @deprecated TON/USD feed retired; the native asset is now priced via gram.usd. Use GRAM. */
|
|
10
|
+
TON: '0xe41cd8a90528974c7b97b506abb694e2cc5750b119f796a7001890c1a93a572d',
|
|
7
11
|
USDT: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
8
12
|
stTON: '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002',
|
|
9
13
|
tsTON: '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25',
|
|
@@ -4,6 +4,11 @@ export const ASSET_ID = {
|
|
|
4
4
|
EVAA: sha256Hash('EVAA'),
|
|
5
5
|
|
|
6
6
|
// Main
|
|
7
|
+
// GRAM (formerly TON). The token id is sha256('TON') for historical reasons:
|
|
8
|
+
// the native asset was registered on-chain as 'TON' before the GRAM rebrand,
|
|
9
|
+
// so the id must stay sha256('TON') to keep matching existing on-chain state.
|
|
10
|
+
GRAM: sha256Hash('TON'),
|
|
11
|
+
/** @deprecated renamed to GRAM; kept for backward compatibility. Same id (sha256('TON')). */
|
|
7
12
|
TON: sha256Hash('TON'),
|
|
8
13
|
USDT: sha256Hash('USDT'),
|
|
9
14
|
jUSDT: sha256Hash('jUSDT'),
|
|
@@ -10,13 +10,17 @@ export const UNDEFINED_ASSET: PoolAssetConfig = {
|
|
|
10
10
|
jettonWalletCode: Cell.EMPTY,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export const
|
|
14
|
-
name: '
|
|
15
|
-
|
|
13
|
+
export const GRAM_MAINNET: PoolAssetConfig = {
|
|
14
|
+
name: 'GRAM',
|
|
15
|
+
// historical id: sha256('TON') — the native asset was registered as 'TON' before the GRAM rebrand
|
|
16
|
+
assetId: ASSET_ID.GRAM,
|
|
16
17
|
jettonMasterAddress: NULL_ADDRESS, // fake
|
|
17
18
|
jettonWalletCode: Cell.EMPTY,
|
|
18
19
|
};
|
|
19
20
|
|
|
21
|
+
/** @deprecated renamed to GRAM_MAINNET; kept for backward compatibility. */
|
|
22
|
+
export const TON_MAINNET = GRAM_MAINNET;
|
|
23
|
+
|
|
20
24
|
export const JUSDT_MAINNET: PoolAssetConfig = {
|
|
21
25
|
name: 'jUSDT',
|
|
22
26
|
assetId: ASSET_ID.jUSDT,
|
|
@@ -3,13 +3,17 @@ import { PoolAssetConfig } from '../../types/Master';
|
|
|
3
3
|
import { ASSET_ID } from '../assets';
|
|
4
4
|
import { JETTON_WALLET_STANDART_CODE_TESTNET, NULL_ADDRESS } from '../general';
|
|
5
5
|
|
|
6
|
-
export const
|
|
7
|
-
name: '
|
|
8
|
-
|
|
6
|
+
export const GRAM_TESTNET: PoolAssetConfig = {
|
|
7
|
+
name: 'GRAM',
|
|
8
|
+
// historical id: sha256('TON') — the native asset was registered as 'TON' before the GRAM rebrand
|
|
9
|
+
assetId: ASSET_ID.GRAM,
|
|
9
10
|
jettonMasterAddress: NULL_ADDRESS, // fake
|
|
10
11
|
jettonWalletCode: Cell.EMPTY,
|
|
11
12
|
};
|
|
12
13
|
|
|
14
|
+
/** @deprecated renamed to GRAM_TESTNET; kept for backward compatibility. */
|
|
15
|
+
export const TON_TESTNET = GRAM_TESTNET;
|
|
16
|
+
|
|
13
17
|
export const JUSDT_TESTNET: PoolAssetConfig = {
|
|
14
18
|
name: 'jUSDT',
|
|
15
19
|
assetId: ASSET_ID.jUSDT,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
PT_tsUSDe_01Sep2025_MAINNET,
|
|
16
16
|
PT_tsUSDe_18Dec2025_MAINNET,
|
|
17
17
|
STTON_MAINNET,
|
|
18
|
-
|
|
18
|
+
GRAM_MAINNET,
|
|
19
19
|
TON_STORM_MAINNET,
|
|
20
20
|
TONUSDT_DEDUST_MAINNET,
|
|
21
21
|
TONUSDT_STONFI_MAINNET,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
|
|
58
58
|
// Pool assets configs
|
|
59
59
|
export const MAINNET_POOL_ASSETS_CONFIG = [
|
|
60
|
-
|
|
60
|
+
GRAM_MAINNET,
|
|
61
61
|
JUSDT_MAINNET,
|
|
62
62
|
JUSDC_MAINNET,
|
|
63
63
|
STTON_MAINNET,
|
|
@@ -76,7 +76,7 @@ export const MAINNET_STABLE_POOL_ASSETS_CONFIG = [
|
|
|
76
76
|
];
|
|
77
77
|
|
|
78
78
|
export const MAINNET_LP_POOL_ASSETS_CONFIG = [
|
|
79
|
-
|
|
79
|
+
GRAM_MAINNET,
|
|
80
80
|
USDT_MAINNET,
|
|
81
81
|
TONUSDT_DEDUST_MAINNET,
|
|
82
82
|
TON_STORM_MAINNET,
|
|
@@ -84,7 +84,7 @@ export const MAINNET_LP_POOL_ASSETS_CONFIG = [
|
|
|
84
84
|
TONUSDT_STONFI_MAINNET,
|
|
85
85
|
];
|
|
86
86
|
|
|
87
|
-
export const MAINNET_ALTS_POOL_ASSETS_CONFIG = [
|
|
87
|
+
export const MAINNET_ALTS_POOL_ASSETS_CONFIG = [GRAM_MAINNET, USDT_MAINNET, CATI_MAINNET, NOT_MAINNET, DOGS_MAINNET];
|
|
88
88
|
|
|
89
89
|
export const MAINNET_POOL_CONFIG: PoolConfig = {
|
|
90
90
|
masterAddress: EVAA_MASTER_MAINNET,
|
|
@@ -95,10 +95,10 @@ export const MAINNET_POOL_CONFIG: PoolConfig = {
|
|
|
95
95
|
poolAssetsConfig: MAINNET_POOL_ASSETS_CONFIG,
|
|
96
96
|
pythOracle: {
|
|
97
97
|
feedsMap: new Map<HexString, FeedMapItem>([
|
|
98
|
-
[FEED_ID.
|
|
98
|
+
[FEED_ID.GRAM, { assetId: ASSET_ID.GRAM, feedId: "0x0" }],
|
|
99
99
|
[FEED_ID.USDT, { assetId: ASSET_ID.USDT, feedId: "0x0" }],
|
|
100
|
-
[FEED_ID.tsTON, { assetId: ASSET_ID.tsTON, feedId: FEED_ID.
|
|
101
|
-
[FEED_ID.stTON, { assetId: ASSET_ID.stTON, feedId: FEED_ID.
|
|
100
|
+
[FEED_ID.tsTON, { assetId: ASSET_ID.tsTON, feedId: FEED_ID.GRAM }],
|
|
101
|
+
[FEED_ID.stTON, { assetId: ASSET_ID.stTON, feedId: FEED_ID.GRAM }],
|
|
102
102
|
[FEED_ID.USDe, { assetId: ASSET_ID.USDe, feedId: "0x0" }],
|
|
103
103
|
[FEED_ID.tsUSDe, { assetId: ASSET_ID.tsUSDe, feedId: FEED_ID.USDe }],
|
|
104
104
|
]),
|
|
@@ -110,7 +110,7 @@ export const MAINNET_POOL_CONFIG: PoolConfig = {
|
|
|
110
110
|
}),
|
|
111
111
|
poolAssetsConfig: MAINNET_POOL_ASSETS_CONFIG,
|
|
112
112
|
poolAssetsHEConfig: [
|
|
113
|
-
{ title: 'ton', assets: [
|
|
113
|
+
{ title: 'ton', assets: [GRAM_MAINNET, TSTON_MAINNET], heCategory: 1 },
|
|
114
114
|
{ title: 'stable', assets: [USDT_MAINNET, USDE_MAINNET, TSUSDE_MAINNET], heCategory: 2 },
|
|
115
115
|
],
|
|
116
116
|
lendingCode: LENDING_CODE,
|
|
@@ -141,7 +141,7 @@ export const MAINNET_LP_POOL_CONFIG: PoolConfig = {
|
|
|
141
141
|
}),
|
|
142
142
|
poolAssetsConfig: MAINNET_LP_POOL_ASSETS_CONFIG,
|
|
143
143
|
poolAssetsHEConfig: [
|
|
144
|
-
{ title: 'ton', assets: [
|
|
144
|
+
{ title: 'ton', assets: [GRAM_MAINNET, TON_STORM_MAINNET], heCategory: 1 },
|
|
145
145
|
{ title: 'stable', assets: [USDT_MAINNET, USDT_STORM_MAINNET], heCategory: 2 },
|
|
146
146
|
],
|
|
147
147
|
lendingCode: LENDING_CODE,
|
|
@@ -158,7 +158,7 @@ export const MAINNET_LP_POOL_COPY_CONFIG: PoolConfig = {
|
|
|
158
158
|
}),
|
|
159
159
|
poolAssetsConfig: MAINNET_LP_POOL_ASSETS_CONFIG,
|
|
160
160
|
poolAssetsHEConfig: [
|
|
161
|
-
{ title: 'ton', assets: [
|
|
161
|
+
{ title: 'ton', assets: [GRAM_MAINNET, TON_STORM_MAINNET], heCategory: 1 },
|
|
162
162
|
{ title: 'stable', assets: [USDT_MAINNET, USDT_STORM_MAINNET], heCategory: 2 },
|
|
163
163
|
],
|
|
164
164
|
lendingCode: LENDING_CODE,
|
|
@@ -178,7 +178,7 @@ export const MAINNET_ALTS_POOL_CONFIG: PoolConfig = {
|
|
|
178
178
|
lendingCode: LENDING_CODE,
|
|
179
179
|
};
|
|
180
180
|
|
|
181
|
-
export const MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = [
|
|
181
|
+
export const MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = [GRAM_MAINNET, USDT_MAINNET, JUSDT_MAINNET];
|
|
182
182
|
|
|
183
183
|
export const MAINNET_PYTH_V8_TOB_POOL_CONFIG: PoolConfig = {
|
|
184
184
|
masterAddress: EVAA_PYTH_TOB_MAINNET,
|
|
@@ -189,7 +189,7 @@ export const MAINNET_PYTH_V8_TOB_POOL_CONFIG: PoolConfig = {
|
|
|
189
189
|
poolAssetsConfig: MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG,
|
|
190
190
|
pythOracle: {
|
|
191
191
|
feedsMap: new Map<HexString, FeedMapItem>([
|
|
192
|
-
[FEED_ID.
|
|
192
|
+
[FEED_ID.GRAM, { assetId: ASSET_ID.GRAM, feedId: '0x0' }],
|
|
193
193
|
[FEED_ID.USDT, { assetId: ASSET_ID.USDT, feedId: '0x0' }],
|
|
194
194
|
]),
|
|
195
195
|
pythAddress: PYTH_ORACLE_MAINNET,
|
|
@@ -201,7 +201,7 @@ export const MAINNET_PYTH_V8_TOB_POOL_CONFIG: PoolConfig = {
|
|
|
201
201
|
lendingCode: LENDING_CODE,
|
|
202
202
|
};
|
|
203
203
|
|
|
204
|
-
export const MAINNET_V8_TOB_POOL_ASSETS_CONFIG = [
|
|
204
|
+
export const MAINNET_V8_TOB_POOL_ASSETS_CONFIG = [GRAM_MAINNET, USDT_MAINNET];
|
|
205
205
|
|
|
206
206
|
export const MAINNET_V8_TOB_POOL_CONFIG: PoolConfig = {
|
|
207
207
|
masterAddress: EVAA_TOB_MAINNET,
|
|
@@ -222,7 +222,7 @@ export const MAINNET_MASTER_TON_REWARD_CONFIG: EvaaRewardsConfig = {
|
|
|
222
222
|
evaaMasterAddress: new Address(0, Buffer.alloc(32, 0)),
|
|
223
223
|
rewardMasterCode: EVAA_REWARDS_MASTER_CODE_MAINNET,
|
|
224
224
|
rewardUserCode: EVAA_REWARDS_USER_CODE_MAINNET,
|
|
225
|
-
asset:
|
|
225
|
+
asset: GRAM_MAINNET,
|
|
226
226
|
availableReward: 0,
|
|
227
227
|
publicKey: Buffer.from('bfe9a30221db4dff4c17e55d985e0b13a8f597bbb28002f311dc4429dad1ca95', 'hex'), // adminAddress publicKey
|
|
228
228
|
};
|
|
@@ -253,14 +253,14 @@ export const MAINNET_CLASSIC_HE_POOL_CONFIG: PoolConfig = {
|
|
|
253
253
|
masterConstants: MASTER_CONSTANTS,
|
|
254
254
|
collector: new FakeCollector(
|
|
255
255
|
Dictionary.empty<bigint, bigint>()
|
|
256
|
-
.set(ASSET_ID.
|
|
256
|
+
.set(ASSET_ID.GRAM, 1_300_000_000n)
|
|
257
257
|
.set(ASSET_ID.tsTON, 1_500_000_000n)
|
|
258
258
|
.set(ASSET_ID.TUSDT, 1_000_000_000n)
|
|
259
259
|
.set(ASSET_ID.TUSDe, 1_000_000_000n),
|
|
260
260
|
),
|
|
261
|
-
poolAssetsConfig: [
|
|
261
|
+
poolAssetsConfig: [GRAM_MAINNET, TSTON_MAINNET, TUSDE_MAINNET, TUSDT_MAINNET],
|
|
262
262
|
poolAssetsHEConfig: [
|
|
263
|
-
{ title: 'ton', assets: [
|
|
263
|
+
{ title: 'ton', assets: [GRAM_MAINNET, TSTON_MAINNET], heCategory: 1 },
|
|
264
264
|
{ title: 'stable', assets: [TUSDT_MAINNET, TUSDE_MAINNET], heCategory: 2 },
|
|
265
265
|
],
|
|
266
266
|
lendingCode: LENDING_CODE,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
ASSET_ID,
|
|
9
9
|
EUSDT_TESTNET,
|
|
10
10
|
JUSDC_TESTNET,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
GRAM_MAINNET,
|
|
12
|
+
GRAM_TESTNET,
|
|
13
13
|
TSTON_MAINNET,
|
|
14
14
|
USDE_MAINNET,
|
|
15
15
|
USDT_MAINNET,
|
|
@@ -28,9 +28,9 @@ import {
|
|
|
28
28
|
TESTNET_PYTH_VERSION_TOB_AUDITED,
|
|
29
29
|
} from '../general';
|
|
30
30
|
|
|
31
|
-
export const TESTNET_POOL_ASSETS_CONFIG = [
|
|
31
|
+
export const TESTNET_POOL_ASSETS_CONFIG = [GRAM_TESTNET, JUSDC_TESTNET];
|
|
32
32
|
|
|
33
|
-
export const TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = [
|
|
33
|
+
export const TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = [GRAM_TESTNET, JUSDC_TESTNET];
|
|
34
34
|
|
|
35
35
|
export const TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED: PoolConfig = {
|
|
36
36
|
masterAddress: EVAA_MASTER_TESTNET_PYTH_TOB_AUDITED,
|
|
@@ -41,9 +41,9 @@ export const TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED: PoolConfig = {
|
|
|
41
41
|
pythOracle: {
|
|
42
42
|
feedsMap: new Map<HexString, FeedMapItem>([
|
|
43
43
|
[
|
|
44
|
-
FEED_ID.
|
|
44
|
+
FEED_ID.GRAM,
|
|
45
45
|
{
|
|
46
|
-
assetId: ASSET_ID.
|
|
46
|
+
assetId: ASSET_ID.GRAM,
|
|
47
47
|
feedId: '0x0',
|
|
48
48
|
},
|
|
49
49
|
],
|
|
@@ -77,12 +77,12 @@ export const TESTNET_CLASSIC_HE_POOL_CONFIG: PoolConfig = {
|
|
|
77
77
|
masterVersion: 0,
|
|
78
78
|
masterConstants: MASTER_CONSTANTS,
|
|
79
79
|
collector: new ClassicCollector({
|
|
80
|
-
poolAssetsConfig: [
|
|
80
|
+
poolAssetsConfig: [GRAM_MAINNET, TSTON_MAINNET, USDT_MAINNET, USDE_MAINNET],
|
|
81
81
|
minimalOracles: 1,
|
|
82
82
|
evaaOracles: ORACLES_TESTNET,
|
|
83
83
|
}),
|
|
84
84
|
lendingCode: LENDING_CODE,
|
|
85
|
-
poolAssetsConfig: [
|
|
85
|
+
poolAssetsConfig: [GRAM_MAINNET, TSTON_MAINNET, USDT_MAINNET, USDE_MAINNET],
|
|
86
86
|
poolAssetsHEConfig: [],
|
|
87
87
|
};
|
|
88
88
|
|
|
@@ -91,7 +91,7 @@ export const TESTNET_MASTER_REWARD_CONFIG: EvaaRewardsConfig = {
|
|
|
91
91
|
evaaMasterAddress: new Address(0, Buffer.alloc(32, 0)),
|
|
92
92
|
rewardMasterCode: EVAA_REWARDS_MASTER_CODE_TESTNET,
|
|
93
93
|
rewardUserCode: EVAA_REWARDS_USER_CODE_TESTNET,
|
|
94
|
-
asset:
|
|
94
|
+
asset: GRAM_TESTNET,
|
|
95
95
|
availableReward: 0,
|
|
96
96
|
publicKey: Buffer.from('c38be45e033419b49cd22c97fbd23610fbc851a931208f8b4a1817dd11cb63ac', 'hex'), // adminAddress publicKey
|
|
97
97
|
};
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
SendMode,
|
|
12
12
|
storeStateInit,
|
|
13
13
|
} from '@ton/core';
|
|
14
|
-
import {
|
|
14
|
+
import { isGramAsset, isValidSubaccountId } from '..';
|
|
15
15
|
import { parseMasterData } from '../api/parser';
|
|
16
16
|
import { OracleParser } from '../api/parsers/AbstractOracleParser';
|
|
17
17
|
import { ClassicOracleInfo } from '../api/parsers/ClassicOracleParser';
|
|
@@ -325,7 +325,7 @@ export abstract class AbstractEvaaMaster<T extends MasterData<MasterConfig<Oracl
|
|
|
325
325
|
protected buildSupplyWithdrawOperationPayload(
|
|
326
326
|
parameters: PythSupplyWithdrawParameters | ClassicSupplyWithdrawParameters,
|
|
327
327
|
): Cell {
|
|
328
|
-
const isTon =
|
|
328
|
+
const isTon = isGramAsset(parameters.supplyAsset);
|
|
329
329
|
|
|
330
330
|
const supplyData = beginCell();
|
|
331
331
|
if (isTon) {
|
|
@@ -365,7 +365,7 @@ export abstract class AbstractEvaaMaster<T extends MasterData<MasterConfig<Oracl
|
|
|
365
365
|
AbstractEvaaMaster.validateSupplyParameters(parameters);
|
|
366
366
|
|
|
367
367
|
const subaccountId = parameters.subaccountId ?? 0;
|
|
368
|
-
const isTon =
|
|
368
|
+
const isTon = isGramAsset(parameters.asset);
|
|
369
369
|
|
|
370
370
|
const operationPayload = beginCell()
|
|
371
371
|
.storeUint(OPCODES.SUPPLY_MASTER, 32)
|
|
@@ -454,7 +454,7 @@ export abstract class AbstractEvaaMaster<T extends MasterData<MasterConfig<Oracl
|
|
|
454
454
|
.storeUint(parameters.collateralAsset, 256)
|
|
455
455
|
.storeUint(parameters.minCollateralAmount, 64)
|
|
456
456
|
.storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
457
|
-
.storeUint(
|
|
457
|
+
.storeUint(isGramAsset(parameters.asset) ? parameters.liquidationAmount : 0, 64);
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
abstract sendLiquidation(
|
|
@@ -540,7 +540,7 @@ export abstract class AbstractEvaaMaster<T extends MasterData<MasterConfig<Oracl
|
|
|
540
540
|
}
|
|
541
541
|
|
|
542
542
|
async sendTx(provider: ContractProvider, via: Sender, value: bigint, message: Cell, asset: PoolAssetConfig) {
|
|
543
|
-
if (!
|
|
543
|
+
if (!isGramAsset(asset)) {
|
|
544
544
|
if (!via.address) throw new Error('Via address is required for jetton supply');
|
|
545
545
|
const jettonWallet = provider.open(JettonWallet.createFromAddress(getUserJettonWallet(via.address, asset)));
|
|
546
546
|
await jettonWallet.sendTransfer(via, value, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { beginCell, Builder, Cell, ContractProvider, Sender } from '@ton/core';
|
|
2
|
-
import {
|
|
2
|
+
import { isGramAsset, LiquidationParameters, GRAM_MAINNET } from '..';
|
|
3
3
|
import { ClassicOracleInfo, ClassicOracleParser } from '../api/parsers/ClassicOracleParser';
|
|
4
4
|
import { FEES, OPCODES } from '../constants/general';
|
|
5
5
|
import {
|
|
@@ -58,7 +58,7 @@ export class EvaaMasterClassic extends AbstractEvaaMaster<ClassicMasterData> {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
createSupplyWithdrawMessage(parameters: ClassicSupplyWithdrawParameters): Cell {
|
|
61
|
-
const isTon =
|
|
61
|
+
const isTon = isGramAsset(parameters.supplyAsset);
|
|
62
62
|
|
|
63
63
|
const operationPayload = this.buildSupplyWithdrawOperationPayload(parameters);
|
|
64
64
|
|
|
@@ -89,7 +89,7 @@ export class EvaaMasterClassic extends AbstractEvaaMaster<ClassicMasterData> {
|
|
|
89
89
|
): Promise<void> {
|
|
90
90
|
// Compatibility layer using supply-withdraw with TON zero supply
|
|
91
91
|
await this.sendSupplyWithdraw(provider, via, value, {
|
|
92
|
-
supplyAsset:
|
|
92
|
+
supplyAsset: GRAM_MAINNET,
|
|
93
93
|
supplyAmount: 0n,
|
|
94
94
|
queryID: parameters.queryID,
|
|
95
95
|
withdrawAsset: parameters.asset,
|
|
@@ -114,7 +114,7 @@ export class EvaaMasterClassic extends AbstractEvaaMaster<ClassicMasterData> {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
createLiquidationMessage(parameters: ClassicLiquidationParameters): Cell {
|
|
117
|
-
const isTon =
|
|
117
|
+
const isTon = isGramAsset(parameters.asset);
|
|
118
118
|
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
119
119
|
|
|
120
120
|
if (!isTon) {
|
|
@@ -2,10 +2,10 @@ import { HexString } from '@pythnetwork/hermes-client';
|
|
|
2
2
|
import { Address, beginCell, Cell, ContractProvider, Dictionary, Sender, SendMode } from '@ton/core';
|
|
3
3
|
import { PythOracleInfo, PythOracleParser } from '../api/parsers/PythOracleParser';
|
|
4
4
|
import { composeFeedsCell, packPythUpdatesData } from '../api/prices';
|
|
5
|
-
import {
|
|
5
|
+
import { GRAM_MAINNET } from '../constants';
|
|
6
6
|
import { FEES, OPCODES } from '../constants/general';
|
|
7
7
|
import { PoolAssetConfig } from '../types/Master';
|
|
8
|
-
import {
|
|
8
|
+
import { isGramAsset } from '../utils/utils';
|
|
9
9
|
import {
|
|
10
10
|
AbstractEvaaMaster,
|
|
11
11
|
BaseMasterConfig,
|
|
@@ -183,7 +183,7 @@ export class EvaaMasterPyth extends AbstractEvaaMaster<PythMasterData> {
|
|
|
183
183
|
.storeSlice(operationPayload.beginParse())
|
|
184
184
|
.endCell();
|
|
185
185
|
|
|
186
|
-
if (!
|
|
186
|
+
if (!isGramAsset(parameters.supplyAsset)) {
|
|
187
187
|
return this.createJettonTransferMessage(parameters, FEES.SUPPLY_WITHDRAW + FEES.JETTON_FWD, messageBody);
|
|
188
188
|
} else {
|
|
189
189
|
return beginCell()
|
|
@@ -202,7 +202,7 @@ export class EvaaMasterPyth extends AbstractEvaaMaster<PythMasterData> {
|
|
|
202
202
|
return this.createSupplyWithdrawMessageNoPrices(parameters, operationPayload);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
if (!
|
|
205
|
+
if (!isGramAsset(parameters.supplyAsset)) {
|
|
206
206
|
return this.createJettonPythMessage(
|
|
207
207
|
parameters, // as JettonParams & { queryID: number | bigint },
|
|
208
208
|
operationPayload,
|
|
@@ -251,7 +251,7 @@ export class EvaaMasterPyth extends AbstractEvaaMaster<PythMasterData> {
|
|
|
251
251
|
parameters: PythWithdrawParameters,
|
|
252
252
|
): Promise<void> {
|
|
253
253
|
const message = this.createSupplyWithdrawMessage({
|
|
254
|
-
supplyAsset:
|
|
254
|
+
supplyAsset: GRAM_MAINNET,
|
|
255
255
|
supplyAmount: 0n,
|
|
256
256
|
queryID: parameters.queryID,
|
|
257
257
|
withdrawAsset: parameters.asset,
|
|
@@ -286,7 +286,7 @@ export class EvaaMasterPyth extends AbstractEvaaMaster<PythMasterData> {
|
|
|
286
286
|
createLiquidationMessage(parameters: PythLiquidationParameters): Cell {
|
|
287
287
|
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
288
288
|
|
|
289
|
-
if (!
|
|
289
|
+
if (!isGramAsset(parameters.asset)) {
|
|
290
290
|
return this.createJettonPythMessage(
|
|
291
291
|
parameters,
|
|
292
292
|
operationPayload,
|
|
@@ -57,7 +57,7 @@ function getUserJettonData(ownerAddress: Address, assetName: string, jettonWalle
|
|
|
57
57
|
}
|
|
58
58
|
export function getUserJettonWallet(ownerAddress: Address, poolAssetConfig: PoolAssetConfig) {
|
|
59
59
|
const assetName = poolAssetConfig.name;
|
|
60
|
-
if (assetName == '
|
|
60
|
+
if (assetName == 'GRAM' || poolAssetConfig.assetId === UNDEFINED_ASSET.assetId) {
|
|
61
61
|
throw new Error(`Cant getUserJettonWallet for ${poolAssetConfig.name} asset`)
|
|
62
62
|
}
|
|
63
63
|
let jettonWalletCode = poolAssetConfig.jettonWalletCode;
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { ASSET_ID } from '../constants/assets';
|
|
2
2
|
import { PoolAssetConfig } from '../types/Master';
|
|
3
3
|
|
|
4
|
-
export function
|
|
5
|
-
return asset.name === '
|
|
4
|
+
export function isGramAsset(asset: PoolAssetConfig) {
|
|
5
|
+
return asset.name === 'GRAM';
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export function
|
|
9
|
-
return assetId === ASSET_ID.
|
|
8
|
+
export function isGramAssetId(assetId: bigint) {
|
|
9
|
+
return assetId === ASSET_ID.GRAM;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/** @deprecated renamed to isGramAsset; kept for backward compatibility. */
|
|
13
|
+
export const isTonAsset = isGramAsset;
|
|
14
|
+
/** @deprecated renamed to isGramAssetId; kept for backward compatibility. */
|
|
15
|
+
export const isTonAssetId = isGramAssetId;
|
|
16
|
+
|
|
12
17
|
export function delay(ms: number) {
|
|
13
18
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
14
19
|
}
|