@evaafi/sdk 0.9.0 → 0.9.2-a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/feeds.d.ts +15 -24
- package/dist/api/feeds.js +22 -49
- package/dist/api/math.d.ts +1 -1
- package/dist/api/math.js +55 -38
- package/dist/api/parser.d.ts +2 -2
- package/dist/api/parser.js +3 -3
- package/dist/api/parsers/PythOracleParser.d.ts +3 -2
- package/dist/api/parsers/PythOracleParser.js +2 -1
- package/dist/api/prices.js +2 -1
- package/dist/constants/assets/assetId.d.ts +3 -1
- package/dist/constants/assets/assetId.js +5 -1
- package/dist/constants/assets/mainnet.d.ts +2 -0
- package/dist/constants/assets/mainnet.js +13 -1
- package/dist/constants/general/index.d.ts +25 -11
- package/dist/constants/general/index.js +15 -1
- package/dist/constants/general/mainnet.d.ts +2 -1
- package/dist/constants/general/mainnet.js +3 -2
- package/dist/constants/pools/mainnet.d.ts +4 -0
- package/dist/constants/pools/mainnet.js +45 -28
- package/dist/constants/pools/testnet.js +14 -6
- package/dist/contracts/AbstractMaster.d.ts +239 -127
- package/dist/contracts/AbstractMaster.js +101 -16
- package/dist/contracts/ClassicMaster.d.ts +12 -12
- package/dist/contracts/PythMaster.d.ts +40 -24
- package/dist/contracts/PythMaster.js +61 -76
- package/dist/contracts/PythOracle.d.ts +15 -0
- package/dist/contracts/PythOracle.js +19 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{prices → oracles}/Types.d.ts +0 -4
- package/dist/oracles/collectors/AbstractCollector.d.ts +10 -0
- package/dist/oracles/collectors/AbstractCollector.js +6 -0
- package/dist/oracles/collectors/ClassicCollector.d.ts +22 -0
- package/dist/oracles/collectors/ClassicCollector.js +192 -0
- package/dist/oracles/collectors/PythCollector.d.ts +27 -0
- package/dist/oracles/collectors/PythCollector.js +266 -0
- package/dist/oracles/collectors/index.d.ts +3 -0
- package/dist/oracles/collectors/index.js +19 -0
- package/dist/{prices → oracles}/index.d.ts +2 -3
- package/dist/{prices → oracles}/index.js +2 -3
- package/dist/oracles/prices/AbstractPrices.d.ts +33 -0
- package/dist/oracles/prices/AbstractPrices.js +40 -0
- package/dist/oracles/prices/ClassicPrices.d.ts +19 -0
- package/dist/oracles/prices/ClassicPrices.js +48 -0
- package/dist/oracles/prices/PythPrices.d.ts +17 -0
- package/dist/oracles/prices/PythPrices.js +32 -0
- package/dist/oracles/prices/index.d.ts +3 -0
- package/dist/oracles/prices/index.js +19 -0
- package/dist/{prices → oracles}/sources/Backend.js +11 -8
- package/dist/{prices → oracles}/sources/Icp.js +10 -6
- package/dist/{prices → oracles}/utils.d.ts +6 -1
- package/dist/{prices → oracles}/utils.js +10 -1
- package/dist/types/Master.d.ts +4 -5
- package/dist/utils/fivaUtils.d.ts +2 -0
- package/dist/utils/fivaUtils.js +19 -0
- package/dist/utils/userJettonWallet.js +15 -1
- package/dist/utils/utils.d.ts +1 -1
- package/dist/utils/utils.js +4 -2
- package/package.json +1 -1
- package/src/api/feeds.ts +24 -60
- package/src/api/math.ts +118 -90
- package/src/api/parser.ts +5 -5
- package/src/api/parsers/PythOracleParser.ts +6 -2
- package/src/api/prices.ts +2 -1
- package/src/constants/assets/assetId.ts +7 -1
- package/src/constants/assets/mainnet.ts +24 -0
- package/src/constants/general/index.ts +16 -1
- package/src/constants/general/mainnet.ts +2 -1
- package/src/constants/pools/mainnet.ts +42 -38
- package/src/constants/pools/testnet.ts +17 -8
- package/src/contracts/AbstractMaster.ts +272 -144
- package/src/contracts/ClassicMaster.ts +12 -12
- package/src/contracts/PythMaster.ts +130 -123
- package/src/contracts/PythOracle.ts +20 -0
- package/src/contracts/index.ts +2 -0
- package/src/index.ts +1 -1
- package/src/{prices → oracles}/Types.ts +0 -5
- package/src/oracles/collectors/AbstractCollector.ts +22 -0
- package/src/oracles/collectors/ClassicCollector.ts +263 -0
- package/src/oracles/collectors/PythCollector.ts +372 -0
- package/src/oracles/collectors/index.ts +3 -0
- package/src/{prices → oracles}/index.ts +2 -3
- package/src/oracles/prices/AbstractPrices.ts +59 -0
- package/src/oracles/prices/ClassicPrices.ts +52 -0
- package/src/oracles/prices/PythPrices.ts +40 -0
- package/src/oracles/prices/index.ts +3 -0
- package/src/{prices → oracles}/sources/Backend.ts +12 -11
- package/src/{prices → oracles}/sources/Icp.ts +10 -9
- package/src/{prices → oracles}/utils.ts +12 -1
- package/src/types/Master.ts +4 -6
- package/src/utils/fivaUtils.ts +19 -0
- package/src/utils/userJettonWallet.ts +18 -1
- package/src/utils/utils.ts +4 -2
- package/dist/api/pyth.d.ts +0 -16
- package/dist/api/pyth.js +0 -35
- package/dist/constants/assets.d.ts +0 -48
- package/dist/constants/assets.js +0 -176
- package/dist/constants/general.d.ts +0 -67
- package/dist/constants/general.js +0 -75
- package/dist/constants/pools.d.ts +0 -13
- package/dist/constants/pools.js +0 -120
- package/dist/contracts/MasterContract.d.ts +0 -156
- package/dist/contracts/MasterContract.js +0 -260
- package/dist/prices/Oracle.interface.d.ts +0 -9
- package/dist/prices/Oracle.interface.js +0 -2
- package/dist/prices/Prices.d.ts +0 -11
- package/dist/prices/Prices.js +0 -53
- package/dist/prices/PricesCollector.d.ts +0 -22
- package/dist/prices/PricesCollector.js +0 -146
- package/dist/prices/PythCollector.d.ts +0 -22
- package/dist/prices/PythCollector.js +0 -217
- package/src/prices/Oracle.interface.ts +0 -18
- package/src/prices/Prices.ts +0 -45
- package/src/prices/PricesCollector.ts +0 -169
- package/src/prices/PythCollector.ts +0 -294
- /package/dist/{prices → oracles}/Types.js +0 -0
- /package/dist/{prices → oracles}/constants.d.ts +0 -0
- /package/dist/{prices → oracles}/constants.js +0 -0
- /package/dist/{prices → oracles}/sources/Backend.d.ts +0 -0
- /package/dist/{prices → oracles}/sources/Icp.d.ts +0 -0
- /package/dist/{prices → oracles}/sources/PriceSource.d.ts +0 -0
- /package/dist/{prices → oracles}/sources/PriceSource.js +0 -0
- /package/dist/{prices → oracles}/sources/index.d.ts +0 -0
- /package/dist/{prices → oracles}/sources/index.js +0 -0
- /package/src/{prices → oracles}/constants.ts +0 -0
- /package/src/{prices → oracles}/sources/PriceSource.ts +0 -0
- /package/src/{prices → oracles}/sources/index.ts +0 -0
package/dist/types/Master.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Address, Cell, Dictionary } from '@ton/core';
|
|
3
|
-
import {
|
|
3
|
+
import { AbstractCollector } from '../oracles';
|
|
4
4
|
export { FeedMapItem, parseFeedsMapDict } from '../api/feeds';
|
|
5
5
|
export type MasterConstants = {
|
|
6
6
|
FACTOR_SCALE: bigint;
|
|
@@ -15,7 +15,6 @@ export type MasterConstants = {
|
|
|
15
15
|
ASSET_BRATE_SCALE: bigint;
|
|
16
16
|
COLLATERAL_WORTH_THRESHOLD: bigint;
|
|
17
17
|
};
|
|
18
|
-
export type PoolAssetsConfig = PoolAssetConfig[];
|
|
19
18
|
export type PoolAssetConfig = {
|
|
20
19
|
name: string;
|
|
21
20
|
assetId: bigint;
|
|
@@ -26,9 +25,9 @@ export type PoolConfig = {
|
|
|
26
25
|
masterAddress: Address;
|
|
27
26
|
masterVersion: number;
|
|
28
27
|
masterConstants: MasterConstants;
|
|
29
|
-
poolAssetsConfig:
|
|
28
|
+
poolAssetsConfig: PoolAssetConfig[];
|
|
30
29
|
lendingCode: Cell;
|
|
31
|
-
|
|
30
|
+
collector: AbstractCollector;
|
|
32
31
|
};
|
|
33
32
|
export type UpgradeConfig = {
|
|
34
33
|
masterCodeVersion: number;
|
|
@@ -70,7 +69,7 @@ export type AssetData = {
|
|
|
70
69
|
bRate: bigint;
|
|
71
70
|
totalSupply: bigint;
|
|
72
71
|
totalBorrow: bigint;
|
|
73
|
-
|
|
72
|
+
lastAccrual: bigint;
|
|
74
73
|
balance: bigint;
|
|
75
74
|
trackingSupplyIndex: bigint;
|
|
76
75
|
trackingBorrowIndex: bigint;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateCloseAddress = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const sha256BigInt_1 = require("./sha256BigInt");
|
|
6
|
+
function calculateCloseAddress(address, closeToAddress) {
|
|
7
|
+
const curHashpart = BigInt('0x' + address.hash.toString('hex'));
|
|
8
|
+
const desiredHashpart = BigInt('0x' + closeToAddress.hash.toString('hex'));
|
|
9
|
+
const rewriteBits = 8;
|
|
10
|
+
const mask = (1n << BigInt(256 - rewriteBits)) - 1n;
|
|
11
|
+
const antimask = invertBigInt(mask, 256);
|
|
12
|
+
const newHashpart = (curHashpart & mask) | (desiredHashpart & antimask);
|
|
13
|
+
return new core_1.Address(0, (0, sha256BigInt_1.bigIntToBuffer)(newHashpart));
|
|
14
|
+
}
|
|
15
|
+
exports.calculateCloseAddress = calculateCloseAddress;
|
|
16
|
+
function invertBigInt(value, bits) {
|
|
17
|
+
const maxValue = (1n << BigInt(bits)) - 1n;
|
|
18
|
+
return value ^ maxValue;
|
|
19
|
+
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getUserJettonWallet = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
const assets_1 = require("../constants/assets");
|
|
6
|
+
const fivaUtils_1 = require("./fivaUtils");
|
|
6
7
|
function getUserJettonData(ownerAddress, assetName, jettonWalletCode, jettonMasterAddress) {
|
|
7
8
|
switch (assetName) {
|
|
8
9
|
case 'DOGS':
|
|
@@ -16,6 +17,7 @@ function getUserJettonData(ownerAddress, assetName, jettonWalletCode, jettonMast
|
|
|
16
17
|
.storeAddress(jettonMasterAddress)
|
|
17
18
|
.endCell();
|
|
18
19
|
case 'PT_tsUSDe_01Sep2025':
|
|
20
|
+
case 'PT_tsUSDe_18Dec2025':
|
|
19
21
|
return (0, core_1.beginCell)()
|
|
20
22
|
.storeCoins(0)
|
|
21
23
|
.storeAddress(ownerAddress)
|
|
@@ -65,12 +67,24 @@ function getUserJettonWallet(ownerAddress, poolAssetConfig) {
|
|
|
65
67
|
jettonWalletCode = new core_1.Cell({ exotic: true, bits: lib_prep.bits, refs: lib_prep.refs });
|
|
66
68
|
}
|
|
67
69
|
const jettonData = getUserJettonData(ownerAddress, assetName, jettonWalletCode, poolAssetConfig.jettonMasterAddress);
|
|
68
|
-
|
|
70
|
+
let stateInit = (0, core_1.beginCell)()
|
|
69
71
|
.store((0, core_1.storeStateInit)({
|
|
70
72
|
code: jettonWalletCode,
|
|
71
73
|
data: jettonData
|
|
72
74
|
}))
|
|
73
75
|
.endCell();
|
|
76
|
+
if (poolAssetConfig.name === 'PT_tsUSDe_18Dec2025') {
|
|
77
|
+
stateInit = (0, core_1.beginCell)()
|
|
78
|
+
.storeUint(1, 1) // fixed_prefix_length
|
|
79
|
+
.storeUint(8, 5) // rewrite_bits
|
|
80
|
+
.storeUint(0, 1) // special (Maybe=0)
|
|
81
|
+
.storeMaybeRef(jettonWalletCode) // code (Maybe)
|
|
82
|
+
.storeMaybeRef(jettonData) // data (Maybe)
|
|
83
|
+
.storeUint(0, 1) // libraries empty
|
|
84
|
+
.endCell();
|
|
85
|
+
const addr = new core_1.Address(0, stateInit.hash());
|
|
86
|
+
return (0, fivaUtils_1.calculateCloseAddress)(addr, poolAssetConfig.jettonMasterAddress);
|
|
87
|
+
}
|
|
74
88
|
return new core_1.Address(0, stateInit.hash());
|
|
75
89
|
}
|
|
76
90
|
exports.getUserJettonWallet = getUserJettonWallet;
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export interface FetchConfig {
|
|
|
7
7
|
timeout: number;
|
|
8
8
|
}
|
|
9
9
|
export declare const DefaultFetchConfig: FetchConfig;
|
|
10
|
-
export declare function proxyFetchRetries<T>(
|
|
10
|
+
export declare function proxyFetchRetries<T>(factory: () => Promise<T>, config?: FetchConfig): Promise<T>;
|
|
11
11
|
export declare function isValidSubaccountId(subaccountId: number): boolean;
|
package/dist/utils/utils.js
CHANGED
|
@@ -18,14 +18,16 @@ exports.DefaultFetchConfig = {
|
|
|
18
18
|
retries: 3,
|
|
19
19
|
timeout: 1000,
|
|
20
20
|
};
|
|
21
|
-
async function proxyFetchRetries(
|
|
21
|
+
async function proxyFetchRetries(factory, config = exports.DefaultFetchConfig) {
|
|
22
22
|
let lastError = null;
|
|
23
23
|
for (let attempt = 0; attempt <= config.retries; attempt++) {
|
|
24
24
|
try {
|
|
25
25
|
const timeoutPromise = new Promise((_, reject) => {
|
|
26
26
|
setTimeout(() => reject(new Error('Request timeout')), config.timeout);
|
|
27
27
|
});
|
|
28
|
-
|
|
28
|
+
// Create a fresh promise per attempt
|
|
29
|
+
const result = await Promise.race([factory(), timeoutPromise]);
|
|
30
|
+
return result;
|
|
29
31
|
}
|
|
30
32
|
catch (error) {
|
|
31
33
|
lastError = error instanceof Error ? error : new Error(String(error));
|
package/package.json
CHANGED
package/src/api/feeds.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import { HexString } from '@pythnetwork/hermes-client';
|
|
1
2
|
import { Dictionary } from '@ton/ton';
|
|
2
3
|
import { Buffer } from 'buffer';
|
|
3
|
-
import { ASSET_ID } from '../constants/assets';
|
|
4
4
|
|
|
5
|
-
export const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export const FEED_ID = {
|
|
6
|
+
TON: '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026',
|
|
7
|
+
USDT: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
8
|
+
stTON: '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002',
|
|
9
|
+
tsTON: '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25',
|
|
10
|
+
USDC: '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
|
11
|
+
USDe: '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d',
|
|
12
|
+
tsUSDe: '0xcbe184846426619a60f51056d26efecb0537ad3a73b1e965fe695d06a257cb19',
|
|
13
|
+
};
|
|
12
14
|
|
|
13
15
|
export function bigintToBuffer(value: bigint, size: number): Buffer {
|
|
14
16
|
if (value < 0n) {
|
|
@@ -21,70 +23,32 @@ export function bigintToBuffer(value: bigint, size: number): Buffer {
|
|
|
21
23
|
return Buffer.from(padded, 'hex');
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
export const packConnectedFeeds = (evaa_id: bigint,
|
|
25
|
-
return Buffer.concat([bigintToBuffer(evaa_id, 32), bigintToBuffer(
|
|
26
|
+
export const packConnectedFeeds = (evaa_id: bigint, feedId: HexString) => {
|
|
27
|
+
return Buffer.concat([bigintToBuffer(evaa_id, 32), bigintToBuffer(BigInt(feedId), 32)]);
|
|
26
28
|
};
|
|
27
29
|
|
|
28
|
-
export const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
export const EVAA_JUSDC_PRICE_FEED_ID = ASSET_ID.jUSDC;
|
|
35
|
-
export const EVAA_JUSDT_PRICE_FEED_ID = ASSET_ID.jUSDT;
|
|
36
|
-
export const EVAA_USDE_PRICE_FEED_ID = ASSET_ID.USDe;
|
|
37
|
-
export const EVAA_TSUSDE_PRICE_FEED_ID = ASSET_ID.tsUSDe;
|
|
38
|
-
|
|
39
|
-
export const MAIN_POOL_FEEDS_MAP: Dictionary<bigint, Buffer> = (() => {
|
|
40
|
-
const map = Dictionary.empty<bigint, Buffer>();
|
|
41
|
-
map.set(BigInt(PYTH_TON_PRICE_FEED_ID), packConnectedFeeds(EVAA_TON_PRICE_FEED_ID, 0n));
|
|
42
|
-
map.set(BigInt(PYTH_USDT_PRICE_FEED_ID), packConnectedFeeds(EVAA_USDT_PRICE_FEED_ID, 0n));
|
|
43
|
-
map.set(
|
|
44
|
-
BigInt(PYTH_STTON_PRICE_FEED_ID),
|
|
45
|
-
packConnectedFeeds(EVAA_STTON_PRICE_FEED_ID, BigInt(PYTH_TON_PRICE_FEED_ID)),
|
|
46
|
-
);
|
|
47
|
-
map.set(
|
|
48
|
-
BigInt(PYTH_TSTON_PRICE_FEED_ID),
|
|
49
|
-
packConnectedFeeds(EVAA_TSTON_PRICE_FEED_ID, BigInt(PYTH_TON_PRICE_FEED_ID)),
|
|
50
|
-
);
|
|
51
|
-
map.set(BigInt(PYTH_USDC_PRICE_FEED_ID), packConnectedFeeds(EVAA_JUSDC_PRICE_FEED_ID, 0n));
|
|
52
|
-
map.set(BigInt(PYTH_USDT_PRICE_FEED_ID), packConnectedFeeds(EVAA_JUSDT_PRICE_FEED_ID, 0n));
|
|
53
|
-
map.set(BigInt(PYTH_USDE_PRICE_FEED_ID), packConnectedFeeds(EVAA_USDE_PRICE_FEED_ID, 0n));
|
|
54
|
-
map.set(BigInt(PYTH_TSUSDE_PRICE_FEED_ID), packConnectedFeeds(EVAA_TSUSDE_PRICE_FEED_ID, 0n));
|
|
55
|
-
return map;
|
|
56
|
-
})();
|
|
30
|
+
export const unpackConnectedFeeds = (buffer: Buffer): FeedMapItem => {
|
|
31
|
+
return {
|
|
32
|
+
assetId: BigInt(`0x${buffer.toString('hex', 0, 32)}`),
|
|
33
|
+
feedId: `0x${buffer.toString('hex', 32)}`,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
57
36
|
|
|
58
37
|
export type FeedMapItem = {
|
|
59
|
-
|
|
60
|
-
|
|
38
|
+
assetId: bigint;
|
|
39
|
+
feedId: HexString;
|
|
61
40
|
};
|
|
62
41
|
|
|
63
42
|
export function parseFeedsMapDict(dict: Dictionary<bigint, Buffer>) {
|
|
64
|
-
const parsedData = new Map<
|
|
43
|
+
const parsedData = new Map<HexString, FeedMapItem>();
|
|
65
44
|
for (const key of dict.keys()) {
|
|
66
45
|
const buffer = dict.get(key)!;
|
|
67
46
|
|
|
68
|
-
const
|
|
69
|
-
const
|
|
47
|
+
const assetId = BigInt(`0x${buffer.toString('hex', 0, 32)}`);
|
|
48
|
+
const feedId = `0x${buffer.toString('hex', 32)}`;
|
|
70
49
|
|
|
71
|
-
|
|
72
|
-
const referredPythFeed = BigInt(hex2);
|
|
73
|
-
|
|
74
|
-
parsedData.set(key, { evaaId, referredPythFeed });
|
|
50
|
+
parsedData.set(`0x${key.toString(16)}`, { assetId, feedId });
|
|
75
51
|
}
|
|
76
52
|
|
|
77
53
|
return parsedData;
|
|
78
54
|
}
|
|
79
|
-
|
|
80
|
-
export const TESTNET_ALLOWED_REF_TOKENS: Dictionary<bigint, bigint> = (() => {
|
|
81
|
-
const map = Dictionary.empty<bigint, bigint>();
|
|
82
|
-
map.set(BigInt(EVAA_JUSDT_PRICE_FEED_ID), BigInt(EVAA_USDT_PRICE_FEED_ID));
|
|
83
|
-
return map;
|
|
84
|
-
})();
|
|
85
|
-
|
|
86
|
-
export const TESTNET_FEEDS_MAP: Dictionary<bigint, Buffer> = (() => {
|
|
87
|
-
const map = Dictionary.empty<bigint, Buffer>();
|
|
88
|
-
map.set(BigInt(PYTH_TON_PRICE_FEED_ID), packConnectedFeeds(EVAA_TON_PRICE_FEED_ID, 0n));
|
|
89
|
-
return map;
|
|
90
|
-
})();
|