@affluent-org/sdk 0.0.1
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/.prettierrc +11 -0
- package/Refactoring.md +548 -0
- package/dist/_compiled/Account.compiled.json +1 -0
- package/dist/_compiled/Receipt.compiled.json +1 -0
- package/dist/_compiled/WTONWallet.compiled.json +1 -0
- package/dist/_compiled/index.d.ts +4 -0
- package/dist/_compiled/index.js +12 -0
- package/dist/affluent.d.ts +14 -0
- package/dist/affluent.js +20 -0
- package/dist/constants/constants.d.ts +2 -0
- package/dist/constants/constants.js +5 -0
- package/dist/constants/contracts.d.ts +9 -0
- package/dist/constants/contracts.js +18 -0
- package/dist/context.d.ts +43 -0
- package/dist/context.js +90 -0
- package/dist/contracts/common/type.d.ts +16 -0
- package/dist/contracts/common/type.js +2 -0
- package/dist/contracts/common/utils.d.ts +3 -0
- package/dist/contracts/common/utils.js +16 -0
- package/dist/contracts/core/account/index.d.ts +38 -0
- package/dist/contracts/core/account/index.js +128 -0
- package/dist/contracts/core/account/type.d.ts +18 -0
- package/dist/contracts/core/account/type.js +2 -0
- package/dist/contracts/core/pool/index.d.ts +149 -0
- package/dist/contracts/core/pool/index.js +379 -0
- package/dist/contracts/core/pool/serializer.d.ts +15 -0
- package/dist/contracts/core/pool/serializer.js +307 -0
- package/dist/contracts/core/pool/type.d.ts +136 -0
- package/dist/contracts/core/pool/type.js +2 -0
- package/dist/contracts/dedust-farm/MockDedustFarm.d.ts +41 -0
- package/dist/contracts/dedust-farm/MockDedustFarm.js +79 -0
- package/dist/contracts/external/tonstaker.d.ts +18 -0
- package/dist/contracts/external/tonstaker.js +26 -0
- package/dist/contracts/factory/factory.d.ts +24 -0
- package/dist/contracts/factory/factory.js +58 -0
- package/dist/contracts/factory/type.d.ts +11 -0
- package/dist/contracts/factory/type.js +2 -0
- package/dist/contracts/farm/distributor.d.ts +43 -0
- package/dist/contracts/farm/distributor.js +83 -0
- package/dist/contracts/farm/receipt.d.ts +40 -0
- package/dist/contracts/farm/receipt.js +68 -0
- package/dist/contracts/irm/jump-irm/serializer.d.ts +4 -0
- package/dist/contracts/irm/jump-irm/serializer.js +26 -0
- package/dist/contracts/irm/jump-irm/type.d.ts +8 -0
- package/dist/contracts/irm/jump-irm/type.js +2 -0
- package/dist/contracts/jetton/jetton-minter.d.ts +23 -0
- package/dist/contracts/jetton/jetton-minter.js +46 -0
- package/dist/contracts/jetton/jetton-wallet.d.ts +67 -0
- package/dist/contracts/jetton/jetton-wallet.js +119 -0
- package/dist/contracts/jetton/type.d.ts +7 -0
- package/dist/contracts/jetton/type.js +2 -0
- package/dist/contracts/liquid_token/dedust/minter.d.ts +56 -0
- package/dist/contracts/liquid_token/dedust/minter.js +112 -0
- package/dist/contracts/liquid_token/dedust/wallet.d.ts +127 -0
- package/dist/contracts/liquid_token/dedust/wallet.js +213 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.d.ts +53 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.js +110 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.d.ts +169 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.js +288 -0
- package/dist/contracts/oracle/composite-onchain-oracle/index.d.ts +108 -0
- package/dist/contracts/oracle/composite-onchain-oracle/index.js +185 -0
- package/dist/contracts/oracle/parser.d.ts +7 -0
- package/dist/contracts/oracle/parser.js +77 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/index.d.ts +56 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/index.js +159 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/serializer.d.ts +4 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/serializer.js +137 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/type.d.ts +57 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/type.js +18 -0
- package/dist/contracts/oracle/redstone-oracle/serializer.d.ts +3 -0
- package/dist/contracts/oracle/redstone-oracle/serializer.js +30 -0
- package/dist/contracts/oracle/redstone-oracle/type.d.ts +9 -0
- package/dist/contracts/oracle/redstone-oracle/type.js +2 -0
- package/dist/contracts/oracle/redstone-parser.d.ts +9 -0
- package/dist/contracts/oracle/redstone-parser.js +58 -0
- package/dist/contracts/rfq/rfq_auction/index.d.ts +216 -0
- package/dist/contracts/rfq/rfq_auction/index.js +334 -0
- package/dist/contracts/rfq/rfq_batch/index.d.ts +346 -0
- package/dist/contracts/rfq/rfq_batch/index.js +448 -0
- package/dist/contracts/rfq/rfq_event_emitter/index.d.ts +132 -0
- package/dist/contracts/rfq/rfq_event_emitter/index.js +143 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmItem.d.ts +41 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmItem.js +83 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.d.ts +45 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.js +92 -0
- package/dist/contracts/unknown-contract/index.d.ts +14 -0
- package/dist/contracts/unknown-contract/index.js +18 -0
- package/dist/contracts/vault/share-vault/index.d.ts +206 -0
- package/dist/contracts/vault/share-vault/index.js +373 -0
- package/dist/contracts/vault/strategy-vault/codec.d.ts +710 -0
- package/dist/contracts/vault/strategy-vault/codec.js +1256 -0
- package/dist/contracts/vault/strategy-vault/computation.d.ts +11 -0
- package/dist/contracts/vault/strategy-vault/computation.js +56 -0
- package/dist/contracts/vault/strategy-vault/constants.d.ts +163 -0
- package/dist/contracts/vault/strategy-vault/constants.js +170 -0
- package/dist/contracts/vault/strategy-vault/index.d.ts +587 -0
- package/dist/contracts/vault/strategy-vault/index.js +406 -0
- package/dist/contracts/vault/strategy-vault/type.d.ts +115 -0
- package/dist/contracts/vault/strategy-vault/type.js +2 -0
- package/dist/contracts/wton/jetton-minter.d.ts +35 -0
- package/dist/contracts/wton/jetton-minter.js +71 -0
- package/dist/contracts/wton/jetton-wallet.d.ts +90 -0
- package/dist/contracts/wton/jetton-wallet.js +153 -0
- package/dist/contracts/wton/type.d.ts +7 -0
- package/dist/contracts/wton/type.js +2 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +65 -0
- package/dist/lib/assert.d.ts +1 -0
- package/dist/lib/assert.js +9 -0
- package/dist/lib/query-cache.d.ts +5 -0
- package/dist/lib/query-cache.js +57 -0
- package/dist/lib/send-msg.d.ts +11 -0
- package/dist/lib/send-msg.js +9 -0
- package/dist/services/composite-oracle/computation.d.ts +55 -0
- package/dist/services/composite-oracle/computation.js +295 -0
- package/dist/services/composite-oracle/index.d.ts +45 -0
- package/dist/services/composite-oracle/index.js +110 -0
- package/dist/services/composite-oracle/query.d.ts +36 -0
- package/dist/services/composite-oracle/query.js +251 -0
- package/dist/services/composite-oracle/types.d.ts +82 -0
- package/dist/services/composite-oracle/types.js +11 -0
- package/dist/services/pool/computation.d.ts +75 -0
- package/dist/services/pool/computation.js +219 -0
- package/dist/services/pool/index.d.ts +94 -0
- package/dist/services/pool/index.js +139 -0
- package/dist/services/pool/oracle.d.ts +20 -0
- package/dist/services/pool/oracle.js +61 -0
- package/dist/services/pool/owner/index.d.ts +37 -0
- package/dist/services/pool/owner/index.js +76 -0
- package/dist/services/pool/owner/types.d.ts +18 -0
- package/dist/services/pool/owner/types.js +2 -0
- package/dist/services/pool/query.d.ts +64 -0
- package/dist/services/pool/query.js +282 -0
- package/dist/services/pool/user/index.d.ts +86 -0
- package/dist/services/pool/user/index.js +285 -0
- package/dist/services/pool/user/types.d.ts +44 -0
- package/dist/services/pool/user/types.js +2 -0
- package/dist/services/rfq-auction/index.d.ts +81 -0
- package/dist/services/rfq-auction/index.js +93 -0
- package/dist/services/rfq-auction/oracle.d.ts +19 -0
- package/dist/services/rfq-auction/oracle.js +60 -0
- package/dist/services/rfq-auction/query.d.ts +50 -0
- package/dist/services/rfq-auction/query.js +19 -0
- package/dist/services/rfq-auction/user/index.d.ts +63 -0
- package/dist/services/rfq-auction/user/index.js +218 -0
- package/dist/services/rfq-auction/user/types.d.ts +29 -0
- package/dist/services/rfq-auction/user/types.js +2 -0
- package/dist/services/rfq-batch/index.d.ts +78 -0
- package/dist/services/rfq-batch/index.js +132 -0
- package/dist/services/rfq-batch/oracle.d.ts +22 -0
- package/dist/services/rfq-batch/oracle.js +54 -0
- package/dist/services/rfq-batch/query.d.ts +46 -0
- package/dist/services/rfq-batch/query.js +34 -0
- package/dist/services/rfq-batch/user/index.d.ts +79 -0
- package/dist/services/rfq-batch/user/index.js +171 -0
- package/dist/services/rfq-batch/user/types.d.ts +37 -0
- package/dist/services/rfq-batch/user/types.js +2 -0
- package/dist/services/share-vault/computation.d.ts +24 -0
- package/dist/services/share-vault/computation.js +42 -0
- package/dist/services/share-vault/index.d.ts +90 -0
- package/dist/services/share-vault/index.js +128 -0
- package/dist/services/share-vault/manager/index.d.ts +40 -0
- package/dist/services/share-vault/manager/index.js +111 -0
- package/dist/services/share-vault/manager/types.d.ts +23 -0
- package/dist/services/share-vault/manager/types.js +2 -0
- package/dist/services/share-vault/owner/index.d.ts +64 -0
- package/dist/services/share-vault/owner/index.js +122 -0
- package/dist/services/share-vault/owner/types.d.ts +33 -0
- package/dist/services/share-vault/owner/types.js +2 -0
- package/dist/services/share-vault/query.d.ts +34 -0
- package/dist/services/share-vault/query.js +138 -0
- package/dist/services/share-vault/user/index.d.ts +33 -0
- package/dist/services/share-vault/user/index.js +106 -0
- package/dist/services/share-vault/user/types.d.ts +13 -0
- package/dist/services/share-vault/user/types.js +2 -0
- package/dist/services/strategy-vault/index.d.ts +2124 -0
- package/dist/services/strategy-vault/index.js +268 -0
- package/dist/services/strategy-vault/manager/index.d.ts +1968 -0
- package/dist/services/strategy-vault/manager/index.js +475 -0
- package/dist/services/strategy-vault/manager/types.d.ts +144 -0
- package/dist/services/strategy-vault/manager/types.js +2 -0
- package/dist/services/strategy-vault/oracle.d.ts +66 -0
- package/dist/services/strategy-vault/oracle.js +162 -0
- package/dist/services/strategy-vault/owner/index.d.ts +277 -0
- package/dist/services/strategy-vault/owner/index.js +333 -0
- package/dist/services/strategy-vault/owner/types.d.ts +146 -0
- package/dist/services/strategy-vault/owner/types.js +2 -0
- package/dist/services/strategy-vault/query.d.ts +138 -0
- package/dist/services/strategy-vault/query.js +59 -0
- package/dist/services/strategy-vault/user/index.d.ts +89 -0
- package/dist/services/strategy-vault/user/index.js +219 -0
- package/dist/services/strategy-vault/user/types.d.ts +46 -0
- package/dist/services/strategy-vault/user/types.js +2 -0
- package/dist/types/sender.d.ts +7 -0
- package/dist/types/sender.js +2 -0
- package/dist/utils/action-parser.d.ts +7 -0
- package/dist/utils/action-parser.js +20 -0
- package/dist/utils/external-message-hash.d.ts +45 -0
- package/dist/utils/external-message-hash.js +65 -0
- package/dist/utils/oracle/redstone/readonlyCachedRedstone.d.ts +3 -0
- package/dist/utils/oracle/redstone/readonlyCachedRedstone.js +25 -0
- package/dist/utils/oracle/redstone/redstoneHelper.d.ts +21 -0
- package/dist/utils/oracle/redstone/redstoneHelper.js +228 -0
- package/dist/utils/parser.d.ts +40 -0
- package/dist/utils/parser.js +580 -0
- package/dist/utils/pending-tracker/index.d.ts +14 -0
- package/dist/utils/pending-tracker/index.js +34 -0
- package/dist/utils/pending-tracker/trackable-sender.d.ts +16 -0
- package/dist/utils/pending-tracker/trackable-sender.js +87 -0
- package/dist/utils/pending-tracker/type.d.ts +78 -0
- package/dist/utils/pending-tracker/type.js +2 -0
- package/dist/utils/pending-tracker/v3-client.d.ts +31 -0
- package/dist/utils/pending-tracker/v3-client.js +104 -0
- package/dist/utils/risk_calculator/risk_calculator.d.ts +45 -0
- package/dist/utils/risk_calculator/risk_calculator.js +332 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.js +12 -0
- package/package.json +46 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Pool = void 0;
|
|
4
|
+
exports.shareToAmount = shareToAmount;
|
|
5
|
+
exports.positionShareToAmount = positionShareToAmount;
|
|
6
|
+
const core_1 = require("@ton/core");
|
|
7
|
+
const serializer_1 = require("./serializer");
|
|
8
|
+
const serializer_2 = require("../../../contracts/irm/jump-irm/serializer");
|
|
9
|
+
const parser_1 = require("../../oracle/parser");
|
|
10
|
+
/**
|
|
11
|
+
* Convert pool share to actual amount
|
|
12
|
+
*
|
|
13
|
+
* @param share - Share amount
|
|
14
|
+
* @param totalAmount - Total amount in pool
|
|
15
|
+
* @param totalShare - Total shares in pool
|
|
16
|
+
* @returns Actual amount
|
|
17
|
+
*/
|
|
18
|
+
function shareToAmount(share, totalAmount, totalShare) {
|
|
19
|
+
if (share === 0n || totalShare === 0n)
|
|
20
|
+
return 0n;
|
|
21
|
+
return (share * totalAmount) / totalShare;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert pool share position to actual amounts
|
|
25
|
+
*
|
|
26
|
+
* @param position - Share-based position (supply/borrow shares)
|
|
27
|
+
* @param assetState - Pool asset state with total shares and amounts
|
|
28
|
+
* @returns Actual amounts (supply/borrow)
|
|
29
|
+
*/
|
|
30
|
+
function positionShareToAmount(position, assetState) {
|
|
31
|
+
return {
|
|
32
|
+
supply: shareToAmount(position.supply, assetState.totalSupplyAmount, assetState.totalSupplyShare),
|
|
33
|
+
borrow: shareToAmount(position.borrow, assetState.totalBorrowAmount, assetState.totalBorrowShare),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
class Pool {
|
|
37
|
+
address;
|
|
38
|
+
init;
|
|
39
|
+
constructor(address, init) {
|
|
40
|
+
this.address = address;
|
|
41
|
+
this.init = init;
|
|
42
|
+
}
|
|
43
|
+
static Op = {
|
|
44
|
+
supply: 0x480074d8,
|
|
45
|
+
withdraw: 0xcb03bfaf,
|
|
46
|
+
borrow: 0xcfc248e4,
|
|
47
|
+
repay: 0xee555a2c,
|
|
48
|
+
liquidate: 0xcc52bae3,
|
|
49
|
+
actionNotification: 0xa1b21e8b,
|
|
50
|
+
Supply: 0x480074d8,
|
|
51
|
+
Withdraw: 0xcb03bfaf,
|
|
52
|
+
Borrow: 0xcfc248e4,
|
|
53
|
+
Repay: 0xee555a2c,
|
|
54
|
+
Liquidate: 0xcc52bae3,
|
|
55
|
+
ActionNotification: 0xa1b21e8b,
|
|
56
|
+
ProvideAccountStatusAndLock: 0xbf281c87,
|
|
57
|
+
TakeAsset: 0x5c3d8ba8,
|
|
58
|
+
UpdateAccountStatus: 0x1c5ee1c3,
|
|
59
|
+
ProcessBorrowActionResult: 0x72097fe2,
|
|
60
|
+
ExecuteAction: 0x2be12d37,
|
|
61
|
+
SetIrmConfig: 0xfd5c44b6,
|
|
62
|
+
SetOwner: 0xa31c7c0,
|
|
63
|
+
SetFeeConfigurer: 0x8f357657,
|
|
64
|
+
};
|
|
65
|
+
static ErrorCodes = {
|
|
66
|
+
unauthorized: 1000,
|
|
67
|
+
invalidAsset: 1001,
|
|
68
|
+
invalidWallet: 1002,
|
|
69
|
+
invalidAddress: 1003,
|
|
70
|
+
alreadyInitialized: 1004,
|
|
71
|
+
notEnoughCash: 1005,
|
|
72
|
+
notEnoughShare: 1006,
|
|
73
|
+
notEnoughLiquidity: 1007,
|
|
74
|
+
notFoundPrice: 1008,
|
|
75
|
+
notFoundAccount: 1009,
|
|
76
|
+
enoughLiquidity: 1010,
|
|
77
|
+
notEnoughProtocolFee: 1011,
|
|
78
|
+
notBorrowableAsset: 1012,
|
|
79
|
+
alreadyExistAsset: 1015,
|
|
80
|
+
lockedAccount: 1016,
|
|
81
|
+
notEnoughGas: 1017,
|
|
82
|
+
actionTimeout: 1018,
|
|
83
|
+
seizeAssetIsRepayAsset: 1019,
|
|
84
|
+
unknownOp: 0xffff,
|
|
85
|
+
};
|
|
86
|
+
static Gas = {
|
|
87
|
+
baseFee: (0, core_1.toNano)(0.02),
|
|
88
|
+
forwardFee: (0, core_1.toNano)(0.02),
|
|
89
|
+
LiquidateionNotificationFee: (0, core_1.toNano)(0.05),
|
|
90
|
+
};
|
|
91
|
+
static createFromAddress(address) {
|
|
92
|
+
return new Pool(address);
|
|
93
|
+
}
|
|
94
|
+
static createSupplyPayload(params) {
|
|
95
|
+
return (0, serializer_1.serializeTransferInPayload)({
|
|
96
|
+
...params,
|
|
97
|
+
opCode: Pool.Op.supply,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
static createRepayPayload(params) {
|
|
101
|
+
return (0, serializer_1.serializeTransferInPayload)({
|
|
102
|
+
...params,
|
|
103
|
+
opCode: Pool.Op.repay,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
static createLiquidatePayload(params) {
|
|
107
|
+
return (0, serializer_1.serializeLiquidatePayload)({
|
|
108
|
+
...params,
|
|
109
|
+
opCode: Pool.Op.liquidate,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
static createWithdrawMsgBody(params) {
|
|
113
|
+
let msgBody = (0, serializer_1.serializeTransferOutMsgBody)({
|
|
114
|
+
...params,
|
|
115
|
+
queryId: params.queryId ?? 0n,
|
|
116
|
+
opCode: Pool.Op.withdraw,
|
|
117
|
+
});
|
|
118
|
+
return msgBody;
|
|
119
|
+
}
|
|
120
|
+
static createBorrowMsgBody(params) {
|
|
121
|
+
let msgBody = (0, serializer_1.serializeTransferOutMsgBody)({
|
|
122
|
+
...params,
|
|
123
|
+
queryId: params.queryId ?? 0n,
|
|
124
|
+
opCode: Pool.Op.borrow,
|
|
125
|
+
});
|
|
126
|
+
return msgBody;
|
|
127
|
+
}
|
|
128
|
+
async sendSetOwner(provider, via, value, opts) {
|
|
129
|
+
await provider.internal(via, {
|
|
130
|
+
value: value,
|
|
131
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
132
|
+
body: Pool.createSetOwnerMsgBody(opts),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async sendWithdraw(provider, via, value, params) {
|
|
136
|
+
let msgBody = Pool.createWithdrawMsgBody(params);
|
|
137
|
+
await provider.internal(via, {
|
|
138
|
+
value: value,
|
|
139
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
140
|
+
body: msgBody,
|
|
141
|
+
});
|
|
142
|
+
return msgBody;
|
|
143
|
+
}
|
|
144
|
+
async sendBorrow(provider, via, value, params) {
|
|
145
|
+
let msgBody = Pool.createBorrowMsgBody(params);
|
|
146
|
+
await provider.internal(via, {
|
|
147
|
+
value: value,
|
|
148
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
149
|
+
body: msgBody,
|
|
150
|
+
});
|
|
151
|
+
return msgBody;
|
|
152
|
+
}
|
|
153
|
+
static createSetIrmConfigMsgBody = (params) => {
|
|
154
|
+
return (0, core_1.beginCell)()
|
|
155
|
+
.storeUint(Pool.Op.SetIrmConfig, 32)
|
|
156
|
+
.storeUint(params.queryId ?? 0, 64)
|
|
157
|
+
.storeAddress(params.asset)
|
|
158
|
+
.storeRef(params.irmConfig)
|
|
159
|
+
.endCell();
|
|
160
|
+
};
|
|
161
|
+
static createSetOwnerMsgBody(opts) {
|
|
162
|
+
return (0, core_1.beginCell)()
|
|
163
|
+
.storeUint(Pool.Op.SetOwner, 32)
|
|
164
|
+
.storeUint(opts.queryID ?? 0, 64)
|
|
165
|
+
.storeAddress(opts.newOwner)
|
|
166
|
+
.endCell();
|
|
167
|
+
}
|
|
168
|
+
static parseSetOwnerMsgBody(cell) {
|
|
169
|
+
const slice = cell.beginParse();
|
|
170
|
+
const op = slice.loadUint(32);
|
|
171
|
+
const queryID = slice.loadUint(64);
|
|
172
|
+
const newOwner = slice.loadAddress();
|
|
173
|
+
return { op, queryID, newOwner };
|
|
174
|
+
}
|
|
175
|
+
static createSetFeeConfigurerMsgBody = (params) => {
|
|
176
|
+
return (0, core_1.beginCell)()
|
|
177
|
+
.storeUint(Pool.Op.SetFeeConfigurer, 32)
|
|
178
|
+
.storeUint(params.queryId ?? 0, 64)
|
|
179
|
+
.storeAddress(params.feeConfigurer)
|
|
180
|
+
.endCell();
|
|
181
|
+
};
|
|
182
|
+
static calculateGasFee(actionOp, baseFee, forwardFee, forwardTonAmount, useInternalOracle, useOracle, gas) {
|
|
183
|
+
if (actionOp === Pool.Op.Supply) {
|
|
184
|
+
let totalFee = baseFee;
|
|
185
|
+
totalFee += forwardFee;
|
|
186
|
+
totalFee += gas.supply;
|
|
187
|
+
totalFee += gas.accountStatusUpdate;
|
|
188
|
+
totalFee += gas.jettonTransfer;
|
|
189
|
+
totalFee += gas.interestRateUpdate;
|
|
190
|
+
totalFee += forwardTonAmount;
|
|
191
|
+
return totalFee;
|
|
192
|
+
}
|
|
193
|
+
else if (actionOp === Pool.Op.Withdraw) {
|
|
194
|
+
const forwardCount = useInternalOracle ? 3n : 5n;
|
|
195
|
+
let totalFee = baseFee;
|
|
196
|
+
totalFee += forwardFee * forwardCount;
|
|
197
|
+
totalFee += gas.withdraw;
|
|
198
|
+
totalFee += gas.accountStatusUpdate;
|
|
199
|
+
totalFee += gas.jettonTransfer;
|
|
200
|
+
totalFee += gas.interestRateUpdate;
|
|
201
|
+
totalFee += forwardTonAmount;
|
|
202
|
+
if (useOracle) {
|
|
203
|
+
totalFee += gas.oracleCalculate;
|
|
204
|
+
}
|
|
205
|
+
return totalFee;
|
|
206
|
+
}
|
|
207
|
+
else if (actionOp === Pool.Op.Borrow) {
|
|
208
|
+
const forwardCount = useInternalOracle ? 3n : 5n;
|
|
209
|
+
let totalFee = baseFee;
|
|
210
|
+
totalFee += forwardFee * forwardCount;
|
|
211
|
+
totalFee += gas.borrow;
|
|
212
|
+
totalFee += gas.accountStatusUpdate;
|
|
213
|
+
totalFee += gas.jettonTransfer;
|
|
214
|
+
totalFee += gas.interestRateUpdate;
|
|
215
|
+
totalFee += forwardTonAmount;
|
|
216
|
+
totalFee += gas.oracleCalculate;
|
|
217
|
+
return totalFee;
|
|
218
|
+
}
|
|
219
|
+
else if (actionOp === Pool.Op.Repay) {
|
|
220
|
+
const forwardCount = 3n;
|
|
221
|
+
let totalFee = baseFee;
|
|
222
|
+
totalFee += forwardFee * forwardCount;
|
|
223
|
+
totalFee += gas.repay;
|
|
224
|
+
totalFee += gas.accountStatusUpdate;
|
|
225
|
+
totalFee += gas.jettonTransfer;
|
|
226
|
+
totalFee += gas.interestRateUpdate;
|
|
227
|
+
totalFee += forwardTonAmount;
|
|
228
|
+
return totalFee;
|
|
229
|
+
}
|
|
230
|
+
else if (actionOp === Pool.Op.Liquidate) {
|
|
231
|
+
const forwardCount = useInternalOracle ? 3n : 5n;
|
|
232
|
+
let totalFee = baseFee;
|
|
233
|
+
totalFee += forwardFee * forwardCount;
|
|
234
|
+
totalFee += gas.liquidate;
|
|
235
|
+
totalFee += gas.accountStatusUpdate * 2n;
|
|
236
|
+
totalFee += gas.jettonTransfer;
|
|
237
|
+
totalFee += gas.interestRateUpdate * 2n;
|
|
238
|
+
totalFee += forwardTonAmount;
|
|
239
|
+
totalFee += gas.oracleCalculate;
|
|
240
|
+
totalFee += Pool.Gas.LiquidateionNotificationFee;
|
|
241
|
+
return totalFee;
|
|
242
|
+
}
|
|
243
|
+
throw "invalid opcode";
|
|
244
|
+
}
|
|
245
|
+
async getState(provider) {
|
|
246
|
+
return await provider.getState();
|
|
247
|
+
}
|
|
248
|
+
static simulateAccrueInterest(poolState, time) {
|
|
249
|
+
const currentTime = BigInt(time ?? BigInt(Math.floor(Date.now() / 1000)));
|
|
250
|
+
const newAssets = {};
|
|
251
|
+
Object.entries(poolState.assets).forEach(([assetAddress, assetInfo]) => {
|
|
252
|
+
if (assetInfo.totalBorrowShare === 0n) {
|
|
253
|
+
newAssets[assetAddress] = assetInfo;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
const timeDelta = currentTime - assetInfo.lastUpdatedTime;
|
|
257
|
+
const interest = (timeDelta * assetInfo.totalBorrowAmount * assetInfo.storedInterestRate) / 10n ** 36n;
|
|
258
|
+
const protocolFee = (interest * poolState.protocolFeeRate) / 10000n;
|
|
259
|
+
newAssets[assetAddress] = {
|
|
260
|
+
...assetInfo,
|
|
261
|
+
totalBorrowAmount: assetInfo.totalBorrowAmount + interest,
|
|
262
|
+
totalSupplyAmount: assetInfo.totalSupplyAmount + interest - protocolFee,
|
|
263
|
+
collectedProtocolFee: assetInfo.collectedProtocolFee + protocolFee,
|
|
264
|
+
lastUpdatedTime: currentTime,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
return {
|
|
269
|
+
...poolState,
|
|
270
|
+
assets: newAssets,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
async getPoolData(provider) {
|
|
274
|
+
const state = await provider.getState();
|
|
275
|
+
if (state.state.type !== "active")
|
|
276
|
+
throw "not active";
|
|
277
|
+
if (!state.state.data)
|
|
278
|
+
throw "not active";
|
|
279
|
+
const data = core_1.Cell.fromBoc(state.state.data)[0].beginParse();
|
|
280
|
+
return {
|
|
281
|
+
address: this.address,
|
|
282
|
+
...Pool.parsePoolData(data),
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
static parsePoolData(data) {
|
|
286
|
+
const initialized = data.loadBit();
|
|
287
|
+
const id = data.loadCoins();
|
|
288
|
+
const owner = data.loadMaybeAddress();
|
|
289
|
+
const feeConfigurer = data.loadMaybeAddress();
|
|
290
|
+
const protocolFeeRate = data.loadUintBig(14);
|
|
291
|
+
const oracle = data.loadMaybeAddress();
|
|
292
|
+
const oracleConfigRaw = data.loadRef();
|
|
293
|
+
const oracleConfig = (0, parser_1.parseOracleConfig)(oracleConfigRaw);
|
|
294
|
+
const maxLoanLeverageRatio = data.loadUintBig(20);
|
|
295
|
+
const maxLoanVarRatio = data.loadUintBig(14);
|
|
296
|
+
const liquidateLeverageRatio = data.loadUintBig(20);
|
|
297
|
+
const liquidateVarRatio = data.loadUintBig(14);
|
|
298
|
+
const minLiquidateCloseRatio = data.loadUintBig(14);
|
|
299
|
+
const maxLiquidateCloseRatio = data.loadUintBig(14);
|
|
300
|
+
const gasCell = (0, serializer_1.parseGasCell)(data.loadRef());
|
|
301
|
+
const assetsDict = data.loadDict(core_1.Dictionary.Keys.Address(), Pool.Dictionary.Values.Asset());
|
|
302
|
+
const assets = assetsDict.keys().reduce((acc, cur) => {
|
|
303
|
+
acc[cur.toString()] = {
|
|
304
|
+
address: cur.toString(),
|
|
305
|
+
...assetsDict.get(cur),
|
|
306
|
+
};
|
|
307
|
+
return acc;
|
|
308
|
+
}, {});
|
|
309
|
+
return {
|
|
310
|
+
id,
|
|
311
|
+
owner,
|
|
312
|
+
feeConfigurer,
|
|
313
|
+
protocolFeeRate,
|
|
314
|
+
oracle,
|
|
315
|
+
oracleConfig,
|
|
316
|
+
maxLoanLeverageRatio,
|
|
317
|
+
maxLoanVarRatio,
|
|
318
|
+
liquidateLeverageRatio,
|
|
319
|
+
liquidateVarRatio,
|
|
320
|
+
minLiquidateCloseRatio,
|
|
321
|
+
maxLiquidateCloseRatio,
|
|
322
|
+
assets,
|
|
323
|
+
minimumGasFee: gasCell,
|
|
324
|
+
oracleConfigRaw: oracleConfigRaw,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
async getAccountAddress(provider, owner) {
|
|
328
|
+
const result = await provider.get("get_account_address", [
|
|
329
|
+
{
|
|
330
|
+
type: "slice",
|
|
331
|
+
cell: (0, core_1.beginCell)().storeAddress(owner).endCell(),
|
|
332
|
+
},
|
|
333
|
+
]);
|
|
334
|
+
return result.stack.readAddress();
|
|
335
|
+
}
|
|
336
|
+
static Dictionary = {
|
|
337
|
+
Values: {
|
|
338
|
+
Asset: () => ({
|
|
339
|
+
serialize: (src, builder) => { },
|
|
340
|
+
parse: (src) => {
|
|
341
|
+
const lastUpdatedTime = src.loadUintBig(40);
|
|
342
|
+
const storedInterestRate = src.loadCoins();
|
|
343
|
+
const collectedProtocolFee = src.loadCoins();
|
|
344
|
+
const cash = src.loadCoins();
|
|
345
|
+
const totalSupplyAmount = src.loadCoins();
|
|
346
|
+
const totalBorrowAmount = src.loadCoins();
|
|
347
|
+
const totalSupplyShare = src.loadCoins();
|
|
348
|
+
const totalBorrowShare = src.loadCoins();
|
|
349
|
+
const config = src.loadRef().beginParse();
|
|
350
|
+
const wallet = config.loadMaybeAddress();
|
|
351
|
+
const irm = config.loadMaybeAddress();
|
|
352
|
+
const irmConfig = irm ? config.loadRef() : (0, serializer_2.parseJumpIrmConfig)(config.loadRef());
|
|
353
|
+
const riskFactor = config.loadUintBig(14);
|
|
354
|
+
const liquidationIncentiveRate = config.loadUintBig(14);
|
|
355
|
+
const isCollateral = config.loadBit();
|
|
356
|
+
const isBorrowable = config.loadBit();
|
|
357
|
+
return {
|
|
358
|
+
wallet,
|
|
359
|
+
irm,
|
|
360
|
+
irmConfig,
|
|
361
|
+
riskFactor,
|
|
362
|
+
liquidationIncentiveRate,
|
|
363
|
+
isCollateral,
|
|
364
|
+
isBorrowable,
|
|
365
|
+
lastUpdatedTime,
|
|
366
|
+
storedInterestRate,
|
|
367
|
+
collectedProtocolFee,
|
|
368
|
+
cash,
|
|
369
|
+
totalSupplyAmount,
|
|
370
|
+
totalBorrowAmount,
|
|
371
|
+
totalSupplyShare,
|
|
372
|
+
totalBorrowShare,
|
|
373
|
+
};
|
|
374
|
+
},
|
|
375
|
+
}),
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
exports.Pool = Pool;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Cell } from "@ton/core";
|
|
2
|
+
import { FailTransferOutActionNotificationMsgBody, FailTransferInActionNotificationMsgBody, FailLiquidateActionNotificationMsgBody, LiquidatePayload, SuccessActionNotificationMsgBody, SuccessLiquidateActionNotificationMsgBody, SuccessRepayActionNotificationMsgBody, TransferInPayload, TransferOutMsgBody, PoolGasFee } from "./type";
|
|
3
|
+
export declare function serializeTransferInPayload(params: TransferInPayload): Cell;
|
|
4
|
+
export declare function parseTransferInPayload(cell: Cell): TransferInPayload;
|
|
5
|
+
export declare function serializeLiquidatePayload(params: LiquidatePayload): Cell;
|
|
6
|
+
export declare function parseLiquidatePayload(cell: Cell): LiquidatePayload;
|
|
7
|
+
export declare function serializeTransferOutMsgBody(params: Omit<TransferOutMsgBody, "type">): Cell;
|
|
8
|
+
export declare function parseTransferOutMsgBody(cell: Cell): TransferOutMsgBody;
|
|
9
|
+
export declare function parseGasCell(cell: Cell): PoolGasFee;
|
|
10
|
+
export declare function parseSuccessActionNotificationMsgBody(cell: Cell): SuccessActionNotificationMsgBody;
|
|
11
|
+
export declare function parseSuccessRepayActionNotificationMsgBody(cell: Cell): SuccessRepayActionNotificationMsgBody;
|
|
12
|
+
export declare function parseSuccessLiquidationActionNotificationMsgBody(cell: Cell): SuccessLiquidateActionNotificationMsgBody;
|
|
13
|
+
export declare function parseFailTransferOutActionNotificationMsgBody(cell: Cell): FailTransferOutActionNotificationMsgBody;
|
|
14
|
+
export declare function parseFailTransferInActionNotificationMsgBody(cell: Cell): FailTransferInActionNotificationMsgBody;
|
|
15
|
+
export declare function parseFailLiquidateActionNotificationMsgBody(cell: Cell): FailLiquidateActionNotificationMsgBody;
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeTransferInPayload = serializeTransferInPayload;
|
|
4
|
+
exports.parseTransferInPayload = parseTransferInPayload;
|
|
5
|
+
exports.serializeLiquidatePayload = serializeLiquidatePayload;
|
|
6
|
+
exports.parseLiquidatePayload = parseLiquidatePayload;
|
|
7
|
+
exports.serializeTransferOutMsgBody = serializeTransferOutMsgBody;
|
|
8
|
+
exports.parseTransferOutMsgBody = parseTransferOutMsgBody;
|
|
9
|
+
exports.parseGasCell = parseGasCell;
|
|
10
|
+
exports.parseSuccessActionNotificationMsgBody = parseSuccessActionNotificationMsgBody;
|
|
11
|
+
exports.parseSuccessRepayActionNotificationMsgBody = parseSuccessRepayActionNotificationMsgBody;
|
|
12
|
+
exports.parseSuccessLiquidationActionNotificationMsgBody = parseSuccessLiquidationActionNotificationMsgBody;
|
|
13
|
+
exports.parseFailTransferOutActionNotificationMsgBody = parseFailTransferOutActionNotificationMsgBody;
|
|
14
|
+
exports.parseFailTransferInActionNotificationMsgBody = parseFailTransferInActionNotificationMsgBody;
|
|
15
|
+
exports.parseFailLiquidateActionNotificationMsgBody = parseFailLiquidateActionNotificationMsgBody;
|
|
16
|
+
const core_1 = require("@ton/core");
|
|
17
|
+
function serializeTransferInPayload(params) {
|
|
18
|
+
let cell = (0, core_1.beginCell)()
|
|
19
|
+
.storeAddress(params.recipient)
|
|
20
|
+
.storeUint(params.opCode, 32)
|
|
21
|
+
.storeAddress(params.asset)
|
|
22
|
+
.storeAddress(params.response)
|
|
23
|
+
.storeCoins(params.jettonForwardTonAmount)
|
|
24
|
+
.storeMaybeRef(params.jettonForwardPayload);
|
|
25
|
+
if (params.forwardPayload) {
|
|
26
|
+
cell = cell.storeSlice(params.forwardPayload);
|
|
27
|
+
}
|
|
28
|
+
return cell.endCell();
|
|
29
|
+
}
|
|
30
|
+
function parseTransferInPayload(cell) {
|
|
31
|
+
const ds = cell.beginParse();
|
|
32
|
+
const recipient = ds.loadAddress();
|
|
33
|
+
const opCode = ds.loadUint(32);
|
|
34
|
+
const asset = ds.loadAddress();
|
|
35
|
+
const response = ds.loadAddress();
|
|
36
|
+
const jettonForwardTonAmount = ds.loadCoins();
|
|
37
|
+
const jettonForwardPayload = ds.loadMaybeRef();
|
|
38
|
+
const forwardPayload = ds;
|
|
39
|
+
return {
|
|
40
|
+
opCode,
|
|
41
|
+
recipient,
|
|
42
|
+
asset,
|
|
43
|
+
response,
|
|
44
|
+
jettonForwardTonAmount,
|
|
45
|
+
jettonForwardPayload,
|
|
46
|
+
forwardPayload,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function serializeLiquidatePayload(params) {
|
|
50
|
+
let subCell = (0, core_1.beginCell)().storeAddress(params.seizeAsset);
|
|
51
|
+
if (params.forwardPayload) {
|
|
52
|
+
subCell = subCell.storeSlice(params.forwardPayload);
|
|
53
|
+
}
|
|
54
|
+
return (0, core_1.beginCell)()
|
|
55
|
+
.storeAddress(params.borrower)
|
|
56
|
+
.storeUint(params.opCode, 32)
|
|
57
|
+
.storeAddress(params.repayAsset)
|
|
58
|
+
.storeAddress(params.response)
|
|
59
|
+
.storeCoins(params.jettonForwardTonAmount)
|
|
60
|
+
.storeMaybeRef(params.jettonForwardPayload)
|
|
61
|
+
.storeRef(params.oracleParams)
|
|
62
|
+
.storeRef(subCell.endCell())
|
|
63
|
+
.endCell();
|
|
64
|
+
}
|
|
65
|
+
function parseLiquidatePayload(cell) {
|
|
66
|
+
const ds = cell.beginParse();
|
|
67
|
+
const borrower = ds.loadAddress();
|
|
68
|
+
const opCode = ds.loadUint(32);
|
|
69
|
+
const repayAsset = ds.loadAddress();
|
|
70
|
+
const response = ds.loadAddress();
|
|
71
|
+
const jettonForwardTonAmount = ds.loadCoins();
|
|
72
|
+
const jettonForwardPayload = ds.loadMaybeRef();
|
|
73
|
+
const oracleParams = ds.loadRef();
|
|
74
|
+
const subSlice = ds.loadRef().beginParse();
|
|
75
|
+
const seizeAsset = subSlice.loadAddress();
|
|
76
|
+
const forwardPayload = subSlice;
|
|
77
|
+
return {
|
|
78
|
+
opCode,
|
|
79
|
+
borrower,
|
|
80
|
+
repayAsset,
|
|
81
|
+
response,
|
|
82
|
+
jettonForwardTonAmount,
|
|
83
|
+
jettonForwardPayload,
|
|
84
|
+
oracleParams,
|
|
85
|
+
seizeAsset,
|
|
86
|
+
forwardPayload,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function serializeTransferOutMsgBody(params) {
|
|
90
|
+
let cell = (0, core_1.beginCell)()
|
|
91
|
+
.storeUint(params.opCode, 32)
|
|
92
|
+
.storeUint(params.queryId, 64)
|
|
93
|
+
.storeMaybeRef(params.oracleParams)
|
|
94
|
+
.storeAddress(params.asset)
|
|
95
|
+
.storeUint(params.isShare ? 1 : 0, 1)
|
|
96
|
+
.storeCoins(params.amount)
|
|
97
|
+
.storeAddress(params.recipient)
|
|
98
|
+
.storeAddress(params.response)
|
|
99
|
+
.storeCoins(params.jettonForwardTonAmount)
|
|
100
|
+
.storeMaybeRef(params.jettonForwardPayload);
|
|
101
|
+
if (params.forwardPayload) {
|
|
102
|
+
cell = cell.storeSlice(params.forwardPayload);
|
|
103
|
+
}
|
|
104
|
+
return cell.endCell();
|
|
105
|
+
}
|
|
106
|
+
function parseTransferOutMsgBody(cell) {
|
|
107
|
+
const ds = cell.beginParse();
|
|
108
|
+
const opCode = ds.loadUint(32);
|
|
109
|
+
const queryId = ds.loadUintBig(64);
|
|
110
|
+
const oracleParams = ds.loadMaybeRef();
|
|
111
|
+
const asset = ds.loadAddress();
|
|
112
|
+
const isShare = ds.loadBit();
|
|
113
|
+
const amount = ds.loadCoins();
|
|
114
|
+
const recipient = ds.loadAddress();
|
|
115
|
+
const response = ds.loadAddress();
|
|
116
|
+
const jettonForwardTonAmount = ds.loadCoins();
|
|
117
|
+
const jettonForwardPayload = ds.loadMaybeRef();
|
|
118
|
+
const forwardPayload = ds;
|
|
119
|
+
return {
|
|
120
|
+
type: "Pool.Op.TransferOut",
|
|
121
|
+
opCode,
|
|
122
|
+
queryId,
|
|
123
|
+
oracleParams,
|
|
124
|
+
asset,
|
|
125
|
+
isShare,
|
|
126
|
+
amount,
|
|
127
|
+
recipient,
|
|
128
|
+
jettonForwardTonAmount,
|
|
129
|
+
jettonForwardPayload,
|
|
130
|
+
response,
|
|
131
|
+
forwardPayload,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function parseGasCell(cell) {
|
|
135
|
+
const gasSlice = cell.beginParse();
|
|
136
|
+
const supply = gasSlice.loadCoins();
|
|
137
|
+
const withdraw = gasSlice.loadCoins();
|
|
138
|
+
const borrow = gasSlice.loadCoins();
|
|
139
|
+
const repay = gasSlice.loadCoins();
|
|
140
|
+
const liquidate = gasSlice.loadCoins();
|
|
141
|
+
const accountStatusUpdate = gasSlice.loadCoins();
|
|
142
|
+
const jettonTransfer = gasSlice.loadCoins();
|
|
143
|
+
const oracleCalculate = gasSlice.loadCoins();
|
|
144
|
+
const interestRateUpdate = gasSlice.loadCoins();
|
|
145
|
+
const minimumGasFee = {};
|
|
146
|
+
minimumGasFee["supply"] = supply;
|
|
147
|
+
minimumGasFee["withdraw"] = withdraw;
|
|
148
|
+
minimumGasFee["borrow"] = borrow;
|
|
149
|
+
minimumGasFee["repay"] = repay;
|
|
150
|
+
minimumGasFee["liquidate"] = liquidate;
|
|
151
|
+
minimumGasFee["accountStatusUpdate"] = accountStatusUpdate;
|
|
152
|
+
minimumGasFee["jettonTransfer"] = jettonTransfer;
|
|
153
|
+
minimumGasFee["oracleCalculate"] = oracleCalculate;
|
|
154
|
+
minimumGasFee["interestRateUpdate"] = interestRateUpdate;
|
|
155
|
+
return minimumGasFee;
|
|
156
|
+
}
|
|
157
|
+
function parseSuccessActionNotificationMsgBody(cell) {
|
|
158
|
+
const ds = cell.beginParse();
|
|
159
|
+
const opCode = ds.loadUint(32);
|
|
160
|
+
const queryId = ds.loadUintBig(64);
|
|
161
|
+
const actionOpCode = ds.loadUint(32);
|
|
162
|
+
const errorCode = ds.loadUint(16);
|
|
163
|
+
const asset = ds.loadAddress();
|
|
164
|
+
const amount = ds.loadCoins();
|
|
165
|
+
const share = ds.loadCoins();
|
|
166
|
+
return {
|
|
167
|
+
opCode,
|
|
168
|
+
queryId,
|
|
169
|
+
actionOpCode,
|
|
170
|
+
errorCode,
|
|
171
|
+
asset,
|
|
172
|
+
amount,
|
|
173
|
+
share,
|
|
174
|
+
forwardPayload: ds,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function parseSuccessRepayActionNotificationMsgBody(cell) {
|
|
178
|
+
const ds = cell.beginParse();
|
|
179
|
+
const opCode = ds.loadUint(32);
|
|
180
|
+
const queryId = ds.loadUintBig(64);
|
|
181
|
+
const actionOpCode = ds.loadUint(32);
|
|
182
|
+
const errorCode = ds.loadUint(16);
|
|
183
|
+
const asset = ds.loadAddress();
|
|
184
|
+
const amount = ds.loadCoins();
|
|
185
|
+
const share = ds.loadCoins();
|
|
186
|
+
const overRepaidAmount = ds.loadCoins();
|
|
187
|
+
return {
|
|
188
|
+
opCode,
|
|
189
|
+
queryId,
|
|
190
|
+
actionOpCode,
|
|
191
|
+
errorCode,
|
|
192
|
+
asset,
|
|
193
|
+
amount,
|
|
194
|
+
share,
|
|
195
|
+
overRepaidAmount,
|
|
196
|
+
forwardPayload: ds,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function parseSuccessLiquidationActionNotificationMsgBody(cell) {
|
|
200
|
+
const ds = cell.beginParse();
|
|
201
|
+
const opCode = ds.loadUint(32);
|
|
202
|
+
const queryId = ds.loadUintBig(64);
|
|
203
|
+
const actionOpCode = ds.loadUint(32);
|
|
204
|
+
const errorCode = ds.loadUint(16);
|
|
205
|
+
const repayAsset = ds.loadAddress();
|
|
206
|
+
const seizeAsset = ds.loadAddress();
|
|
207
|
+
const repayAmount = ds.loadCoins();
|
|
208
|
+
const repayShare = ds.loadCoins();
|
|
209
|
+
const seizeShare = ds.loadCoins();
|
|
210
|
+
return {
|
|
211
|
+
opCode,
|
|
212
|
+
queryId,
|
|
213
|
+
actionOpCode,
|
|
214
|
+
errorCode,
|
|
215
|
+
repayAsset,
|
|
216
|
+
seizeAsset,
|
|
217
|
+
repayAmount,
|
|
218
|
+
repayShare,
|
|
219
|
+
seizeShare,
|
|
220
|
+
forwardPayload: ds,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function parseFailTransferOutActionNotificationMsgBody(cell) {
|
|
224
|
+
const ds = cell.beginParse();
|
|
225
|
+
const opCode = ds.loadUint(32);
|
|
226
|
+
const queryId = ds.loadUintBig(64);
|
|
227
|
+
const actionOpCode = ds.loadUint(32);
|
|
228
|
+
const errorCode = ds.loadUint(16);
|
|
229
|
+
const requestDs = ds.loadRef().beginParse();
|
|
230
|
+
const asset = requestDs.loadAddress();
|
|
231
|
+
const isShare = requestDs.loadBoolean();
|
|
232
|
+
const value = requestDs.loadCoins();
|
|
233
|
+
const recipient = requestDs.loadAddress();
|
|
234
|
+
const response = requestDs.loadAddress();
|
|
235
|
+
return {
|
|
236
|
+
opCode,
|
|
237
|
+
queryId,
|
|
238
|
+
actionOpCode,
|
|
239
|
+
errorCode,
|
|
240
|
+
asset,
|
|
241
|
+
isShare,
|
|
242
|
+
value,
|
|
243
|
+
recipient,
|
|
244
|
+
response,
|
|
245
|
+
forwardPayload: requestDs,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function parseFailTransferInActionNotificationMsgBody(cell) {
|
|
249
|
+
const ds = cell.beginParse();
|
|
250
|
+
const opCode = ds.loadUint(32);
|
|
251
|
+
const queryId = ds.loadUintBig(64);
|
|
252
|
+
const actionOpCode = ds.loadUint(32);
|
|
253
|
+
const errorCode = ds.loadUint(16);
|
|
254
|
+
const amount = ds.loadCoins();
|
|
255
|
+
const sender = ds.loadAddress();
|
|
256
|
+
const forwardDS = ds.loadRef().beginParse();
|
|
257
|
+
const recipient = forwardDS.loadAddress();
|
|
258
|
+
const subOp = forwardDS.loadUint(32);
|
|
259
|
+
const asset = forwardDS.loadAddress();
|
|
260
|
+
const response = forwardDS.loadAddress();
|
|
261
|
+
return {
|
|
262
|
+
opCode,
|
|
263
|
+
queryId,
|
|
264
|
+
actionOpCode: subOp,
|
|
265
|
+
errorCode,
|
|
266
|
+
sender,
|
|
267
|
+
amount,
|
|
268
|
+
recipient,
|
|
269
|
+
asset,
|
|
270
|
+
response,
|
|
271
|
+
forwardPayload: forwardDS,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function parseFailLiquidateActionNotificationMsgBody(cell) {
|
|
275
|
+
const ds = cell.beginParse();
|
|
276
|
+
const opCode = ds.loadUint(32);
|
|
277
|
+
const queryId = ds.loadUintBig(64);
|
|
278
|
+
const actionOpCode = ds.loadUint(32);
|
|
279
|
+
const errorCode = ds.loadUint(16);
|
|
280
|
+
const amount = ds.loadCoins();
|
|
281
|
+
const sender = ds.loadAddress();
|
|
282
|
+
const forwardDS = ds.loadRef().beginParse();
|
|
283
|
+
const borrower = forwardDS.loadAddress();
|
|
284
|
+
const subOp = forwardDS.loadUint(32);
|
|
285
|
+
const repayAsset = forwardDS.loadAddress();
|
|
286
|
+
const response = forwardDS.loadAddress();
|
|
287
|
+
if (forwardDS.remainingRefs >= 2) {
|
|
288
|
+
for (let i = 0; i < forwardDS.remainingRefs; i++) {
|
|
289
|
+
forwardDS.loadRef();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const liquidationDs = forwardDS.loadRef().beginParse();
|
|
293
|
+
const seizeAsset = liquidationDs.loadAddress();
|
|
294
|
+
return {
|
|
295
|
+
opCode,
|
|
296
|
+
queryId,
|
|
297
|
+
actionOpCode: subOp,
|
|
298
|
+
errorCode,
|
|
299
|
+
sender,
|
|
300
|
+
amount,
|
|
301
|
+
borrower,
|
|
302
|
+
response,
|
|
303
|
+
repayAsset,
|
|
304
|
+
seizeAsset,
|
|
305
|
+
forwardPayload: liquidationDs,
|
|
306
|
+
};
|
|
307
|
+
}
|