@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.
Files changed (218) hide show
  1. package/.prettierrc +11 -0
  2. package/Refactoring.md +548 -0
  3. package/dist/_compiled/Account.compiled.json +1 -0
  4. package/dist/_compiled/Receipt.compiled.json +1 -0
  5. package/dist/_compiled/WTONWallet.compiled.json +1 -0
  6. package/dist/_compiled/index.d.ts +4 -0
  7. package/dist/_compiled/index.js +12 -0
  8. package/dist/affluent.d.ts +14 -0
  9. package/dist/affluent.js +20 -0
  10. package/dist/constants/constants.d.ts +2 -0
  11. package/dist/constants/constants.js +5 -0
  12. package/dist/constants/contracts.d.ts +9 -0
  13. package/dist/constants/contracts.js +18 -0
  14. package/dist/context.d.ts +43 -0
  15. package/dist/context.js +90 -0
  16. package/dist/contracts/common/type.d.ts +16 -0
  17. package/dist/contracts/common/type.js +2 -0
  18. package/dist/contracts/common/utils.d.ts +3 -0
  19. package/dist/contracts/common/utils.js +16 -0
  20. package/dist/contracts/core/account/index.d.ts +38 -0
  21. package/dist/contracts/core/account/index.js +128 -0
  22. package/dist/contracts/core/account/type.d.ts +18 -0
  23. package/dist/contracts/core/account/type.js +2 -0
  24. package/dist/contracts/core/pool/index.d.ts +149 -0
  25. package/dist/contracts/core/pool/index.js +379 -0
  26. package/dist/contracts/core/pool/serializer.d.ts +15 -0
  27. package/dist/contracts/core/pool/serializer.js +307 -0
  28. package/dist/contracts/core/pool/type.d.ts +136 -0
  29. package/dist/contracts/core/pool/type.js +2 -0
  30. package/dist/contracts/dedust-farm/MockDedustFarm.d.ts +41 -0
  31. package/dist/contracts/dedust-farm/MockDedustFarm.js +79 -0
  32. package/dist/contracts/external/tonstaker.d.ts +18 -0
  33. package/dist/contracts/external/tonstaker.js +26 -0
  34. package/dist/contracts/factory/factory.d.ts +24 -0
  35. package/dist/contracts/factory/factory.js +58 -0
  36. package/dist/contracts/factory/type.d.ts +11 -0
  37. package/dist/contracts/factory/type.js +2 -0
  38. package/dist/contracts/farm/distributor.d.ts +43 -0
  39. package/dist/contracts/farm/distributor.js +83 -0
  40. package/dist/contracts/farm/receipt.d.ts +40 -0
  41. package/dist/contracts/farm/receipt.js +68 -0
  42. package/dist/contracts/irm/jump-irm/serializer.d.ts +4 -0
  43. package/dist/contracts/irm/jump-irm/serializer.js +26 -0
  44. package/dist/contracts/irm/jump-irm/type.d.ts +8 -0
  45. package/dist/contracts/irm/jump-irm/type.js +2 -0
  46. package/dist/contracts/jetton/jetton-minter.d.ts +23 -0
  47. package/dist/contracts/jetton/jetton-minter.js +46 -0
  48. package/dist/contracts/jetton/jetton-wallet.d.ts +67 -0
  49. package/dist/contracts/jetton/jetton-wallet.js +119 -0
  50. package/dist/contracts/jetton/type.d.ts +7 -0
  51. package/dist/contracts/jetton/type.js +2 -0
  52. package/dist/contracts/liquid_token/dedust/minter.d.ts +56 -0
  53. package/dist/contracts/liquid_token/dedust/minter.js +112 -0
  54. package/dist/contracts/liquid_token/dedust/wallet.d.ts +127 -0
  55. package/dist/contracts/liquid_token/dedust/wallet.js +213 -0
  56. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.d.ts +53 -0
  57. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.js +110 -0
  58. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.d.ts +169 -0
  59. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.js +288 -0
  60. package/dist/contracts/oracle/composite-onchain-oracle/index.d.ts +108 -0
  61. package/dist/contracts/oracle/composite-onchain-oracle/index.js +185 -0
  62. package/dist/contracts/oracle/parser.d.ts +7 -0
  63. package/dist/contracts/oracle/parser.js +77 -0
  64. package/dist/contracts/oracle/redstone-onchain-oracle/index.d.ts +56 -0
  65. package/dist/contracts/oracle/redstone-onchain-oracle/index.js +159 -0
  66. package/dist/contracts/oracle/redstone-onchain-oracle/serializer.d.ts +4 -0
  67. package/dist/contracts/oracle/redstone-onchain-oracle/serializer.js +137 -0
  68. package/dist/contracts/oracle/redstone-onchain-oracle/type.d.ts +57 -0
  69. package/dist/contracts/oracle/redstone-onchain-oracle/type.js +18 -0
  70. package/dist/contracts/oracle/redstone-oracle/serializer.d.ts +3 -0
  71. package/dist/contracts/oracle/redstone-oracle/serializer.js +30 -0
  72. package/dist/contracts/oracle/redstone-oracle/type.d.ts +9 -0
  73. package/dist/contracts/oracle/redstone-oracle/type.js +2 -0
  74. package/dist/contracts/oracle/redstone-parser.d.ts +9 -0
  75. package/dist/contracts/oracle/redstone-parser.js +58 -0
  76. package/dist/contracts/rfq/rfq_auction/index.d.ts +216 -0
  77. package/dist/contracts/rfq/rfq_auction/index.js +334 -0
  78. package/dist/contracts/rfq/rfq_batch/index.d.ts +346 -0
  79. package/dist/contracts/rfq/rfq_batch/index.js +448 -0
  80. package/dist/contracts/rfq/rfq_event_emitter/index.d.ts +132 -0
  81. package/dist/contracts/rfq/rfq_event_emitter/index.js +143 -0
  82. package/dist/contracts/stonfi-farm/MockStonfiFarmItem.d.ts +41 -0
  83. package/dist/contracts/stonfi-farm/MockStonfiFarmItem.js +83 -0
  84. package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.d.ts +45 -0
  85. package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.js +92 -0
  86. package/dist/contracts/unknown-contract/index.d.ts +14 -0
  87. package/dist/contracts/unknown-contract/index.js +18 -0
  88. package/dist/contracts/vault/share-vault/index.d.ts +206 -0
  89. package/dist/contracts/vault/share-vault/index.js +373 -0
  90. package/dist/contracts/vault/strategy-vault/codec.d.ts +710 -0
  91. package/dist/contracts/vault/strategy-vault/codec.js +1256 -0
  92. package/dist/contracts/vault/strategy-vault/computation.d.ts +11 -0
  93. package/dist/contracts/vault/strategy-vault/computation.js +56 -0
  94. package/dist/contracts/vault/strategy-vault/constants.d.ts +163 -0
  95. package/dist/contracts/vault/strategy-vault/constants.js +170 -0
  96. package/dist/contracts/vault/strategy-vault/index.d.ts +587 -0
  97. package/dist/contracts/vault/strategy-vault/index.js +406 -0
  98. package/dist/contracts/vault/strategy-vault/type.d.ts +115 -0
  99. package/dist/contracts/vault/strategy-vault/type.js +2 -0
  100. package/dist/contracts/wton/jetton-minter.d.ts +35 -0
  101. package/dist/contracts/wton/jetton-minter.js +71 -0
  102. package/dist/contracts/wton/jetton-wallet.d.ts +90 -0
  103. package/dist/contracts/wton/jetton-wallet.js +153 -0
  104. package/dist/contracts/wton/type.d.ts +7 -0
  105. package/dist/contracts/wton/type.js +2 -0
  106. package/dist/index.d.ts +34 -0
  107. package/dist/index.js +65 -0
  108. package/dist/lib/assert.d.ts +1 -0
  109. package/dist/lib/assert.js +9 -0
  110. package/dist/lib/query-cache.d.ts +5 -0
  111. package/dist/lib/query-cache.js +57 -0
  112. package/dist/lib/send-msg.d.ts +11 -0
  113. package/dist/lib/send-msg.js +9 -0
  114. package/dist/services/composite-oracle/computation.d.ts +55 -0
  115. package/dist/services/composite-oracle/computation.js +295 -0
  116. package/dist/services/composite-oracle/index.d.ts +45 -0
  117. package/dist/services/composite-oracle/index.js +110 -0
  118. package/dist/services/composite-oracle/query.d.ts +36 -0
  119. package/dist/services/composite-oracle/query.js +251 -0
  120. package/dist/services/composite-oracle/types.d.ts +82 -0
  121. package/dist/services/composite-oracle/types.js +11 -0
  122. package/dist/services/pool/computation.d.ts +75 -0
  123. package/dist/services/pool/computation.js +219 -0
  124. package/dist/services/pool/index.d.ts +94 -0
  125. package/dist/services/pool/index.js +139 -0
  126. package/dist/services/pool/oracle.d.ts +20 -0
  127. package/dist/services/pool/oracle.js +61 -0
  128. package/dist/services/pool/owner/index.d.ts +37 -0
  129. package/dist/services/pool/owner/index.js +76 -0
  130. package/dist/services/pool/owner/types.d.ts +18 -0
  131. package/dist/services/pool/owner/types.js +2 -0
  132. package/dist/services/pool/query.d.ts +64 -0
  133. package/dist/services/pool/query.js +282 -0
  134. package/dist/services/pool/user/index.d.ts +86 -0
  135. package/dist/services/pool/user/index.js +285 -0
  136. package/dist/services/pool/user/types.d.ts +44 -0
  137. package/dist/services/pool/user/types.js +2 -0
  138. package/dist/services/rfq-auction/index.d.ts +81 -0
  139. package/dist/services/rfq-auction/index.js +93 -0
  140. package/dist/services/rfq-auction/oracle.d.ts +19 -0
  141. package/dist/services/rfq-auction/oracle.js +60 -0
  142. package/dist/services/rfq-auction/query.d.ts +50 -0
  143. package/dist/services/rfq-auction/query.js +19 -0
  144. package/dist/services/rfq-auction/user/index.d.ts +63 -0
  145. package/dist/services/rfq-auction/user/index.js +218 -0
  146. package/dist/services/rfq-auction/user/types.d.ts +29 -0
  147. package/dist/services/rfq-auction/user/types.js +2 -0
  148. package/dist/services/rfq-batch/index.d.ts +78 -0
  149. package/dist/services/rfq-batch/index.js +132 -0
  150. package/dist/services/rfq-batch/oracle.d.ts +22 -0
  151. package/dist/services/rfq-batch/oracle.js +54 -0
  152. package/dist/services/rfq-batch/query.d.ts +46 -0
  153. package/dist/services/rfq-batch/query.js +34 -0
  154. package/dist/services/rfq-batch/user/index.d.ts +79 -0
  155. package/dist/services/rfq-batch/user/index.js +171 -0
  156. package/dist/services/rfq-batch/user/types.d.ts +37 -0
  157. package/dist/services/rfq-batch/user/types.js +2 -0
  158. package/dist/services/share-vault/computation.d.ts +24 -0
  159. package/dist/services/share-vault/computation.js +42 -0
  160. package/dist/services/share-vault/index.d.ts +90 -0
  161. package/dist/services/share-vault/index.js +128 -0
  162. package/dist/services/share-vault/manager/index.d.ts +40 -0
  163. package/dist/services/share-vault/manager/index.js +111 -0
  164. package/dist/services/share-vault/manager/types.d.ts +23 -0
  165. package/dist/services/share-vault/manager/types.js +2 -0
  166. package/dist/services/share-vault/owner/index.d.ts +64 -0
  167. package/dist/services/share-vault/owner/index.js +122 -0
  168. package/dist/services/share-vault/owner/types.d.ts +33 -0
  169. package/dist/services/share-vault/owner/types.js +2 -0
  170. package/dist/services/share-vault/query.d.ts +34 -0
  171. package/dist/services/share-vault/query.js +138 -0
  172. package/dist/services/share-vault/user/index.d.ts +33 -0
  173. package/dist/services/share-vault/user/index.js +106 -0
  174. package/dist/services/share-vault/user/types.d.ts +13 -0
  175. package/dist/services/share-vault/user/types.js +2 -0
  176. package/dist/services/strategy-vault/index.d.ts +2124 -0
  177. package/dist/services/strategy-vault/index.js +268 -0
  178. package/dist/services/strategy-vault/manager/index.d.ts +1968 -0
  179. package/dist/services/strategy-vault/manager/index.js +475 -0
  180. package/dist/services/strategy-vault/manager/types.d.ts +144 -0
  181. package/dist/services/strategy-vault/manager/types.js +2 -0
  182. package/dist/services/strategy-vault/oracle.d.ts +66 -0
  183. package/dist/services/strategy-vault/oracle.js +162 -0
  184. package/dist/services/strategy-vault/owner/index.d.ts +277 -0
  185. package/dist/services/strategy-vault/owner/index.js +333 -0
  186. package/dist/services/strategy-vault/owner/types.d.ts +146 -0
  187. package/dist/services/strategy-vault/owner/types.js +2 -0
  188. package/dist/services/strategy-vault/query.d.ts +138 -0
  189. package/dist/services/strategy-vault/query.js +59 -0
  190. package/dist/services/strategy-vault/user/index.d.ts +89 -0
  191. package/dist/services/strategy-vault/user/index.js +219 -0
  192. package/dist/services/strategy-vault/user/types.d.ts +46 -0
  193. package/dist/services/strategy-vault/user/types.js +2 -0
  194. package/dist/types/sender.d.ts +7 -0
  195. package/dist/types/sender.js +2 -0
  196. package/dist/utils/action-parser.d.ts +7 -0
  197. package/dist/utils/action-parser.js +20 -0
  198. package/dist/utils/external-message-hash.d.ts +45 -0
  199. package/dist/utils/external-message-hash.js +65 -0
  200. package/dist/utils/oracle/redstone/readonlyCachedRedstone.d.ts +3 -0
  201. package/dist/utils/oracle/redstone/readonlyCachedRedstone.js +25 -0
  202. package/dist/utils/oracle/redstone/redstoneHelper.d.ts +21 -0
  203. package/dist/utils/oracle/redstone/redstoneHelper.js +228 -0
  204. package/dist/utils/parser.d.ts +40 -0
  205. package/dist/utils/parser.js +580 -0
  206. package/dist/utils/pending-tracker/index.d.ts +14 -0
  207. package/dist/utils/pending-tracker/index.js +34 -0
  208. package/dist/utils/pending-tracker/trackable-sender.d.ts +16 -0
  209. package/dist/utils/pending-tracker/trackable-sender.js +87 -0
  210. package/dist/utils/pending-tracker/type.d.ts +78 -0
  211. package/dist/utils/pending-tracker/type.js +2 -0
  212. package/dist/utils/pending-tracker/v3-client.d.ts +31 -0
  213. package/dist/utils/pending-tracker/v3-client.js +104 -0
  214. package/dist/utils/risk_calculator/risk_calculator.d.ts +45 -0
  215. package/dist/utils/risk_calculator/risk_calculator.js +332 -0
  216. package/dist/utils/utils.d.ts +5 -0
  217. package/dist/utils/utils.js +12 -0
  218. package/package.json +46 -0
@@ -0,0 +1,89 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ import { AffluentContext } from "../../../context";
3
+ import { AddressSender } from "../../../types/sender";
4
+ import { DepositAssetParams, BurnVaultAssetParams, CreateDepositQueueParams, CreateWithdrawQueueParams, CancelQueueParams } from "./types";
5
+ export * from "./types";
6
+ export declare function createDepositAssetMsg(ctx: AffluentContext, sender: AddressSender, params: DepositAssetParams, value?: bigint): Promise<{
7
+ opts: {
8
+ recipient: Address;
9
+ amount: bigint;
10
+ response: Address;
11
+ forwardTonAmount: bigint;
12
+ forwardPayload: Cell;
13
+ queryId: bigint;
14
+ };
15
+ input: {
16
+ to: Address;
17
+ value: bigint;
18
+ body: Cell;
19
+ };
20
+ }>;
21
+ export declare function createBurnVaultAssetMsg(ctx: AffluentContext, sender: AddressSender, params: BurnVaultAssetParams, value?: bigint): Promise<{
22
+ opts: {
23
+ amount: bigint;
24
+ response: Address;
25
+ forwardPayload: Cell;
26
+ queryId: bigint;
27
+ };
28
+ input: {
29
+ to: Address;
30
+ value: bigint;
31
+ body: Cell;
32
+ };
33
+ }>;
34
+ export declare function createDepositQueueMsg(ctx: AffluentContext, sender: AddressSender, params: CreateDepositQueueParams): Promise<{
35
+ opts: {
36
+ recipient: Address;
37
+ amount: bigint;
38
+ response: Address;
39
+ forwardTonAmount: bigint;
40
+ forwardPayload: Cell;
41
+ queryId: bigint;
42
+ };
43
+ input: {
44
+ to: Address;
45
+ value: bigint;
46
+ body: Cell;
47
+ };
48
+ }>;
49
+ export declare function createWithdrawQueueMsg(ctx: AffluentContext, sender: AddressSender, params: CreateWithdrawQueueParams): Promise<{
50
+ opts: {
51
+ amount: bigint;
52
+ response: Address;
53
+ forwardPayload: Cell;
54
+ queryId: bigint;
55
+ };
56
+ input: {
57
+ to: Address;
58
+ value: bigint;
59
+ body: Cell;
60
+ };
61
+ }>;
62
+ export declare function createCancelDepositQueueMsg(ctx: AffluentContext, params: CancelQueueParams): Promise<{
63
+ opts: {
64
+ to: Address;
65
+ value: bigint;
66
+ assetAddress: Address;
67
+ userAddress: Address;
68
+ queryId: bigint;
69
+ };
70
+ input: {
71
+ to: Address;
72
+ value: bigint;
73
+ body: Cell;
74
+ };
75
+ }>;
76
+ export declare function createCancelWithdrawQueueMsg(ctx: AffluentContext, params: CancelQueueParams): Promise<{
77
+ opts: {
78
+ to: Address;
79
+ value: bigint;
80
+ assetAddress: Address;
81
+ userAddress: Address;
82
+ queryId: bigint;
83
+ };
84
+ input: {
85
+ to: Address;
86
+ value: bigint;
87
+ body: Cell;
88
+ };
89
+ }>;
@@ -0,0 +1,219 @@
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
+ exports.createDepositAssetMsg = createDepositAssetMsg;
18
+ exports.createBurnVaultAssetMsg = createBurnVaultAssetMsg;
19
+ exports.createDepositQueueMsg = createDepositQueueMsg;
20
+ exports.createWithdrawQueueMsg = createWithdrawQueueMsg;
21
+ exports.createCancelDepositQueueMsg = createCancelDepositQueueMsg;
22
+ exports.createCancelWithdrawQueueMsg = createCancelWithdrawQueueMsg;
23
+ const core_1 = require("@ton/core");
24
+ const utils_1 = require("../../../contracts/common/utils");
25
+ const jetton_minter_1 = require("../../../contracts/jetton/jetton-minter");
26
+ const jetton_wallet_1 = require("../../../contracts/jetton/jetton-wallet");
27
+ const strategy_vault_1 = require("../../../contracts/vault/strategy-vault");
28
+ const computation_1 = require("../../../contracts/vault/strategy-vault/computation");
29
+ const jetton_minter_2 = require("../../../contracts/wton/jetton-minter");
30
+ const jetton_wallet_2 = require("../../../contracts/wton/jetton-wallet");
31
+ const oracle_1 = require("../oracle");
32
+ const query_1 = require("../query");
33
+ __exportStar(require("./types"), exports);
34
+ // ============================================================
35
+ // Shared Helpers
36
+ // ============================================================
37
+ async function createJettonTransferMsg(ctx, senderAddress, assetAddress, transferOpts, sendValue) {
38
+ if (ctx.isWTON(assetAddress)) {
39
+ const wtonMaster = ctx.getByContract(jetton_minter_2.WTONMinter, assetAddress);
40
+ const wtonWallet = ctx.getByContract(jetton_wallet_2.WTONWallet, (0, utils_1.toAddress)(await wtonMaster.getWalletAddress(transferOpts.recipient)));
41
+ return {
42
+ to: wtonWallet.address,
43
+ value: transferOpts.amount + transferOpts.forwardTonAmount + sendValue,
44
+ body: wtonWallet.createExternalTransferBody(transferOpts),
45
+ };
46
+ }
47
+ else {
48
+ const jettonMaster = ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress);
49
+ const jettonWalletAddress = await jettonMaster.getWalletAddress(senderAddress);
50
+ const jettonWallet = ctx.getByContract(jetton_wallet_1.JettonWallet, jettonWalletAddress);
51
+ return {
52
+ to: jettonWallet.address,
53
+ value: sendValue,
54
+ body: jettonWallet.createTransferBody(transferOpts),
55
+ };
56
+ }
57
+ }
58
+ // ============================================================
59
+ // Deposit Functions
60
+ // ============================================================
61
+ async function createDepositAssetMsg(ctx, sender, params, value) {
62
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
63
+ const vaultData = await vault.getVaultData();
64
+ const oracle = new oracle_1.OracleHelper(ctx);
65
+ const { oracleParams: oraclePayload } = await oracle.getOracleParamsForStrategyVaultV2(vaultData, [
66
+ params.assetAddress.toString(),
67
+ ...Object.keys(vaultData.assets),
68
+ ]);
69
+ const isWTON = ctx.isWTON(params.assetAddress);
70
+ const jettonResponseTonAmount = isWTON ? (0, core_1.toNano)(0.02) : 0n;
71
+ const jettonResponsePayload = isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
72
+ const forwardPayload = strategy_vault_1.StrategyVault.createDepositPayload(sender.address, oraclePayload, jettonResponseTonAmount, jettonResponsePayload);
73
+ const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
74
+ const fee = vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.Deposit] +
75
+ vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.DepositLogic] +
76
+ jettonResponseTonAmount;
77
+ const opts = {
78
+ recipient: vault.address,
79
+ amount: params.amount,
80
+ response: sender.address,
81
+ forwardTonAmount: fee,
82
+ forwardPayload,
83
+ queryId: params.queryId ?? (0, computation_1.createQueryId)({ ...params, forwardPayload }),
84
+ };
85
+ const sendValue = isWTON
86
+ ? (value ?? jetton_wallet_2.WTONWallet.Gas.ExternalTransfer)
87
+ : (value ?? fee + (0, core_1.toNano)(0.1));
88
+ const input = await createJettonTransferMsg(ctx, sender.address, assetAddress, opts, sendValue);
89
+ return { opts, input };
90
+ }
91
+ // ============================================================
92
+ // Withdraw Functions
93
+ // ============================================================
94
+ async function createBurnVaultAssetMsg(ctx, sender, params, value) {
95
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
96
+ const vaultData = await vault.getVaultData();
97
+ const vaultAssetWalllet = await (0, query_1.getVaultWallet)(ctx, params.strategyVaultAddress, sender.address);
98
+ const oracle = new oracle_1.OracleHelper(ctx);
99
+ const { oracleParams: oraclePayload } = await oracle.getOracleParamsForStrategyVaultV2(vaultData, [
100
+ params.withdrawAssetAddress.toString(),
101
+ ...Object.keys(vaultData.assets),
102
+ ]);
103
+ const withdrawAssetAddress = (0, utils_1.toAddress)(params.withdrawAssetAddress);
104
+ const isWTON = ctx.isWTON(withdrawAssetAddress);
105
+ const jettonResponseTonAmount = isWTON ? (0, core_1.toNano)(0.02) : 0n;
106
+ const jettonResponsePayload = isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
107
+ const forwardPayload = strategy_vault_1.StrategyVault.createWithdrawPayload(withdrawAssetAddress, oraclePayload, jettonResponseTonAmount, jettonResponsePayload);
108
+ const fee = vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.Withdraw] +
109
+ vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.WithdrawLogic] +
110
+ jettonResponseTonAmount +
111
+ (0, core_1.toNano)(0.1);
112
+ const opts = {
113
+ amount: params.vaultShareAmountForBurn,
114
+ response: sender.address,
115
+ forwardPayload: forwardPayload,
116
+ queryId: (0, computation_1.createQueryId)({ ...params, forwardPayload }),
117
+ };
118
+ return {
119
+ opts,
120
+ input: {
121
+ to: vaultAssetWalllet.address,
122
+ value: value ?? fee,
123
+ body: vaultAssetWalllet.createBurnBody(opts),
124
+ },
125
+ };
126
+ }
127
+ // ============================================================
128
+ // Queue Create Functions
129
+ // ============================================================
130
+ async function createDepositQueueMsg(ctx, sender, params) {
131
+ const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
132
+ const isWTON = ctx.isWTON(assetAddress);
133
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
134
+ const jettonForwardParams = params.jettonForwardParams ?? {};
135
+ const queueItemParams = params.queueItemParams ?? {};
136
+ queueItemParams.jettonForwardTonAmount ??= isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n;
137
+ queueItemParams.jettonForwardPayload ??= isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
138
+ queueItemParams.actionForwardTonAmount ??= 0n;
139
+ const vaultData = await vault.getVaultData();
140
+ jettonForwardParams.forwardPayload ??= strategy_vault_1.StrategyVault.createDepositQueuePayload(params.responseAddress ?? sender.address, queueItemParams.jettonForwardTonAmount, queueItemParams.jettonForwardPayload);
141
+ const isFirst = !vaultData.depositQueueManager.pendingAssetQueue[assetAddress.toString()]?.dict[sender.address.toString()];
142
+ jettonForwardParams.forwardTonAmount ??=
143
+ strategy_vault_1.StrategyVault.calcQueueResistGas(vaultData, queueItemParams, isFirst) + (0, core_1.toNano)(0.03);
144
+ const sendValue = params.value ?? jettonForwardParams.forwardTonAmount + (0, core_1.toNano)(0.1);
145
+ const opts = {
146
+ recipient: vault.address,
147
+ amount: params.amount,
148
+ response: sender.address,
149
+ forwardTonAmount: jettonForwardParams.forwardTonAmount,
150
+ forwardPayload: jettonForwardParams.forwardPayload,
151
+ queryId: params.queryId ?? (0, computation_1.createQueryId)(params),
152
+ };
153
+ const input = await createJettonTransferMsg(ctx, sender.address, assetAddress, opts, sendValue);
154
+ return { opts, input };
155
+ }
156
+ async function createWithdrawQueueMsg(ctx, sender, params) {
157
+ const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
158
+ const isWTON = ctx.isWTON(assetAddress);
159
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
160
+ const jettonForwardParams = params.jettonForwardParams ?? {};
161
+ const queueItemParams = params.queueItemParams ?? {};
162
+ queueItemParams.jettonForwardTonAmount ??= isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n;
163
+ queueItemParams.jettonForwardPayload ??= isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
164
+ queueItemParams.actionForwardTonAmount ??= 0n;
165
+ const vaultData = await vault.getVaultData();
166
+ jettonForwardParams.forwardPayload ??= strategy_vault_1.StrategyVault.createWithdrawQueuePayload(assetAddress, queueItemParams.jettonForwardTonAmount, queueItemParams.jettonForwardPayload, queueItemParams.actionForwardTonAmount, queueItemParams.actionForwardPayload);
167
+ const isFirst = !vaultData.withdrawQueueManager.pendingAssetQueue[assetAddress.toString()]?.dict[sender.address.toString()];
168
+ jettonForwardParams.forwardTonAmount ??=
169
+ strategy_vault_1.StrategyVault.calcQueueResistGas(vaultData, queueItemParams, isFirst) + (0, core_1.toNano)(0.03);
170
+ const sendValue = params.value ?? jettonForwardParams.forwardTonAmount + (0, core_1.toNano)(0.1);
171
+ const opts = {
172
+ amount: params.shareAmount,
173
+ response: sender.address,
174
+ forwardPayload: jettonForwardParams.forwardPayload,
175
+ queryId: params.queryId ?? (0, computation_1.createQueryId)(params),
176
+ };
177
+ const vaultWalllet = await (0, query_1.getVaultWallet)(ctx, params.strategyVaultAddress, sender.address);
178
+ return {
179
+ opts,
180
+ input: {
181
+ to: vaultWalllet.address,
182
+ value: sendValue,
183
+ body: vaultWalllet.createBurnBody(opts),
184
+ },
185
+ };
186
+ }
187
+ // ============================================================
188
+ // Queue Cancel Functions
189
+ // ============================================================
190
+ async function createCancelDepositQueueMsg(ctx, params) {
191
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
192
+ const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
193
+ const userAddress = (0, utils_1.toAddress)(params.userAddress);
194
+ const queryId = params.queryId ?? (0, computation_1.createQueryId)(params);
195
+ const value = params.value ?? (0, core_1.toNano)(0.1);
196
+ return {
197
+ opts: { to: vault.address, value, assetAddress, userAddress, queryId },
198
+ input: {
199
+ to: vault.address,
200
+ value,
201
+ body: strategy_vault_1.StrategyVault.createCancelDepositQueueBody({ assetAddress, userAddress, queryId }),
202
+ },
203
+ };
204
+ }
205
+ async function createCancelWithdrawQueueMsg(ctx, params) {
206
+ const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
207
+ const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
208
+ const userAddress = (0, utils_1.toAddress)(params.userAddress);
209
+ const queryId = params.queryId ?? (0, computation_1.createQueryId)(params);
210
+ const value = params.value ?? (0, core_1.toNano)(0.1);
211
+ return {
212
+ opts: { to: vault.address, value, assetAddress, userAddress, queryId },
213
+ input: {
214
+ to: vault.address,
215
+ value,
216
+ body: strategy_vault_1.StrategyVault.createCancelWithdrawQueueBody({ assetAddress, userAddress, queryId }),
217
+ },
218
+ };
219
+ }
@@ -0,0 +1,46 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ import { AddressInput, AddressLike } from "../../../contracts/common/type";
3
+ import { VaultResponseOptions } from "../../../contracts/vault/strategy-vault";
4
+ export type DepositAssetParams = {
5
+ strategyVaultAddress: AddressInput;
6
+ assetAddress: AddressLike;
7
+ amount: bigint;
8
+ queryId?: bigint;
9
+ };
10
+ export type BurnVaultAssetParams = {
11
+ strategyVaultAddress: AddressInput;
12
+ withdrawAssetAddress: AddressLike;
13
+ vaultShareAmountForBurn: bigint;
14
+ queryID?: bigint;
15
+ };
16
+ export type JettonForwardParams = {
17
+ forwardTonAmount?: bigint;
18
+ forwardPayload?: Cell;
19
+ };
20
+ export type CreateDepositQueueParams = {
21
+ strategyVaultAddress: AddressInput;
22
+ assetAddress: AddressLike;
23
+ amount: bigint;
24
+ responseAddress?: Address;
25
+ jettonForwardParams?: JettonForwardParams;
26
+ queueItemParams?: VaultResponseOptions;
27
+ queryId?: bigint;
28
+ value?: bigint;
29
+ };
30
+ export type CreateWithdrawQueueParams = {
31
+ strategyVaultAddress: AddressInput;
32
+ shareAmount: bigint;
33
+ assetAddress: AddressLike;
34
+ responseAddress?: Address;
35
+ jettonForwardParams?: JettonForwardParams;
36
+ queueItemParams?: VaultResponseOptions;
37
+ queryId?: bigint;
38
+ value?: bigint;
39
+ };
40
+ export type CancelQueueParams = {
41
+ strategyVaultAddress: AddressInput;
42
+ assetAddress: AddressLike;
43
+ userAddress: AddressLike;
44
+ queryId?: bigint;
45
+ value?: bigint;
46
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Address, Sender, SenderArguments } from "@ton/core";
2
+ export interface AddressSender extends Sender {
3
+ readonly address: Address;
4
+ }
5
+ export interface MultiSender extends AddressSender {
6
+ multiSend(args: SenderArguments[]): Promise<void>;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Cell } from "@ton/core";
2
+ export declare function parseAction(cell: Cell): {
3
+ contractType: string;
4
+ opCode: number;
5
+ opName: string;
6
+ data: import("..").SuccessActionNotificationMsgBody | import("..").SuccessRepayActionNotificationMsgBody | import("..").SuccessLiquidateActionNotificationMsgBody | import("..").FailTransferInActionNotificationMsgBody | import("..").FailLiquidateActionNotificationMsgBody | import("..").FailTransferOutActionNotificationMsgBody;
7
+ } | null;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAction = parseAction;
4
+ const pool_1 = require("../contracts/core/pool");
5
+ const parser_1 = require("./parser");
6
+ function parseAction(cell) {
7
+ try {
8
+ const notification = (0, parser_1.parseActionNotification)(cell);
9
+ if (notification) {
10
+ return {
11
+ contractType: "Pool",
12
+ opCode: pool_1.Pool.Op.ActionNotification,
13
+ opName: "ActionNotification",
14
+ data: notification,
15
+ };
16
+ }
17
+ }
18
+ catch (e) { }
19
+ return null;
20
+ }
@@ -0,0 +1,45 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ /**
3
+ * Compute the hash of an external message for tracking via toncenter API.
4
+ *
5
+ * TEP-467 normalization is applied for consistent hashing:
6
+ * - src: undefined
7
+ * - importFee: 0n
8
+ * - init: null
9
+ * - body: stored as reference (forceRef: true)
10
+ *
11
+ * @param walletAddress - The wallet contract address (where external message is sent)
12
+ * @param signedBody - The signed wallet transfer body (from wallet.createTransfer())
13
+ * @returns Hash in multiple formats
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { WalletContractV4 } from "@ton/ton";
18
+ *
19
+ * const wallet = WalletContractV4.create({ workchain: 0, publicKey });
20
+ * const seqno = await wallet.getSeqno(provider);
21
+ *
22
+ * // Create the signed transfer
23
+ * const transfer = wallet.createTransfer({
24
+ * seqno,
25
+ * secretKey,
26
+ * messages: [internal({ to: strategyVault, value: toNano(1), body: msgBody })],
27
+ * });
28
+ *
29
+ * // Compute the external message hash BEFORE sending
30
+ * const { hashHex } = computeExternalMessageHash(wallet.address, transfer);
31
+ *
32
+ * // Send the transaction
33
+ * await wallet.send(provider, transfer);
34
+ *
35
+ * // Track via toncenter API
36
+ * const response = await fetch(
37
+ * `https://toncenter.com/api/v3/pendingTraces?ext_msg_hash=${hashHex}`
38
+ * );
39
+ * ```
40
+ */
41
+ export declare function computeExternalMessageHash(walletAddress: Address, signedBody: Cell): {
42
+ hash: Buffer;
43
+ hashHex: string;
44
+ hashBase64: string;
45
+ };
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeExternalMessageHash = computeExternalMessageHash;
4
+ const core_1 = require("@ton/core");
5
+ /**
6
+ * Compute the hash of an external message for tracking via toncenter API.
7
+ *
8
+ * TEP-467 normalization is applied for consistent hashing:
9
+ * - src: undefined
10
+ * - importFee: 0n
11
+ * - init: null
12
+ * - body: stored as reference (forceRef: true)
13
+ *
14
+ * @param walletAddress - The wallet contract address (where external message is sent)
15
+ * @param signedBody - The signed wallet transfer body (from wallet.createTransfer())
16
+ * @returns Hash in multiple formats
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { WalletContractV4 } from "@ton/ton";
21
+ *
22
+ * const wallet = WalletContractV4.create({ workchain: 0, publicKey });
23
+ * const seqno = await wallet.getSeqno(provider);
24
+ *
25
+ * // Create the signed transfer
26
+ * const transfer = wallet.createTransfer({
27
+ * seqno,
28
+ * secretKey,
29
+ * messages: [internal({ to: strategyVault, value: toNano(1), body: msgBody })],
30
+ * });
31
+ *
32
+ * // Compute the external message hash BEFORE sending
33
+ * const { hashHex } = computeExternalMessageHash(wallet.address, transfer);
34
+ *
35
+ * // Send the transaction
36
+ * await wallet.send(provider, transfer);
37
+ *
38
+ * // Track via toncenter API
39
+ * const response = await fetch(
40
+ * `https://toncenter.com/api/v3/pendingTraces?ext_msg_hash=${hashHex}`
41
+ * );
42
+ * ```
43
+ */
44
+ function computeExternalMessageHash(walletAddress, signedBody) {
45
+ // TEP-467 normalized external-in message
46
+ const normalizedMessage = {
47
+ info: {
48
+ type: "external-in",
49
+ dest: walletAddress,
50
+ src: undefined,
51
+ importFee: 0n,
52
+ },
53
+ init: null,
54
+ body: signedBody,
55
+ };
56
+ const hash = (0, core_1.beginCell)()
57
+ .store((0, core_1.storeMessage)(normalizedMessage, { forceRef: true }))
58
+ .endCell()
59
+ .hash();
60
+ return {
61
+ hash,
62
+ hashHex: hash.toString("hex"),
63
+ hashBase64: hash.toString("base64"),
64
+ };
65
+ }
@@ -0,0 +1,3 @@
1
+ export declare class ReadonlyCachedRedstone {
2
+ static getPrices(assets: string[]): Promise<any>;
3
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadonlyCachedRedstone = void 0;
4
+ const query_cache_1 = require("../../../lib/query-cache");
5
+ const redstoneHelper_1 = require("./redstoneHelper");
6
+ const cachedRedstoneClient = (0, query_cache_1.withQueryCache)((0, redstoneHelper_1.createRedstoneHelper)("prod"));
7
+ class ReadonlyCachedRedstone {
8
+ static getPrices(assets) {
9
+ const whitelistedAssets = [
10
+ "TON",
11
+ "USDT",
12
+ "stTON_FUNDAMENTAL",
13
+ "tsTON_FUNDAMENTAL",
14
+ "XAU",
15
+ "USDe",
16
+ "tsUSDe_FUNDAMENTAL",
17
+ ];
18
+ const isWhitelistedAssetsRequest = assets.every((item) => whitelistedAssets.includes(item));
19
+ if (isWhitelistedAssetsRequest) {
20
+ assets = whitelistedAssets;
21
+ }
22
+ return cachedRedstoneClient.getPrices(assets);
23
+ }
24
+ }
25
+ exports.ReadonlyCachedRedstone = ReadonlyCachedRedstone;
@@ -0,0 +1,21 @@
1
+ export declare function parseDataPackageHex(dataPackageHex: string): {
2
+ timestamp: bigint;
3
+ price: bigint;
4
+ feedId: bigint;
5
+ };
6
+ export declare function createPayload(assets: string[]): Promise<import("@ton/core").Cell>;
7
+ export declare function getHexlifiedFeedIds(assets: string[]): string[];
8
+ export declare function getDataFeedIdTuples(assets: string[]): import("@ton/core").Cell;
9
+ export declare function createRedstoneHelper(type: "demo" | "prod"): {
10
+ createPayload: (assets: string[]) => Promise<import("@ton/core").Cell>;
11
+ getHexlifiedFeedIds: (assets: string[]) => string[];
12
+ getDataFeedIdTuples: (assets: string[]) => import("@ton/core").Cell;
13
+ getPrices: (assets: string[]) => Promise<any>;
14
+ };
15
+ declare const _default: {
16
+ getDataFeedIdTuples: typeof getDataFeedIdTuples;
17
+ getHexlifiedFeedIds: typeof getHexlifiedFeedIds;
18
+ createPayload: typeof createPayload;
19
+ createRedstoneHelper: typeof createRedstoneHelper;
20
+ };
21
+ export default _default;