@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,122 @@
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.createSetWhitelistPoolsMsg = createSetWhitelistPoolsMsg;
18
+ exports.createSetGasConfigMsg = createSetGasConfigMsg;
19
+ exports.createChangeManagerMsg = createChangeManagerMsg;
20
+ exports.createChangeAdminMsg = createChangeAdminMsg;
21
+ exports.createUpgradeCodeMsg = createUpgradeCodeMsg;
22
+ const core_1 = require("@ton/core");
23
+ const utils_1 = require("../../../contracts/common/utils");
24
+ const share_vault_1 = require("../../../contracts/vault/share-vault");
25
+ __exportStar(require("./types"), exports);
26
+ const DEFAULT_VALUE = (0, core_1.toNano)(0.1);
27
+ // ============================================================
28
+ // Set Whitelist Pools
29
+ // ============================================================
30
+ async function createSetWhitelistPoolsMsg(ctx, params, value) {
31
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
32
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
33
+ const whitelists = params.whitelists.map(([addr, flag]) => [(0, utils_1.toAddress)(addr), flag]);
34
+ const opts = {
35
+ whitelists,
36
+ queryID: params.queryId,
37
+ };
38
+ return {
39
+ opts,
40
+ input: {
41
+ to: vault.address,
42
+ value: value ?? DEFAULT_VALUE,
43
+ body: share_vault_1.ShareVault.createSetWhitelistPoolsMsgBody(opts),
44
+ },
45
+ };
46
+ }
47
+ // ============================================================
48
+ // Set Gas Config
49
+ // ============================================================
50
+ async function createSetGasConfigMsg(ctx, params, value) {
51
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
52
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
53
+ const opts = {
54
+ gasFee: params.gasConfig,
55
+ queryID: params.queryId,
56
+ };
57
+ return {
58
+ opts,
59
+ input: {
60
+ to: vault.address,
61
+ value: value ?? DEFAULT_VALUE,
62
+ body: share_vault_1.ShareVault.createSetGasConfigMsgBody(opts),
63
+ },
64
+ };
65
+ }
66
+ // ============================================================
67
+ // Change Manager
68
+ // ============================================================
69
+ async function createChangeManagerMsg(ctx, params, value) {
70
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
71
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
72
+ const opts = {
73
+ manager: (0, utils_1.toAddress)(params.newManager),
74
+ queryID: params.queryId,
75
+ };
76
+ return {
77
+ opts,
78
+ input: {
79
+ to: vault.address,
80
+ value: value ?? DEFAULT_VALUE,
81
+ body: share_vault_1.ShareVault.createChangeManagerMsgBody(opts),
82
+ },
83
+ };
84
+ }
85
+ // ============================================================
86
+ // Change Admin
87
+ // ============================================================
88
+ async function createChangeAdminMsg(ctx, params, value) {
89
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
90
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
91
+ const opts = {
92
+ address: (0, utils_1.toAddress)(params.newAdmin),
93
+ queryID: params.queryId ? Number(params.queryId) : undefined,
94
+ };
95
+ return {
96
+ opts,
97
+ input: {
98
+ to: vault.address,
99
+ value: value ?? DEFAULT_VALUE,
100
+ body: share_vault_1.ShareVault.createChangeAdminMsgBody(opts),
101
+ },
102
+ };
103
+ }
104
+ // ============================================================
105
+ // Upgrade Code
106
+ // ============================================================
107
+ async function createUpgradeCodeMsg(ctx, params, value) {
108
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
109
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
110
+ const opts = {
111
+ newCode: params.newCode,
112
+ queryID: params.queryId ? Number(params.queryId) : undefined,
113
+ };
114
+ return {
115
+ opts,
116
+ input: {
117
+ to: vault.address,
118
+ value: value ?? DEFAULT_VALUE,
119
+ body: share_vault_1.ShareVault.createUpgradeCodeMsgBody(opts),
120
+ },
121
+ };
122
+ }
@@ -0,0 +1,33 @@
1
+ import { Cell } from "@ton/core";
2
+ import { AddressInput, AddressLike } from "../../../contracts/common/type";
3
+ import { ShareVaultGasConfig } from "../../../contracts/vault/share-vault";
4
+ export type SetWhitelistPoolsParams = {
5
+ vaultAddress: AddressInput;
6
+ whitelists: [AddressLike, 0 | 1][];
7
+ queryId?: bigint;
8
+ value?: bigint;
9
+ };
10
+ export type SetGasConfigParams = {
11
+ vaultAddress: AddressInput;
12
+ gasConfig: ShareVaultGasConfig;
13
+ queryId?: bigint;
14
+ value?: bigint;
15
+ };
16
+ export type ChangeManagerParams = {
17
+ vaultAddress: AddressInput;
18
+ newManager: AddressLike;
19
+ queryId?: bigint;
20
+ value?: bigint;
21
+ };
22
+ export type ChangeAdminParams = {
23
+ vaultAddress: AddressInput;
24
+ newAdmin: AddressLike;
25
+ queryId?: bigint;
26
+ value?: bigint;
27
+ };
28
+ export type UpgradeCodeParams = {
29
+ vaultAddress: AddressInput;
30
+ newCode: Cell;
31
+ queryId?: bigint;
32
+ value?: bigint;
33
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ import { Address } from "@ton/core";
2
+ import { AffluentContext } from "../../context";
3
+ import { AddressInput, AddressLike } from "../../contracts/common/type";
4
+ import { ShareVault, ShareVaultState } from "../../contracts/vault/share-vault";
5
+ import { JettonWallet } from "../../contracts/jetton/jetton-wallet";
6
+ import { PoolInfoForShareVault, PoolTuple } from "./computation";
7
+ export { PoolInfoForShareVault, PoolTuple, getPoolTupleSortedByTargetWeight } from "./computation";
8
+ /**
9
+ * Get ShareVault contract instance
10
+ */
11
+ export declare function getVault(ctx: AffluentContext, vaultAddress: AddressInput): import("@ton/core").OpenedContract<ShareVault>;
12
+ /**
13
+ * Get ShareVault data
14
+ */
15
+ export declare function getVaultData(ctx: AffluentContext, vaultAddress: AddressInput): Promise<ShareVaultState>;
16
+ /**
17
+ * Get user's vault share wallet address
18
+ */
19
+ export declare function getVaultWalletAddress(ctx: AffluentContext, vaultAddress: AddressInput, userAddress: AddressLike): Promise<Address>;
20
+ /**
21
+ * Get user's vault share wallet
22
+ */
23
+ export declare function getVaultWallet(ctx: AffluentContext, vaultAddress: AddressInput, userAddress: AddressLike): Promise<import("@ton/core").OpenedContract<JettonWallet>>;
24
+ /**
25
+ * Get pool info for all whitelisted pools
26
+ */
27
+ export declare function getPoolInfoForShareVault(ctx: AffluentContext, vaultData: ShareVaultState): Promise<Record<string, PoolInfoForShareVault>>;
28
+ /**
29
+ * Estimate how many pools need to be withdrawn from to fulfill a withdrawal request
30
+ */
31
+ export declare function estimateWithdrawPoolCount(ctx: AffluentContext, vaultData: ShareVaultState, requestedShares: bigint): Promise<{
32
+ count: number;
33
+ sortedPools: PoolTuple[];
34
+ }>;
@@ -0,0 +1,138 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getPoolTupleSortedByTargetWeight = void 0;
37
+ exports.getVault = getVault;
38
+ exports.getVaultData = getVaultData;
39
+ exports.getVaultWalletAddress = getVaultWalletAddress;
40
+ exports.getVaultWallet = getVaultWallet;
41
+ exports.getPoolInfoForShareVault = getPoolInfoForShareVault;
42
+ exports.estimateWithdrawPoolCount = estimateWithdrawPoolCount;
43
+ const core_1 = require("@ton/core");
44
+ const utils_1 = require("../../contracts/common/utils");
45
+ const share_vault_1 = require("../../contracts/vault/share-vault");
46
+ const pool_1 = require("../../contracts/core/pool");
47
+ const jetton_wallet_1 = require("../../contracts/jetton/jetton-wallet");
48
+ const computation_1 = require("./computation");
49
+ // Re-export computation functions and types
50
+ var computation_2 = require("./computation");
51
+ Object.defineProperty(exports, "getPoolTupleSortedByTargetWeight", { enumerable: true, get: function () { return computation_2.getPoolTupleSortedByTargetWeight; } });
52
+ /**
53
+ * Get ShareVault contract instance
54
+ */
55
+ function getVault(ctx, vaultAddress) {
56
+ return ctx.getByContract(share_vault_1.ShareVault, (0, utils_1.toAddress)(vaultAddress));
57
+ }
58
+ /**
59
+ * Get ShareVault data
60
+ */
61
+ async function getVaultData(ctx, vaultAddress) {
62
+ const vault = getVault(ctx, vaultAddress);
63
+ return vault.getVaultData();
64
+ }
65
+ /**
66
+ * Get user's vault share wallet address
67
+ */
68
+ async function getVaultWalletAddress(ctx, vaultAddress, userAddress) {
69
+ const vault = getVault(ctx, vaultAddress);
70
+ return vault.getWalletAddress((0, utils_1.toAddress)(userAddress));
71
+ }
72
+ /**
73
+ * Get user's vault share wallet
74
+ */
75
+ async function getVaultWallet(ctx, vaultAddress, userAddress) {
76
+ const walletAddress = await getVaultWalletAddress(ctx, vaultAddress, userAddress);
77
+ return ctx.getByContract(jetton_wallet_1.JettonWallet, walletAddress);
78
+ }
79
+ /**
80
+ * Get pool info for all whitelisted pools
81
+ */
82
+ async function getPoolInfoForShareVault(ctx, vaultData) {
83
+ const poolInfo = {};
84
+ const vaultAddress = vaultData.address;
85
+ const assetAddress = vaultData.asset;
86
+ for (const poolAddress of Object.keys(vaultData.whitelistedPools)) {
87
+ const pool = ctx.getByContract(pool_1.Pool, core_1.Address.parse(poolAddress));
88
+ const poolData = await pool.getPoolData();
89
+ const assetState = poolData.assets[assetAddress.toString()];
90
+ if (!assetState)
91
+ continue;
92
+ const vaultAccountAddress = await pool.getAccountAddress(vaultAddress);
93
+ let vaultSupplyAmount = 0n;
94
+ try {
95
+ const { Account } = await Promise.resolve().then(() => __importStar(require("../../contracts/core/account")));
96
+ const vaultAccount = ctx.getByContract(Account, vaultAccountAddress);
97
+ const accountData = await vaultAccount.getAccountData();
98
+ const assetStatus = accountData.status[assetAddress.toString()];
99
+ if (assetStatus && assetState.totalSupplyShare > 0n) {
100
+ vaultSupplyAmount = (assetStatus.supply * assetState.totalSupplyAmount) / assetState.totalSupplyShare;
101
+ }
102
+ }
103
+ catch {
104
+ // Account not deployed
105
+ }
106
+ poolInfo[poolAddress] = {
107
+ cash: assetState.cash,
108
+ totalSupplyAmount: assetState.totalSupplyAmount,
109
+ totalSupplyShare: assetState.totalSupplyShare,
110
+ vaultSupplyAmount,
111
+ };
112
+ }
113
+ return poolInfo;
114
+ }
115
+ /**
116
+ * Estimate how many pools need to be withdrawn from to fulfill a withdrawal request
117
+ */
118
+ async function estimateWithdrawPoolCount(ctx, vaultData, requestedShares) {
119
+ const poolInfo = await getPoolInfoForShareVault(ctx, vaultData);
120
+ const totalAssetAmount = Object.values(poolInfo).reduce((acc, p) => acc + p.vaultSupplyAmount, 0n) + vaultData.cash;
121
+ const sortedPools = (0, computation_1.getPoolTupleSortedByTargetWeight)(vaultData.whitelistedPools, totalAssetAmount, vaultData.totalTargetWeight, poolInfo);
122
+ if (vaultData.totalSupply === 0n) {
123
+ return { count: 0, sortedPools };
124
+ }
125
+ const requestedAmount = (requestedShares * totalAssetAmount) / vaultData.totalSupply;
126
+ let remainingAmount = requestedAmount - vaultData.cash;
127
+ if (remainingAmount <= 0n) {
128
+ return { count: 0, sortedPools };
129
+ }
130
+ let count = 0;
131
+ for (const pool of sortedPools) {
132
+ if (remainingAmount <= 0n)
133
+ break;
134
+ remainingAmount -= pool.withdrawableAmount;
135
+ count++;
136
+ }
137
+ return { count, sortedPools };
138
+ }
@@ -0,0 +1,33 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ import { AffluentContext } from "../../../context";
3
+ import { AddressSender } from "../../../types/sender";
4
+ import { SupplyParams, WithdrawParams } from "./types";
5
+ export * from "./types";
6
+ export declare function createSupplyMsg(ctx: AffluentContext, sender: AddressSender, params: SupplyParams, value?: bigint): Promise<{
7
+ opts: {
8
+ recipient: Address;
9
+ response: Address;
10
+ amount: bigint;
11
+ forwardTonAmount: bigint;
12
+ forwardPayload: Cell;
13
+ queryId: bigint | undefined;
14
+ };
15
+ input: {
16
+ to: Address;
17
+ value: bigint;
18
+ body: Cell;
19
+ };
20
+ }>;
21
+ export declare function createWithdrawMsg(ctx: AffluentContext, sender: AddressSender, params: WithdrawParams, value?: bigint): Promise<{
22
+ opts: {
23
+ amount: bigint;
24
+ response: Address;
25
+ forwardPayload: Cell;
26
+ queryId: bigint | undefined;
27
+ };
28
+ input: {
29
+ to: Address;
30
+ value: bigint;
31
+ body: Cell;
32
+ };
33
+ }>;
@@ -0,0 +1,106 @@
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.createSupplyMsg = createSupplyMsg;
18
+ exports.createWithdrawMsg = createWithdrawMsg;
19
+ const utils_1 = require("../../../contracts/common/utils");
20
+ const share_vault_1 = require("../../../contracts/vault/share-vault");
21
+ const jetton_minter_1 = require("../../../contracts/jetton/jetton-minter");
22
+ const jetton_wallet_1 = require("../../../contracts/jetton/jetton-wallet");
23
+ const jetton_wallet_2 = require("../../../contracts/wton/jetton-wallet");
24
+ const jetton_minter_2 = require("../../../contracts/wton/jetton-minter");
25
+ const query_1 = require("../query");
26
+ __exportStar(require("./types"), exports);
27
+ // ============================================================
28
+ // Supply
29
+ // ============================================================
30
+ async function createSupplyMsg(ctx, sender, params, value) {
31
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
32
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
33
+ const vaultData = await vault.getVaultData();
34
+ const assetAddress = vaultData.asset;
35
+ const isWTON = ctx.isWTON(assetAddress);
36
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Supply, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee, isWTON);
37
+ const forwardPayload = share_vault_1.ShareVault.createSupplyForwardPayload({
38
+ responseAddress: sender.address,
39
+ jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
40
+ jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
41
+ });
42
+ const opts = {
43
+ recipient: vaultAddress,
44
+ response: sender.address,
45
+ amount: params.amount,
46
+ forwardTonAmount: gas,
47
+ forwardPayload,
48
+ queryId: params.queryId,
49
+ };
50
+ if (isWTON) {
51
+ const vaultWalletAddress = await ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress).getWalletAddress(vaultAddress);
52
+ const vaultWTONWallet = ctx.getByContract(jetton_wallet_2.WTONWallet, vaultWalletAddress);
53
+ return {
54
+ opts,
55
+ input: {
56
+ to: vaultWTONWallet.address,
57
+ value: value ?? jetton_wallet_2.WTONWallet.Gas.ExternalTransfer,
58
+ body: vaultWTONWallet.createExternalTransferBody(opts),
59
+ },
60
+ };
61
+ }
62
+ else {
63
+ const senderWalletAddress = await ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress).getWalletAddress(sender.address);
64
+ const senderWallet = ctx.getByContract(jetton_wallet_1.JettonWallet, senderWalletAddress);
65
+ return {
66
+ opts,
67
+ input: {
68
+ to: senderWallet.address,
69
+ value: value ?? gas + jetton_wallet_1.JettonWallet.Gas.Transfer,
70
+ body: senderWallet.createTransferBody(opts),
71
+ },
72
+ };
73
+ }
74
+ }
75
+ // ============================================================
76
+ // Withdraw
77
+ // ============================================================
78
+ async function createWithdrawMsg(ctx, sender, params, value) {
79
+ const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
80
+ const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
81
+ const vaultData = await vault.getVaultData();
82
+ const assetAddress = vaultData.asset;
83
+ const isWTON = ctx.isWTON(assetAddress);
84
+ // Estimate pool count for gas calculation
85
+ const { count: poolCount } = await (0, query_1.estimateWithdrawPoolCount)(ctx, vaultData, params.amount);
86
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, poolCount, vaultData.minimumGasFee, isWTON);
87
+ const forwardPayload = share_vault_1.ShareVault.createWithdrawForwardPayload({
88
+ jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
89
+ jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
90
+ });
91
+ const senderVaultWallet = await (0, query_1.getVaultWallet)(ctx, vaultAddress, sender.address);
92
+ const opts = {
93
+ amount: params.amount,
94
+ response: sender.address,
95
+ forwardPayload,
96
+ queryId: params.queryId,
97
+ };
98
+ return {
99
+ opts,
100
+ input: {
101
+ to: senderVaultWallet.address,
102
+ value: value ?? gas,
103
+ body: senderVaultWallet.createBurnBody(opts),
104
+ },
105
+ };
106
+ }
@@ -0,0 +1,13 @@
1
+ import { AddressInput } from "../../../contracts/common/type";
2
+ export type SupplyParams = {
3
+ vaultAddress: AddressInput;
4
+ amount: bigint;
5
+ queryId?: bigint;
6
+ value?: bigint;
7
+ };
8
+ export type WithdrawParams = {
9
+ vaultAddress: AddressInput;
10
+ amount: bigint;
11
+ queryId?: bigint;
12
+ value?: bigint;
13
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });