@evaafi/sdk 0.7.0 → 0.9.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 +30 -0
- package/dist/api/feeds.js +73 -0
- package/dist/api/liquidation.js +1 -1
- package/dist/api/math.js +1 -1
- package/dist/api/parser.d.ts +4 -2
- package/dist/api/parser.js +39 -18
- package/dist/api/parsers/AbstractOracleParser.d.ts +11 -0
- package/dist/api/parsers/AbstractOracleParser.js +9 -0
- package/dist/api/parsers/ClassicOracleParser.d.ts +10 -0
- package/dist/api/parsers/ClassicOracleParser.js +16 -0
- package/dist/api/parsers/PythOracleParser.d.ts +17 -0
- package/dist/api/parsers/PythOracleParser.js +22 -0
- package/dist/api/parsers/index.d.ts +3 -0
- package/dist/api/parsers/index.js +19 -0
- package/dist/api/prices.d.ts +6 -6
- package/dist/api/prices.js +37 -46
- package/dist/api/pyth.d.ts +16 -0
- package/dist/api/pyth.js +35 -0
- package/dist/constants/assets/assetId.d.ts +22 -0
- package/dist/constants/assets/assetId.js +29 -0
- package/dist/constants/assets/index.d.ts +3 -0
- package/dist/constants/assets/index.js +19 -0
- package/dist/constants/assets/mainnet.d.ts +19 -0
- package/dist/constants/assets/mainnet.js +114 -0
- package/dist/constants/assets/testnet.d.ts +14 -0
- package/dist/constants/assets/testnet.js +54 -0
- package/dist/constants/general/index.d.ts +65 -0
- package/dist/constants/general/index.js +93 -0
- package/dist/constants/general/mainnet.d.ts +24 -0
- package/dist/constants/general/mainnet.js +53 -0
- package/dist/constants/general/testnet.d.ts +12 -0
- package/dist/constants/general/testnet.js +15 -0
- package/dist/constants/general.d.ts +2 -2
- package/dist/constants/general.js +4 -4
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.js +19 -0
- package/dist/constants/pools/index.d.ts +2 -0
- package/dist/constants/pools/index.js +18 -0
- package/dist/constants/pools/mainnet.d.ts +14 -0
- package/dist/constants/pools/mainnet.js +145 -0
- package/dist/constants/pools/testnet.d.ts +9 -0
- package/dist/constants/pools/testnet.js +57 -0
- package/dist/constants/pools.js +7 -7
- package/dist/contracts/AbstractMaster.d.ts +185 -0
- package/dist/contracts/AbstractMaster.js +179 -0
- package/dist/contracts/ClassicMaster.d.ts +34 -0
- package/dist/contracts/ClassicMaster.js +87 -0
- package/dist/contracts/PythMaster.d.ts +61 -0
- package/dist/contracts/PythMaster.js +179 -0
- package/dist/contracts/UserContract.d.ts +1 -7
- package/dist/contracts/UserContract.js +1 -19
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.js +21 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.js +20 -60
- package/dist/prices/Oracle.interface.d.ts +9 -0
- package/dist/prices/Oracle.interface.js +2 -0
- package/dist/prices/Prices.d.ts +5 -3
- package/dist/prices/Prices.js +13 -3
- package/dist/prices/PricesCollector.d.ts +17 -7
- package/dist/prices/PricesCollector.js +67 -51
- package/dist/prices/PythCollector.d.ts +22 -0
- package/dist/prices/PythCollector.js +217 -0
- package/dist/prices/Types.d.ts +17 -1
- package/dist/prices/Types.js +8 -1
- package/dist/prices/index.d.ts +4 -3
- package/dist/prices/index.js +4 -3
- package/dist/prices/sources/Backend.d.ts +5 -4
- package/dist/prices/sources/Backend.js +16 -13
- package/dist/prices/sources/Icp.d.ts +2 -1
- package/dist/prices/sources/Icp.js +12 -9
- package/dist/prices/sources/PriceSource.d.ts +7 -6
- package/dist/prices/utils.d.ts +10 -8
- package/dist/prices/utils.js +32 -46
- package/dist/types/Master.d.ts +10 -30
- package/dist/types/Master.js +3 -0
- package/dist/utils/userJettonWallet.js +0 -8
- package/dist/utils/utils.d.ts +8 -1
- package/dist/utils/utils.js +31 -2
- package/package.json +3 -2
- package/src/api/feeds.ts +90 -0
- package/src/api/liquidation.ts +1 -1
- package/src/api/math.ts +1 -1
- package/src/api/parser.ts +100 -38
- package/src/api/parsers/AbstractOracleParser.ts +16 -0
- package/src/api/parsers/ClassicOracleParser.ts +20 -0
- package/src/api/parsers/PythOracleParser.ts +34 -0
- package/src/api/parsers/index.ts +3 -0
- package/src/api/prices.ts +32 -41
- package/src/constants/assets/assetId.ts +30 -0
- package/src/constants/assets/index.ts +3 -0
- package/src/constants/{assets.ts → assets/mainnet.ts} +3 -96
- package/src/constants/assets/testnet.ts +74 -0
- package/src/constants/general/index.ts +91 -0
- package/src/constants/{general.ts → general/mainnet.ts} +48 -72
- package/src/constants/general/testnet.ts +25 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/pools/index.ts +2 -0
- package/src/constants/pools/mainnet.ts +218 -0
- package/src/constants/pools/testnet.ts +75 -0
- package/src/contracts/AbstractMaster.ts +450 -0
- package/src/contracts/ClassicMaster.ts +149 -0
- package/src/contracts/PythMaster.ts +313 -0
- package/src/contracts/UserContract.ts +7 -28
- package/src/contracts/index.ts +7 -0
- package/src/index.ts +18 -85
- package/src/prices/Oracle.interface.ts +18 -0
- package/src/prices/Prices.ts +17 -4
- package/src/prices/PricesCollector.ts +91 -68
- package/src/prices/PythCollector.ts +294 -0
- package/src/prices/Types.ts +28 -6
- package/src/prices/index.ts +4 -3
- package/src/prices/sources/Backend.ts +21 -19
- package/src/prices/sources/Icp.ts +13 -10
- package/src/prices/sources/PriceSource.ts +6 -5
- package/src/prices/utils.ts +65 -68
- package/src/types/Master.ts +29 -52
- package/src/types/User.ts +15 -7
- package/src/utils/userJettonWallet.ts +0 -8
- package/src/utils/utils.ts +41 -2
- package/src/constants/pools.ts +0 -177
- package/src/contracts/MasterContract.ts +0 -410
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvaaMasterClassic = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
const ClassicOracleParser_1 = require("../api/parsers/ClassicOracleParser");
|
|
7
|
+
const general_1 = require("../constants/general");
|
|
8
|
+
const AbstractMaster_1 = require("./AbstractMaster");
|
|
9
|
+
class EvaaMasterClassic extends AbstractMaster_1.AbstractEvaaMaster {
|
|
10
|
+
constructor(parameters) {
|
|
11
|
+
super(parameters);
|
|
12
|
+
}
|
|
13
|
+
buildGeneralDataPayload(parameters) {
|
|
14
|
+
return (0, core_1.beginCell)()
|
|
15
|
+
.storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
16
|
+
.storeMaybeRef(parameters.priceData)
|
|
17
|
+
.storeUint(parameters.tonForRepayRemainings ?? 0n, 64)
|
|
18
|
+
.storeRef(parameters.payload)
|
|
19
|
+
.storeInt(parameters.subaccountId ?? 0, 16)
|
|
20
|
+
.storeInt(parameters.returnRepayRemainingsFlag ? -1 : 0, 2)
|
|
21
|
+
.storeInt(parameters.customPayloadSaturationFlag ? -1 : 0, 2)
|
|
22
|
+
.endCell();
|
|
23
|
+
}
|
|
24
|
+
createSupplyWithdrawMessage(parameters) {
|
|
25
|
+
const isTon = (0, __1.isTonAsset)(parameters.supplyAsset);
|
|
26
|
+
const operationPayload = this.buildSupplyWithdrawOperationPayload(parameters);
|
|
27
|
+
const refOpCode = parameters.priceData
|
|
28
|
+
? general_1.OPCODES.SUPPLY_WITHDRAW_MASTER
|
|
29
|
+
: general_1.OPCODES.SUPPLY_WITHDRAW_MASTER_WITHOUT_PRICES;
|
|
30
|
+
if (!isTon) {
|
|
31
|
+
return this.createJettonTransferMessage(parameters, general_1.FEES.SUPPLY_WITHDRAW, (0, core_1.beginCell)().storeUint(refOpCode, 32).storeSlice(operationPayload.beginParse()).endCell());
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return (0, core_1.beginCell)()
|
|
35
|
+
.storeUint(refOpCode, 32)
|
|
36
|
+
.storeUint(parameters.queryID, 64)
|
|
37
|
+
.storeSlice(operationPayload.beginParse())
|
|
38
|
+
.endCell();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async sendWithdraw(provider, via, value, parameters) {
|
|
42
|
+
// Compatibility layer using supply-withdraw with TON zero supply
|
|
43
|
+
await this.sendSupplyWithdraw(provider, via, value, {
|
|
44
|
+
supplyAsset: __1.TON_MAINNET,
|
|
45
|
+
supplyAmount: 0n,
|
|
46
|
+
queryID: parameters.queryID,
|
|
47
|
+
withdrawAsset: parameters.asset,
|
|
48
|
+
withdrawAmount: parameters.amount,
|
|
49
|
+
withdrawRecipient: parameters.userAddress,
|
|
50
|
+
includeUserCode: parameters.includeUserCode,
|
|
51
|
+
forwardAmount: parameters.forwardAmount,
|
|
52
|
+
payload: parameters.payload,
|
|
53
|
+
subaccountId: parameters.subaccountId ?? 0,
|
|
54
|
+
customPayloadSaturationFlag: parameters.customPayloadSaturationFlag ?? false,
|
|
55
|
+
returnRepayRemainingsFlag: parameters.returnRepayRemainingsFlag ?? false,
|
|
56
|
+
tonForRepayRemainings: 0n,
|
|
57
|
+
priceData: parameters.priceData,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
buildLiquidationOperationPayload(parameters) {
|
|
61
|
+
const operationPayloadBuilder = this.buildLiquidationOperationPayloadBuilder(parameters);
|
|
62
|
+
const innerBuilder = this.buildLiquidationInnerBuilder(parameters);
|
|
63
|
+
return operationPayloadBuilder.storeRef(innerBuilder).storeRef(parameters.priceData);
|
|
64
|
+
}
|
|
65
|
+
createLiquidationMessage(parameters) {
|
|
66
|
+
const isTon = (0, __1.isTonAsset)(parameters.asset);
|
|
67
|
+
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
68
|
+
if (!isTon) {
|
|
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
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return (0, core_1.beginCell)()
|
|
73
|
+
.storeUint(general_1.OPCODES.LIQUIDATE_MASTER, 32)
|
|
74
|
+
.storeUint(parameters.queryID, 64)
|
|
75
|
+
.storeBuilder(operationPayload)
|
|
76
|
+
.endCell();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async sendLiquidation(provider, via, value, parameters) {
|
|
80
|
+
const message = this.createLiquidationMessage(parameters);
|
|
81
|
+
await this.sendTx(provider, via, value, message, parameters.asset);
|
|
82
|
+
}
|
|
83
|
+
async getSync(provider) {
|
|
84
|
+
await this.syncMasterData(provider, new ClassicOracleParser_1.ClassicOracleParser());
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.EvaaMasterClassic = EvaaMasterClassic;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { HexString } from '@pythnetwork/hermes-client';
|
|
3
|
+
import { Address, Cell, ContractProvider, Dictionary, Sender } from '@ton/core';
|
|
4
|
+
import { PythOracleInfo } from '../api/parsers/PythOracleParser';
|
|
5
|
+
import { AbstractEvaaMaster, BaseMasterConfig, BaseMasterData, EvaaParameters, LiquidationInnerParameters, LiquidationOperationBuilderParameters, LiquidationParameters, SupplyWithdrawParameters, WithdrawParameters } from './AbstractMaster';
|
|
6
|
+
/**
|
|
7
|
+
* pyth specific parameters
|
|
8
|
+
*/
|
|
9
|
+
export type PythBaseData = {
|
|
10
|
+
priceData: Buffer | Cell;
|
|
11
|
+
targetFeeds: HexString[];
|
|
12
|
+
requestedRefTokens: bigint[];
|
|
13
|
+
};
|
|
14
|
+
export type ProxySpecificPythParams = {
|
|
15
|
+
pythAddress: Address;
|
|
16
|
+
minPublishTime: number | bigint;
|
|
17
|
+
maxPublishTime: number | bigint;
|
|
18
|
+
};
|
|
19
|
+
export type OnchainSpecificPythParams = {
|
|
20
|
+
publishGap: number | bigint;
|
|
21
|
+
maxStaleness: number | bigint;
|
|
22
|
+
};
|
|
23
|
+
export type JettonPythParams = PythBaseData & OnchainSpecificPythParams;
|
|
24
|
+
export type TonPythParams = PythBaseData & ProxySpecificPythParams;
|
|
25
|
+
export type PythProxyParams = {
|
|
26
|
+
pyth: PythBaseData & (ProxySpecificPythParams | OnchainSpecificPythParams) & {
|
|
27
|
+
pythAddress: Address;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export type PythSupplyWithdrawParameters = SupplyWithdrawParameters & Partial<PythProxyParams>;
|
|
31
|
+
export type PythWithdrawParameters = WithdrawParameters & {
|
|
32
|
+
pyth: TonPythParams;
|
|
33
|
+
};
|
|
34
|
+
export type PythLiquidationOperationParameters = LiquidationOperationBuilderParameters & LiquidationInnerParameters & PythProxyParams;
|
|
35
|
+
export type PythLiquidationParameters = LiquidationParameters & PythLiquidationOperationParameters;
|
|
36
|
+
export type PythMasterConfig = BaseMasterConfig & {
|
|
37
|
+
oraclesInfo: PythOracleInfo;
|
|
38
|
+
};
|
|
39
|
+
export type PythMasterData = BaseMasterData & {
|
|
40
|
+
masterConfig: PythMasterConfig;
|
|
41
|
+
};
|
|
42
|
+
export declare class EvaaMasterPyth extends AbstractEvaaMaster<PythMasterData> {
|
|
43
|
+
constructor(parameters: EvaaParameters);
|
|
44
|
+
protected buildPythMasterMessage(args: {
|
|
45
|
+
queryId: number | bigint;
|
|
46
|
+
opCode: number | bigint;
|
|
47
|
+
updateDataCell: Cell;
|
|
48
|
+
targetFeedsCell: Cell;
|
|
49
|
+
publishGap: number | bigint;
|
|
50
|
+
maxStaleness: number | bigint;
|
|
51
|
+
}, operationPayload: Cell): Cell;
|
|
52
|
+
protected buildPythProxyMessage(targetAddress: Address, priceUpdateData: Cell, targetPythFeeds: Cell, minPublishTime: number | bigint, maxPublishTime: number | bigint, operationPayload: Cell): Cell;
|
|
53
|
+
createSupplyWithdrawMessage(parameters: PythSupplyWithdrawParameters): Cell;
|
|
54
|
+
buildRefTokensDict(requestedRefTokens: bigint[]): Dictionary<bigint, Buffer>;
|
|
55
|
+
buildGeneralDataPayload(parameters: PythSupplyWithdrawParameters): Cell;
|
|
56
|
+
sendWithdraw(provider: ContractProvider, via: Sender, value: bigint, parameters: PythWithdrawParameters): Promise<void>;
|
|
57
|
+
protected buildLiquidationOperationPayload(parameters: PythLiquidationOperationParameters): Cell;
|
|
58
|
+
createLiquidationMessage(parameters: PythLiquidationParameters): Cell;
|
|
59
|
+
sendLiquidation(provider: ContractProvider, via: Sender, value: bigint, parameters: PythLiquidationParameters): Promise<void>;
|
|
60
|
+
getSync(provider: ContractProvider): Promise<void>;
|
|
61
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvaaMasterPyth = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const PythOracleParser_1 = require("../api/parsers/PythOracleParser");
|
|
6
|
+
const prices_1 = require("../api/prices");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const general_1 = require("../constants/general");
|
|
9
|
+
const utils_1 = require("../utils/utils");
|
|
10
|
+
const AbstractMaster_1 = require("./AbstractMaster");
|
|
11
|
+
class EvaaMasterPyth extends AbstractMaster_1.AbstractEvaaMaster {
|
|
12
|
+
constructor(parameters) {
|
|
13
|
+
super(parameters);
|
|
14
|
+
}
|
|
15
|
+
buildPythMasterMessage(args, operationPayload) {
|
|
16
|
+
return (0, core_1.beginCell)()
|
|
17
|
+
.storeUint(args.opCode, 32)
|
|
18
|
+
.storeUint(args.queryId, 64)
|
|
19
|
+
.storeRef((0, core_1.beginCell)()
|
|
20
|
+
.storeRef(args.updateDataCell)
|
|
21
|
+
.storeRef(args.targetFeedsCell)
|
|
22
|
+
.storeUint(args.publishGap, 64)
|
|
23
|
+
.storeUint(args.maxStaleness, 64)
|
|
24
|
+
.endCell())
|
|
25
|
+
.storeRef(operationPayload)
|
|
26
|
+
.endCell();
|
|
27
|
+
}
|
|
28
|
+
buildPythProxyMessage(targetAddress, priceUpdateData, targetPythFeeds, minPublishTime, maxPublishTime, operationPayload) {
|
|
29
|
+
return (0, core_1.beginCell)()
|
|
30
|
+
.storeUint(5, 32) // pyth::op_parse_price_feed_updates
|
|
31
|
+
.storeRef(priceUpdateData)
|
|
32
|
+
.storeRef(targetPythFeeds)
|
|
33
|
+
.storeUint(minPublishTime, 64)
|
|
34
|
+
.storeUint(maxPublishTime, 64)
|
|
35
|
+
.storeAddress(targetAddress)
|
|
36
|
+
.storeRef(operationPayload)
|
|
37
|
+
.endCell();
|
|
38
|
+
}
|
|
39
|
+
// TODO: support without OPCODES.SUPPLY_WITHDRAW_MASTER_WITHOUT_PRICES
|
|
40
|
+
createSupplyWithdrawMessage(parameters) {
|
|
41
|
+
const operationPayload = this.buildSupplyWithdrawOperationPayload(parameters);
|
|
42
|
+
if (!(0, utils_1.isTonAsset)(parameters.supplyAsset)) {
|
|
43
|
+
const { priceData, targetFeeds, publishGap, maxStaleness } = parameters.pyth;
|
|
44
|
+
const masterMessage = this.buildPythMasterMessage({
|
|
45
|
+
queryId: parameters.queryID,
|
|
46
|
+
opCode: general_1.OPCODES.SUPPLY_WITHDRAW_MASTER_JETTON,
|
|
47
|
+
updateDataCell: (0, prices_1.packPythUpdatesData)(priceData),
|
|
48
|
+
targetFeedsCell: (0, prices_1.composeFeedsCell)(targetFeeds),
|
|
49
|
+
publishGap,
|
|
50
|
+
maxStaleness,
|
|
51
|
+
}, operationPayload);
|
|
52
|
+
return this.createJettonTransferMessage(parameters, general_1.FEES.SUPPLY_WITHDRAW, masterMessage);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const { priceData, targetFeeds, minPublishTime, maxPublishTime } = parameters.pyth;
|
|
56
|
+
const wrappedOperationPayload = (0, core_1.beginCell)()
|
|
57
|
+
.storeUint(general_1.OPCODES.SUPPLY_WITHDRAW_MASTER, 32)
|
|
58
|
+
.storeUint(parameters.queryID, 64)
|
|
59
|
+
.storeRef(operationPayload)
|
|
60
|
+
.endCell();
|
|
61
|
+
return this.buildPythProxyMessage(this.address, (0, prices_1.packPythUpdatesData)(priceData), (0, prices_1.composeFeedsCell)(targetFeeds), minPublishTime, maxPublishTime, wrappedOperationPayload);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// private createPythWithdrawMessage(parameters: PythWithdrawParameters): Cell {
|
|
65
|
+
// const extraTail =
|
|
66
|
+
// (parameters.subaccountId ?? 0) == 0
|
|
67
|
+
// ? beginCell().endCell()
|
|
68
|
+
// : beginCell()
|
|
69
|
+
// .storeInt(parameters.subaccountId ?? 0, 16)
|
|
70
|
+
// .storeUint(0, 2)
|
|
71
|
+
// .endCell();
|
|
72
|
+
// const wrappedOperationPayload = beginCell()
|
|
73
|
+
// .storeUint(OPCODES.SUPPLY_WITHDRAW_MASTER, 32) // op_code: 0x4
|
|
74
|
+
// .storeUint(parameters.queryID, 64)
|
|
75
|
+
// .storeRef(
|
|
76
|
+
// beginCell()
|
|
77
|
+
// .storeUint(parameters.asset.assetId, 256)
|
|
78
|
+
// .storeUint(parameters.amount, 64)
|
|
79
|
+
// .storeAddress(parameters.userAddress)
|
|
80
|
+
// .storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
81
|
+
// .storeUint(parameters.amountToTransfer, 64)
|
|
82
|
+
// .storeRef(parameters.payload)
|
|
83
|
+
// .storeSlice(extraTail.beginParse())
|
|
84
|
+
// .endCell(),
|
|
85
|
+
// )
|
|
86
|
+
// .endCell();
|
|
87
|
+
// const { priceData, targetFeeds, minPublishTime, maxPublishTime } = parameters.pyth as TonPythParams;
|
|
88
|
+
// return makePythProxyMessage(
|
|
89
|
+
// this.address,
|
|
90
|
+
// packPythUpdatesData(priceData),
|
|
91
|
+
// composeFeedsCell(targetFeeds),
|
|
92
|
+
// minPublishTime,
|
|
93
|
+
// maxPublishTime,
|
|
94
|
+
// wrappedOperationPayload,
|
|
95
|
+
// );
|
|
96
|
+
// }
|
|
97
|
+
buildRefTokensDict(requestedRefTokens) {
|
|
98
|
+
const refsDict = core_1.Dictionary.empty(core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.Buffer(0));
|
|
99
|
+
for (const refToken of requestedRefTokens) {
|
|
100
|
+
refsDict.set(refToken, Buffer.alloc(0));
|
|
101
|
+
}
|
|
102
|
+
return refsDict;
|
|
103
|
+
}
|
|
104
|
+
buildGeneralDataPayload(parameters) {
|
|
105
|
+
const refTokensDict = this.buildRefTokensDict(parameters.pyth?.requestedRefTokens ?? []);
|
|
106
|
+
return (0, core_1.beginCell)()
|
|
107
|
+
.storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
108
|
+
.storeDict(refTokensDict, core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.Buffer(0))
|
|
109
|
+
.storeUint(parameters.tonForRepayRemainings ?? 0n, 64)
|
|
110
|
+
.storeRef(parameters.payload)
|
|
111
|
+
.storeInt(parameters.subaccountId ?? 0, 16)
|
|
112
|
+
.storeInt(parameters.returnRepayRemainingsFlag ? -1 : 0, 2)
|
|
113
|
+
.storeInt(parameters.customPayloadSaturationFlag ? -1 : 0, 2)
|
|
114
|
+
.endCell();
|
|
115
|
+
}
|
|
116
|
+
async sendWithdraw(provider, via, value, parameters) {
|
|
117
|
+
const message = this.createSupplyWithdrawMessage({
|
|
118
|
+
supplyAsset: constants_1.TON_MAINNET,
|
|
119
|
+
supplyAmount: 0n,
|
|
120
|
+
queryID: parameters.queryID,
|
|
121
|
+
withdrawAsset: parameters.asset,
|
|
122
|
+
withdrawAmount: parameters.amount,
|
|
123
|
+
withdrawRecipient: parameters.userAddress,
|
|
124
|
+
includeUserCode: parameters.includeUserCode,
|
|
125
|
+
forwardAmount: parameters.forwardAmount,
|
|
126
|
+
payload: parameters.payload,
|
|
127
|
+
subaccountId: parameters.subaccountId ?? 0,
|
|
128
|
+
customPayloadSaturationFlag: parameters.customPayloadSaturationFlag ?? false,
|
|
129
|
+
returnRepayRemainingsFlag: parameters.returnRepayRemainingsFlag ?? false,
|
|
130
|
+
tonForRepayRemainings: 0n,
|
|
131
|
+
pyth: parameters.pyth,
|
|
132
|
+
});
|
|
133
|
+
await via.send({
|
|
134
|
+
value,
|
|
135
|
+
to: parameters.pyth.pythAddress,
|
|
136
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
|
|
137
|
+
body: message,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
buildLiquidationOperationPayload(parameters) {
|
|
141
|
+
const operationPayloadBuilder = this.buildLiquidationOperationPayloadBuilder(parameters);
|
|
142
|
+
const innerBuilder = this.buildLiquidationInnerBuilder(parameters);
|
|
143
|
+
const refTokensDict = this.buildRefTokensDict(parameters.pyth.requestedRefTokens);
|
|
144
|
+
return operationPayloadBuilder.storeDict(refTokensDict).storeRef(innerBuilder).endCell();
|
|
145
|
+
}
|
|
146
|
+
createLiquidationMessage(parameters) {
|
|
147
|
+
const isTon = (0, utils_1.isTonAsset)(parameters.asset);
|
|
148
|
+
const operationPayload = this.buildLiquidationOperationPayload(parameters);
|
|
149
|
+
if (!isTon) {
|
|
150
|
+
const { priceData, targetFeeds, publishGap, maxStaleness } = parameters.pyth;
|
|
151
|
+
const masterMessage = this.buildPythMasterMessage({
|
|
152
|
+
queryId: parameters.queryID,
|
|
153
|
+
opCode: general_1.OPCODES.LIQUIDATE_MASTER,
|
|
154
|
+
updateDataCell: (0, prices_1.packPythUpdatesData)(priceData),
|
|
155
|
+
targetFeedsCell: (0, prices_1.composeFeedsCell)(targetFeeds),
|
|
156
|
+
publishGap,
|
|
157
|
+
maxStaleness,
|
|
158
|
+
}, operationPayload);
|
|
159
|
+
return this.createJettonTransferMessage(parameters, general_1.FEES.LIQUIDATION_JETTON_FWD, masterMessage);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const { priceData, targetFeeds, minPublishTime, maxPublishTime } = parameters.pyth;
|
|
163
|
+
const wrappedOperationPayload = (0, core_1.beginCell)()
|
|
164
|
+
.storeUint(general_1.OPCODES.LIQUIDATE_MASTER, 32)
|
|
165
|
+
.storeUint(parameters.queryID, 64)
|
|
166
|
+
.storeRef(operationPayload)
|
|
167
|
+
.endCell();
|
|
168
|
+
return this.buildPythProxyMessage(this.address, (0, prices_1.packPythUpdatesData)(priceData), (0, prices_1.composeFeedsCell)(targetFeeds), minPublishTime, maxPublishTime, wrappedOperationPayload);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async sendLiquidation(provider, via, value, parameters) {
|
|
172
|
+
const message = this.createLiquidationMessage(parameters);
|
|
173
|
+
await this.sendTx(provider, via, value, message, parameters.asset);
|
|
174
|
+
}
|
|
175
|
+
async getSync(provider) {
|
|
176
|
+
await this.syncMasterData(provider, new PythOracleParser_1.PythOracleParser());
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.EvaaMasterPyth = EvaaMasterPyth;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Dictionary, Sender } from '@ton/core';
|
|
2
|
-
import { UserData, UserLiteData } from '../types/User';
|
|
3
2
|
import { ExtendedAssetsConfig, ExtendedAssetsData, PoolConfig } from '../types/Master';
|
|
4
|
-
import {
|
|
3
|
+
import { UserData, UserLiteData } from '../types/User';
|
|
5
4
|
/**
|
|
6
5
|
* User contract wrapper
|
|
7
6
|
*/
|
|
@@ -48,9 +47,4 @@ export declare class EvaaUser implements Contract {
|
|
|
48
47
|
* @returns true if user is liquidable
|
|
49
48
|
*/
|
|
50
49
|
get isLiquidable(): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Get liquidation parameters for passing to liquidation message
|
|
53
|
-
* @returns liquidation parameters if user is liquidable, otherwise undefined
|
|
54
|
-
*/
|
|
55
|
-
get liquidationParameters(): LiquidationBaseData | undefined;
|
|
56
50
|
}
|
|
@@ -5,7 +5,6 @@ const core_1 = require("@ton/core");
|
|
|
5
5
|
const parser_1 = require("../api/parser");
|
|
6
6
|
const general_1 = require("../constants/general");
|
|
7
7
|
const pools_1 = require("../constants/pools");
|
|
8
|
-
const assets_1 = require("../constants/assets");
|
|
9
8
|
/**
|
|
10
9
|
* User contract wrapper
|
|
11
10
|
*/
|
|
@@ -57,7 +56,7 @@ class EvaaUser {
|
|
|
57
56
|
value,
|
|
58
57
|
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
|
|
59
58
|
body: (0, core_1.beginCell)()
|
|
60
|
-
.
|
|
59
|
+
.storeUint(general_1.OPCODES.ONCHAIN_GETTER, 32)
|
|
61
60
|
.storeUint(queryID, 64)
|
|
62
61
|
.storeRef(forwardPayload)
|
|
63
62
|
.endCell(),
|
|
@@ -98,22 +97,5 @@ class EvaaUser {
|
|
|
98
97
|
}
|
|
99
98
|
return this._data.liquidationData.liquidable;
|
|
100
99
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Get liquidation parameters for passing to liquidation message
|
|
103
|
-
* @returns liquidation parameters if user is liquidable, otherwise undefined
|
|
104
|
-
*/
|
|
105
|
-
get liquidationParameters() {
|
|
106
|
-
if (!this._data || this._data.type === 'inactive' || !this._data.liquidationData.liquidable) {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
borrowerAddress: this._data.ownerAddress,
|
|
111
|
-
loanAsset: this._data.liquidationData.greatestLoanAsset.assetId,
|
|
112
|
-
collateralAsset: this._data.liquidationData.greatestCollateralAsset.assetId,
|
|
113
|
-
minCollateralAmount: this._data.liquidationData.minCollateralAmount,
|
|
114
|
-
liquidationAmount: this._data.liquidationData.liquidationAmount,
|
|
115
|
-
tonLiquidation: this._data.liquidationData.greatestLoanAsset.assetId === assets_1.TON_MAINNET.assetId,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
100
|
}
|
|
119
101
|
exports.EvaaUser = EvaaUser;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AbstractMaster"), exports);
|
|
18
|
+
__exportStar(require("./ClassicMaster"), exports);
|
|
19
|
+
__exportStar(require("./PythMaster"), exports);
|
|
20
|
+
__exportStar(require("./UserContract"), exports);
|
|
21
|
+
__exportStar(require("./JettonWallet"), exports);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
1
|
+
export * from './api/math';
|
|
2
|
+
export * from './api/liquidation';
|
|
3
|
+
export * from './api/parser';
|
|
4
|
+
export * from './api/parsers';
|
|
5
|
+
export * from './api/prices';
|
|
6
|
+
export * from './api/feeds';
|
|
7
|
+
export * from './contracts';
|
|
8
|
+
export { EvaaUserRewards } from './rewards/EvaaRewards';
|
|
9
|
+
export { JettonMinter as RewardJettonMinter, type JettonMinterConfig, type MintMessage } from './rewards/JettonMinter';
|
|
10
|
+
export { JettonWallet as RewardJettonWallet, type JettonWalletConfig } from './rewards/JettonWallet';
|
|
8
11
|
export { RewardMaster } from './rewards/RewardMaster';
|
|
9
|
-
export { type EvaaRewardsConfig } from './types/MasterRewards';
|
|
10
12
|
export { RewardUser } from './rewards/RewardUser';
|
|
13
|
+
export { type EvaaRewardsConfig } from './types/MasterRewards';
|
|
11
14
|
export { type EvaaUserRewardsConfig } from './types/UserRewards';
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export { EvaaUserRewards } from './rewards/EvaaRewards';
|
|
15
|
-
export { UpgradeConfig, AssetConfig, MasterConfig, AssetData, AssetInterest, AssetApy, ExtendedAssetData, MasterData, PoolConfig, ExtendedAssetsData, ExtendedAssetsConfig, PoolAssetConfig, PoolAssetsConfig, MasterConstants } from './types/Master';
|
|
16
|
-
export { BalanceType, UserBalance, UserLiqudationData, LiquidableData, NonLiquidableData, LiquidationData, UserDataInactive, UserDataActive, UserData, BalanceChangeType } from './types/User';
|
|
15
|
+
export * from './types/Master';
|
|
16
|
+
export * from './types/User';
|
|
17
17
|
export * from './constants/general';
|
|
18
18
|
export * from './constants/pools';
|
|
19
19
|
export * from './constants/assets';
|
|
20
|
-
export * from './utils/utils';
|
|
21
20
|
export * from './prices';
|
|
21
|
+
export * from './utils/utils';
|
|
22
22
|
export { getLastSentBoc, getTonConnectSender } from './utils/tonConnectSender';
|
|
23
23
|
export { getUserJettonWallet } from './utils/userJettonWallet';
|
package/dist/index.js
CHANGED
|
@@ -14,80 +14,40 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.getUserJettonWallet = void 0;
|
|
17
|
+
exports.getUserJettonWallet = exports.getTonConnectSender = exports.getLastSentBoc = exports.RewardUser = exports.RewardMaster = exports.RewardJettonWallet = exports.RewardJettonMinter = exports.EvaaUserRewards = void 0;
|
|
19
18
|
// Math
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Object.defineProperty(exports, "mulDiv", { enumerable: true, get: function () { return math_1.mulDiv; } });
|
|
23
|
-
Object.defineProperty(exports, "bigIntMin", { enumerable: true, get: function () { return math_1.bigIntMin; } });
|
|
24
|
-
Object.defineProperty(exports, "bigIntMax", { enumerable: true, get: function () { return math_1.bigIntMax; } });
|
|
25
|
-
Object.defineProperty(exports, "calculatePresentValue", { enumerable: true, get: function () { return math_1.calculatePresentValue; } });
|
|
26
|
-
Object.defineProperty(exports, "calculateCurrentRates", { enumerable: true, get: function () { return math_1.calculateCurrentRates; } });
|
|
27
|
-
Object.defineProperty(exports, "calculateAssetData", { enumerable: true, get: function () { return math_1.calculateAssetData; } });
|
|
28
|
-
Object.defineProperty(exports, "calculateAssetInterest", { enumerable: true, get: function () { return math_1.calculateAssetInterest; } });
|
|
29
|
-
Object.defineProperty(exports, "getAvailableToBorrow", { enumerable: true, get: function () { return math_1.getAvailableToBorrow; } });
|
|
30
|
-
Object.defineProperty(exports, "calculateMaximumWithdrawAmount", { enumerable: true, get: function () { return math_1.calculateMaximumWithdrawAmount; } });
|
|
31
|
-
Object.defineProperty(exports, "presentValue", { enumerable: true, get: function () { return math_1.presentValue; } });
|
|
32
|
-
Object.defineProperty(exports, "calculateLiquidationData", { enumerable: true, get: function () { return math_1.calculateLiquidationData; } });
|
|
33
|
-
Object.defineProperty(exports, "predictHealthFactor", { enumerable: true, get: function () { return math_1.predictHealthFactor; } });
|
|
34
|
-
Object.defineProperty(exports, "calculateHealthParams", { enumerable: true, get: function () { return math_1.calculateHealthParams; } });
|
|
35
|
-
Object.defineProperty(exports, "calculateInterestWithSupplyBorrow", { enumerable: true, get: function () { return math_1.calculateInterestWithSupplyBorrow; } });
|
|
36
|
-
Object.defineProperty(exports, "predictAPY", { enumerable: true, get: function () { return math_1.predictAPY; } });
|
|
37
|
-
Object.defineProperty(exports, "BigMath", { enumerable: true, get: function () { return math_1.BigMath; } });
|
|
38
|
-
Object.defineProperty(exports, "getAssetLiquidityMinusReserves", { enumerable: true, get: function () { return math_1.getAssetLiquidityMinusReserves; } });
|
|
39
|
-
var liquidation_1 = require("./api/liquidation");
|
|
40
|
-
Object.defineProperty(exports, "calculateLiquidationAmounts", { enumerable: true, get: function () { return liquidation_1.calculateLiquidationAmounts; } });
|
|
41
|
-
Object.defineProperty(exports, "calculateMinCollateralByTransferredAmount", { enumerable: true, get: function () { return liquidation_1.calculateMinCollateralByTransferredAmount; } });
|
|
42
|
-
Object.defineProperty(exports, "isLiquidatable", { enumerable: true, get: function () { return liquidation_1.isLiquidatable; } });
|
|
43
|
-
Object.defineProperty(exports, "isBadDebt", { enumerable: true, get: function () { return liquidation_1.isBadDebt; } });
|
|
44
|
-
Object.defineProperty(exports, "addReserve", { enumerable: true, get: function () { return liquidation_1.addReserve; } });
|
|
45
|
-
Object.defineProperty(exports, "deductReserve", { enumerable: true, get: function () { return liquidation_1.deductReserve; } });
|
|
46
|
-
Object.defineProperty(exports, "addLiquidationBonus", { enumerable: true, get: function () { return liquidation_1.addLiquidationBonus; } });
|
|
47
|
-
Object.defineProperty(exports, "deductLiquidationBonus", { enumerable: true, get: function () { return liquidation_1.deductLiquidationBonus; } });
|
|
48
|
-
Object.defineProperty(exports, "toAssetAmount", { enumerable: true, get: function () { return liquidation_1.toAssetAmount; } });
|
|
49
|
-
Object.defineProperty(exports, "toAssetWorth", { enumerable: true, get: function () { return liquidation_1.toAssetWorth; } });
|
|
50
|
-
Object.defineProperty(exports, "prepareAssetInfo", { enumerable: true, get: function () { return liquidation_1.prepareAssetInfo; } });
|
|
51
|
-
Object.defineProperty(exports, "findAssetById", { enumerable: true, get: function () { return liquidation_1.findAssetById; } });
|
|
52
|
-
Object.defineProperty(exports, "selectGreatestAssets", { enumerable: true, get: function () { return liquidation_1.selectGreatestAssets; } });
|
|
53
|
-
Object.defineProperty(exports, "calculateAssetsValues", { enumerable: true, get: function () { return liquidation_1.calculateAssetsValues; } });
|
|
19
|
+
__exportStar(require("./api/math"), exports);
|
|
20
|
+
__exportStar(require("./api/liquidation"), exports);
|
|
54
21
|
// Parser
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Object.defineProperty(exports, "parseMasterData", { enumerable: true, get: function () { return parser_1.parseMasterData; } });
|
|
59
|
-
Object.defineProperty(exports, "parseUserData", { enumerable: true, get: function () { return parser_1.parseUserData; } });
|
|
60
|
-
Object.defineProperty(exports, "parseUserLiteData", { enumerable: true, get: function () { return parser_1.parseUserLiteData; } });
|
|
22
|
+
__exportStar(require("./api/parser"), exports);
|
|
23
|
+
// Oracles
|
|
24
|
+
__exportStar(require("./api/parsers"), exports);
|
|
61
25
|
// Prices
|
|
62
|
-
|
|
63
|
-
|
|
26
|
+
__exportStar(require("./api/prices"), exports);
|
|
27
|
+
// Feeds utils
|
|
28
|
+
__exportStar(require("./api/feeds"), exports);
|
|
64
29
|
// Contracts' wrappers
|
|
65
|
-
|
|
66
|
-
Object.defineProperty(exports, "JettonWallet", { enumerable: true, get: function () { return JettonWallet_1.JettonWallet; } });
|
|
67
|
-
var MasterContract_1 = require("./contracts/MasterContract");
|
|
68
|
-
Object.defineProperty(exports, "Evaa", { enumerable: true, get: function () { return MasterContract_1.Evaa; } });
|
|
69
|
-
var UserContract_1 = require("./contracts/UserContract");
|
|
70
|
-
Object.defineProperty(exports, "EvaaUser", { enumerable: true, get: function () { return UserContract_1.EvaaUser; } });
|
|
30
|
+
__exportStar(require("./contracts"), exports);
|
|
71
31
|
// Rewards contracts wrappers
|
|
32
|
+
var EvaaRewards_1 = require("./rewards/EvaaRewards");
|
|
33
|
+
Object.defineProperty(exports, "EvaaUserRewards", { enumerable: true, get: function () { return EvaaRewards_1.EvaaUserRewards; } });
|
|
34
|
+
var JettonMinter_1 = require("./rewards/JettonMinter");
|
|
35
|
+
Object.defineProperty(exports, "RewardJettonMinter", { enumerable: true, get: function () { return JettonMinter_1.JettonMinter; } });
|
|
36
|
+
var JettonWallet_1 = require("./rewards/JettonWallet");
|
|
37
|
+
Object.defineProperty(exports, "RewardJettonWallet", { enumerable: true, get: function () { return JettonWallet_1.JettonWallet; } });
|
|
72
38
|
var RewardMaster_1 = require("./rewards/RewardMaster");
|
|
73
39
|
Object.defineProperty(exports, "RewardMaster", { enumerable: true, get: function () { return RewardMaster_1.RewardMaster; } });
|
|
74
40
|
var RewardUser_1 = require("./rewards/RewardUser");
|
|
75
41
|
Object.defineProperty(exports, "RewardUser", { enumerable: true, get: function () { return RewardUser_1.RewardUser; } });
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
Object.defineProperty(exports, "RewardJettonWallet", { enumerable: true, get: function () { return JettonWallet_2.JettonWallet; } });
|
|
80
|
-
var EvaaRewards_1 = require("./rewards/EvaaRewards");
|
|
81
|
-
Object.defineProperty(exports, "EvaaUserRewards", { enumerable: true, get: function () { return EvaaRewards_1.EvaaUserRewards; } });
|
|
82
|
-
var User_1 = require("./types/User");
|
|
83
|
-
Object.defineProperty(exports, "BalanceType", { enumerable: true, get: function () { return User_1.BalanceType; } });
|
|
84
|
-
Object.defineProperty(exports, "BalanceChangeType", { enumerable: true, get: function () { return User_1.BalanceChangeType; } });
|
|
42
|
+
// Types
|
|
43
|
+
__exportStar(require("./types/Master"), exports);
|
|
44
|
+
__exportStar(require("./types/User"), exports);
|
|
85
45
|
// Constants
|
|
86
46
|
__exportStar(require("./constants/general"), exports);
|
|
87
47
|
__exportStar(require("./constants/pools"), exports);
|
|
88
48
|
__exportStar(require("./constants/assets"), exports);
|
|
89
|
-
__exportStar(require("./utils/utils"), exports);
|
|
90
49
|
__exportStar(require("./prices"), exports);
|
|
50
|
+
__exportStar(require("./utils/utils"), exports);
|
|
91
51
|
// Utils
|
|
92
52
|
var tonConnectSender_1 = require("./utils/tonConnectSender");
|
|
93
53
|
Object.defineProperty(exports, "getLastSentBoc", { enumerable: true, get: function () { return tonConnectSender_1.getLastSentBoc; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Dictionary } from '@ton/core';
|
|
2
|
+
import { Prices } from '.';
|
|
3
|
+
import { PoolAssetConfig, PoolAssetsConfig } from '../types/Master';
|
|
4
|
+
import { FetchConfig } from '../utils/utils';
|
|
5
|
+
export interface Oracle {
|
|
6
|
+
getPricesForLiquidate(realPrincipals: Dictionary<bigint, bigint>, fetchConfig?: FetchConfig): Promise<Prices>;
|
|
7
|
+
getPricesForSupplyWithdraw(realPrincipals: Dictionary<bigint, bigint>, supplyAsset: PoolAssetConfig | undefined, withdrawAsset: PoolAssetConfig | undefined, collateralToDebt: boolean, fetchConfig?: FetchConfig): Promise<Prices>;
|
|
8
|
+
getPrices(assets: PoolAssetsConfig, fetchConfig?: FetchConfig): Promise<Prices>;
|
|
9
|
+
}
|
package/dist/prices/Prices.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Cell, Dictionary } from
|
|
2
|
-
import { PoolAssetConfig } from
|
|
1
|
+
import { Cell, Dictionary } from '@ton/core';
|
|
2
|
+
import { PoolAssetConfig } from '../types/Master';
|
|
3
3
|
export declare class Prices {
|
|
4
4
|
#private;
|
|
5
|
-
constructor(dict: Dictionary<bigint, bigint>, dataCell: Cell);
|
|
5
|
+
constructor(dict: Dictionary<bigint, bigint>, dataCell: Cell, minPublishTime?: bigint, maxPublishTime?: bigint);
|
|
6
6
|
get dict(): Dictionary<bigint, bigint>;
|
|
7
7
|
get dataCell(): Cell;
|
|
8
|
+
get minPublishTime(): bigint | undefined;
|
|
9
|
+
get maxPublishTime(): bigint | undefined;
|
|
8
10
|
getAssetPrice<T extends bigint | PoolAssetConfig>(asset: T): bigint | undefined;
|
|
9
11
|
}
|
package/dist/prices/Prices.js
CHANGED
|
@@ -10,17 +10,21 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _Prices_instances, _Prices_dict, _Prices_dataCell, _Prices_extractAssetId;
|
|
13
|
+
var _Prices_instances, _Prices_dict, _Prices_dataCell, _Prices_minPublishTime, _Prices_maxPublishTime, _Prices_extractAssetId;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.Prices = void 0;
|
|
16
16
|
const core_1 = require("@ton/core");
|
|
17
17
|
class Prices {
|
|
18
|
-
constructor(dict, dataCell) {
|
|
18
|
+
constructor(dict, dataCell, minPublishTime, maxPublishTime) {
|
|
19
19
|
_Prices_instances.add(this);
|
|
20
20
|
_Prices_dict.set(this, void 0);
|
|
21
21
|
_Prices_dataCell.set(this, void 0);
|
|
22
|
+
_Prices_minPublishTime.set(this, void 0);
|
|
23
|
+
_Prices_maxPublishTime.set(this, void 0);
|
|
22
24
|
__classPrivateFieldSet(this, _Prices_dict, dict, "f");
|
|
23
25
|
__classPrivateFieldSet(this, _Prices_dataCell, dataCell, "f");
|
|
26
|
+
__classPrivateFieldSet(this, _Prices_minPublishTime, minPublishTime, "f");
|
|
27
|
+
__classPrivateFieldSet(this, _Prices_maxPublishTime, maxPublishTime, "f");
|
|
24
28
|
}
|
|
25
29
|
get dict() {
|
|
26
30
|
const dict = core_1.Dictionary.empty();
|
|
@@ -32,12 +36,18 @@ class Prices {
|
|
|
32
36
|
get dataCell() {
|
|
33
37
|
return new core_1.Cell(__classPrivateFieldGet(this, _Prices_dataCell, "f"));
|
|
34
38
|
}
|
|
39
|
+
get minPublishTime() {
|
|
40
|
+
return __classPrivateFieldGet(this, _Prices_minPublishTime, "f");
|
|
41
|
+
}
|
|
42
|
+
get maxPublishTime() {
|
|
43
|
+
return __classPrivateFieldGet(this, _Prices_maxPublishTime, "f");
|
|
44
|
+
}
|
|
35
45
|
getAssetPrice(asset) {
|
|
36
46
|
const assetId = __classPrivateFieldGet(this, _Prices_instances, "m", _Prices_extractAssetId).call(this, asset);
|
|
37
47
|
return __classPrivateFieldGet(this, _Prices_dict, "f").get(assetId);
|
|
38
48
|
}
|
|
39
49
|
}
|
|
40
50
|
exports.Prices = Prices;
|
|
41
|
-
_Prices_dict = new WeakMap(), _Prices_dataCell = new WeakMap(), _Prices_instances = new WeakSet(), _Prices_extractAssetId = function _Prices_extractAssetId(asset) {
|
|
51
|
+
_Prices_dict = new WeakMap(), _Prices_dataCell = new WeakMap(), _Prices_minPublishTime = new WeakMap(), _Prices_maxPublishTime = new WeakMap(), _Prices_instances = new WeakSet(), _Prices_extractAssetId = function _Prices_extractAssetId(asset) {
|
|
42
52
|
return typeof asset === 'bigint' ? asset : asset.assetId;
|
|
43
53
|
};
|