@affluent-org/sdk 0.0.2 → 0.0.4

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 (109) hide show
  1. package/dist/build/Account.compiled.json +1 -0
  2. package/dist/build/Receipt.compiled.json +1 -0
  3. package/dist/build/WTONWallet.compiled.json +1 -0
  4. package/dist/common/cache.d.ts +16 -0
  5. package/dist/common/cache.js +96 -0
  6. package/dist/common/service.d.ts +20 -0
  7. package/dist/common/service.js +69 -0
  8. package/dist/common/type.d.ts +14 -0
  9. package/dist/common/type.js +2 -0
  10. package/dist/common/unknown-contract.d.ts +14 -0
  11. package/dist/common/unknown-contract.js +18 -0
  12. package/dist/common/versions.d.ts +14 -0
  13. package/dist/common/versions.js +22 -0
  14. package/dist/constants/pool.d.ts +1 -0
  15. package/dist/constants/pool.js +2 -0
  16. package/dist/contracts/_mock/simple-oracle.d.ts +34 -0
  17. package/dist/contracts/_mock/simple-oracle.js +73 -0
  18. package/dist/contracts/vault/share-vault/type.d.ts +30 -0
  19. package/dist/contracts/vault/share-vault/type.js +2 -0
  20. package/dist/contracts/vault/strategy-vault/utils.d.ts +6 -0
  21. package/dist/contracts/vault/strategy-vault/utils.js +32 -0
  22. package/dist/factorial.d.ts +14 -0
  23. package/dist/factorial.js +20 -0
  24. package/dist/farm.d.ts +92 -0
  25. package/dist/farm.js +209 -0
  26. package/dist/monitor.d.ts +57 -0
  27. package/dist/monitor.js +527 -0
  28. package/dist/monitorCacheV1.d.ts +52 -0
  29. package/dist/monitorCacheV1.js +504 -0
  30. package/dist/oracle/oracle-v2.d.ts +39 -0
  31. package/dist/oracle/oracle-v2.js +151 -0
  32. package/dist/oracle/oracle.d.ts +107 -0
  33. package/dist/oracle/oracle.js +392 -0
  34. package/dist/periphery.d.ts +259 -0
  35. package/dist/periphery.js +1087 -0
  36. package/dist/pool.d.ts +216 -0
  37. package/dist/pool.js +2298 -0
  38. package/dist/poolCacheV1.d.ts +139 -0
  39. package/dist/poolCacheV1.js +1841 -0
  40. package/dist/rfq-auction.d.ts +75 -0
  41. package/dist/rfq-auction.js +220 -0
  42. package/dist/rfq-batch.d.ts +112 -0
  43. package/dist/rfq-batch.js +284 -0
  44. package/dist/services/share-vault/computation.d.ts +14 -17
  45. package/dist/services/share-vault/computation.js +39 -0
  46. package/dist/services/share-vault/index.d.ts +37 -0
  47. package/dist/services/share-vault/index.js +12 -3
  48. package/dist/services/share-vault/query.d.ts +38 -8
  49. package/dist/services/share-vault/query.js +20 -27
  50. package/dist/services/share-vault/type.d.ts +19 -0
  51. package/dist/services/share-vault/type.js +2 -0
  52. package/dist/services/share-vault/user/index.js +3 -1
  53. package/dist/services/strategy-vault/computation.d.ts +1 -0
  54. package/dist/services/strategy-vault/computation.js +15 -0
  55. package/dist/services/strategy-vault/index.d.ts +139 -0
  56. package/dist/services/strategy-vault/index.js +9 -0
  57. package/dist/services/strategy-vault/query.d.ts +147 -0
  58. package/dist/services/strategy-vault/query.js +72 -0
  59. package/dist/services/strategy-vault/type.d.ts +2 -0
  60. package/dist/services/strategy-vault/type.js +2 -0
  61. package/dist/share-vault.d.ts +91 -0
  62. package/dist/share-vault.js +747 -0
  63. package/dist/stonfi.d.ts +18 -0
  64. package/dist/stonfi.js +76 -0
  65. package/dist/strategy_vault/base.d.ts +399 -0
  66. package/dist/strategy_vault/base.js +1199 -0
  67. package/dist/strategy_vault/index.d.ts +3 -0
  68. package/dist/strategy_vault/index.js +7 -0
  69. package/dist/strategy_vault/steps.d.ts +49 -0
  70. package/dist/strategy_vault/steps.js +170 -0
  71. package/dist/types/action.d.ts +55 -0
  72. package/dist/types/action.js +2 -0
  73. package/dist/types/address.d.ts +7 -0
  74. package/dist/types/address.js +2 -0
  75. package/dist/types/messages.d.ts +7 -0
  76. package/dist/types/messages.js +2 -0
  77. package/dist/types/params.d.ts +19 -0
  78. package/dist/types/params.js +2 -0
  79. package/dist/types/pool.d.ts +83 -0
  80. package/dist/types/pool.js +2 -0
  81. package/dist/types/transaction.d.ts +40 -0
  82. package/dist/types/transaction.js +2 -0
  83. package/dist/utils/_parse_temp/JumpIRM.d.ts +37 -0
  84. package/dist/utils/_parse_temp/JumpIRM.js +71 -0
  85. package/dist/utils/_parse_temp/Pool.d.ts +559 -0
  86. package/dist/utils/_parse_temp/Pool.js +1023 -0
  87. package/dist/utils/_parse_temp/ShareVault.d.ts +264 -0
  88. package/dist/utils/_parse_temp/ShareVault.js +479 -0
  89. package/dist/utils/_parse_temp/StrategyVault.d.ts +729 -0
  90. package/dist/utils/_parse_temp/StrategyVault.js +1865 -0
  91. package/dist/utils/_parse_temp/parseMsgBody.d.ts +13 -0
  92. package/dist/utils/_parse_temp/parseMsgBody.js +313 -0
  93. package/dist/utils/assert.d.ts +1 -0
  94. package/dist/utils/assert.js +9 -0
  95. package/dist/utils/client-for-parameter.d.ts +12 -0
  96. package/dist/utils/client-for-parameter.js +97 -0
  97. package/dist/utils/oracle/index.d.ts +4 -0
  98. package/dist/utils/oracle/index.js +19 -0
  99. package/dist/utils/oracle/redstone/helper.d.ts +22 -0
  100. package/dist/utils/oracle/redstone/helper.js +186 -0
  101. package/dist/utils/tracer.d.ts +13 -0
  102. package/dist/utils/tracer.js +137 -0
  103. package/dist/utils/tracker/index.d.ts +5 -0
  104. package/dist/utils/tracker/index.js +118 -0
  105. package/dist/utils/tracker/query-id-generactor.d.ts +2 -0
  106. package/dist/utils/tracker/query-id-generactor.js +12 -0
  107. package/dist/utils/tracker/type.d.ts +34 -0
  108. package/dist/utils/tracker/type.js +2 -0
  109. package/package.json +1 -1
@@ -2121,4 +2121,143 @@ export declare class StrategyVaultV1 {
2121
2121
  userAddress: import("@ton/core").Address;
2122
2122
  queryId: bigint;
2123
2123
  }>;
2124
+ getValuationContext(vaultAddress: AddressLike): Promise<{
2125
+ storage: {
2126
+ globalDepositValueCap: bigint;
2127
+ withdrawFeeRate: number;
2128
+ queueWithdrawFeeRate: number;
2129
+ depositQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
2130
+ withdrawQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
2131
+ interactiveVaultDict: Record<string, import("../../contracts/vault/strategy-vault").InteractiveVaultConfigItem>;
2132
+ xchainConnectorAddress: import("@ton/core").Address | null;
2133
+ xchainConfig: Record<string, {
2134
+ connected: boolean;
2135
+ xchainAccountAddress: bigint;
2136
+ oftConfig: Map<string, {
2137
+ destinationAddress: import("@ton/core").Address;
2138
+ forwardGas: bigint;
2139
+ forwardPayload?: import("@ton/core").Cell | null;
2140
+ lzTransferFeeRate?: bigint;
2141
+ }> | null;
2142
+ strategyConfig: Map<bigint, {
2143
+ isExecutable: boolean;
2144
+ }> | null;
2145
+ afterStrategyConfig: Map<bigint, {
2146
+ isExecutable: boolean;
2147
+ }> | null;
2148
+ lzGasFee: bigint;
2149
+ }>;
2150
+ xchainUpdateHash: bigint;
2151
+ owner: import("@ton/core").Address;
2152
+ manager: import("@ton/core").Address;
2153
+ assets: Record<string, import("../../contracts/vault/strategy-vault").AssetV2>;
2154
+ factorialPools: Record<string, import("../../contracts/vault/strategy-vault").FactorialPool>;
2155
+ aggregatorIndex: bigint;
2156
+ content: import("@ton/core").Cell;
2157
+ totalSupply: bigint;
2158
+ oracleConfig: import("@ton/core").Cell | import("../../contracts/oracle/redstone-onchain-oracle/type").RedstoneOnchainOracleConfig | import("../../contracts/oracle/redstone-oracle/type").RedstonOracleConfig;
2159
+ rfqConfig: {
2160
+ priceDeviationTolerance: number;
2161
+ rfqEventEmitterAddress: string | null;
2162
+ } | null;
2163
+ gasConfig: Record<string, bigint> | null;
2164
+ isPrivateVault: boolean;
2165
+ depositCloseTimestamp: number;
2166
+ withdrawOpenTimestamp: number;
2167
+ whitelistedMinters: import("@ton/core").Dictionary<import("@ton/core").Address, Boolean>;
2168
+ lastCollectTime: number;
2169
+ managementFeeRatePerYear: number;
2170
+ protocolFeeRatePerYear: number;
2171
+ collectedManagementFee: bigint;
2172
+ collectedProtocolFee: bigint;
2173
+ rfqCode: import("@ton/core").Cell;
2174
+ walletCode: import("@ton/core").Cell;
2175
+ dataAggregatorCode: import("@ton/core").Cell;
2176
+ protocolFeeManagerAddress: import("@ton/core").Address;
2177
+ rfqIndex: bigint;
2178
+ isExecutingStrategy: boolean;
2179
+ maxLeverageRatio: number;
2180
+ assetWalletDict: Record<string, string>;
2181
+ walletAssetDict: Record<string, string>;
2182
+ managementFeeRecipientAddress: import("@ton/core").Address | null;
2183
+ guardianAddress: import("@ton/core").Address | null;
2184
+ timelock: bigint;
2185
+ pendingOwnerActionIndex: bigint;
2186
+ pendingOwnerActionCount: bigint;
2187
+ pendingOwnerAction: any;
2188
+ getFactorialPoolAsset: (poolAddress: import("@ton/core").Address, assetAddress: import("@ton/core").Address) => import("../../contracts/vault/strategy-vault").FactorialPoolShare;
2189
+ getAsset: (assetAddress: import("@ton/core").Address) => import("../../contracts/vault/strategy-vault").AssetV2;
2190
+ version: string;
2191
+ address: import("@ton/core").Address;
2192
+ balance: bigint;
2193
+ code: import("@ton/core").Cell;
2194
+ } | {
2195
+ globalDepositValueCap: bigint;
2196
+ withdrawFeeRate: number;
2197
+ queueWithdrawFeeRate: number;
2198
+ depositQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
2199
+ withdrawQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
2200
+ interactiveVaultDict: Record<string, import("../../contracts/vault/strategy-vault").InteractiveVaultConfigItem>;
2201
+ xchainConnectorAddress: null;
2202
+ xchainConfig: null;
2203
+ xchainUpdateHash: bigint;
2204
+ owner: import("@ton/core").Address;
2205
+ manager: import("@ton/core").Address;
2206
+ assets: Record<string, import("../../contracts/vault/strategy-vault").AssetV2>;
2207
+ factorialPools: Record<string, import("../../contracts/vault/strategy-vault").FactorialPool>;
2208
+ aggregatorIndex: bigint;
2209
+ content: import("@ton/core").Cell;
2210
+ totalSupply: bigint;
2211
+ oracleConfig: import("@ton/core").Cell | import("../../contracts/oracle/redstone-onchain-oracle/type").RedstoneOnchainOracleConfig | import("../../contracts/oracle/redstone-oracle/type").RedstonOracleConfig;
2212
+ rfqConfig: {
2213
+ priceDeviationTolerance: number;
2214
+ rfqEventEmitterAddress: string | null;
2215
+ } | null;
2216
+ gasConfig: Record<string, bigint> | null;
2217
+ isPrivateVault: boolean;
2218
+ depositCloseTimestamp: number;
2219
+ withdrawOpenTimestamp: number;
2220
+ whitelistedMinters: import("@ton/core").Dictionary<import("@ton/core").Address, Boolean>;
2221
+ lastCollectTime: number;
2222
+ managementFeeRatePerYear: number;
2223
+ protocolFeeRatePerYear: number;
2224
+ collectedManagementFee: bigint;
2225
+ collectedProtocolFee: bigint;
2226
+ rfqCode: import("@ton/core").Cell;
2227
+ walletCode: import("@ton/core").Cell;
2228
+ dataAggregatorCode: import("@ton/core").Cell;
2229
+ protocolFeeManagerAddress: import("@ton/core").Address;
2230
+ rfqIndex: bigint;
2231
+ isExecutingStrategy: boolean;
2232
+ maxLeverageRatio: number;
2233
+ assetWalletDict: Record<string, string>;
2234
+ walletAssetDict: Record<string, string>;
2235
+ managementFeeRecipientAddress: import("@ton/core").Address | null;
2236
+ guardianAddress: import("@ton/core").Address | null;
2237
+ timelock: bigint;
2238
+ pendingOwnerActionIndex: bigint;
2239
+ pendingOwnerActionCount: bigint;
2240
+ pendingOwnerAction: any;
2241
+ getFactorialPoolAsset: (poolAddress: import("@ton/core").Address, assetAddress: import("@ton/core").Address) => import("../../contracts/vault/strategy-vault").FactorialPoolShare;
2242
+ getAsset: (assetAddress: import("@ton/core").Address) => import("../../contracts/vault/strategy-vault").AssetV2;
2243
+ version: string;
2244
+ address: import("@ton/core").Address;
2245
+ balance: bigint;
2246
+ code: import("@ton/core").Cell;
2247
+ };
2248
+ totalSupply: bigint;
2249
+ reserves: {
2250
+ [k: string]: bigint;
2251
+ };
2252
+ poolPositions: Record<string, Record<string, {
2253
+ supplyShare: bigint;
2254
+ supplyAmount: bigint;
2255
+ borrowShare: bigint;
2256
+ borrowAmount: bigint;
2257
+ }>>;
2258
+ price: bigint;
2259
+ priceInfo: import("../composite-oracle").Prices;
2260
+ }>;
2261
+ getPrice(vaultAddress: AddressLike): Promise<bigint>;
2262
+ getUnderlyingPrices(vaultAddress: AddressLike): Promise<any>;
2124
2263
  }
@@ -264,5 +264,14 @@ class StrategyVaultV1 {
264
264
  async sendCancelWithdrawQueue(sender, params) {
265
265
  return (0, send_msg_1.sendMsg)(sender, user.createCancelWithdrawQueueMsg(this.ctx, params));
266
266
  }
267
+ async getValuationContext(vaultAddress) {
268
+ return query.getValuationContext(this.ctx, vaultAddress);
269
+ }
270
+ async getPrice(vaultAddress) {
271
+ return query.getPrice(this.ctx, vaultAddress);
272
+ }
273
+ async getUnderlyingPrices(vaultAddress) {
274
+ return query.getUnderlyingPrices(this.ctx, vaultAddress);
275
+ }
267
276
  }
268
277
  exports.StrategyVaultV1 = StrategyVaultV1;
@@ -4,6 +4,7 @@ import { AddressInput, AddressLike } from "../../contracts/common/type";
4
4
  import { JettonWallet } from "../../contracts/jetton/jetton-wallet";
5
5
  import { RFQAuction } from "../../contracts/rfq/rfq_auction";
6
6
  import { StrategyVault } from "../../contracts/vault/strategy-vault";
7
+ import { PoolState } from "../../contracts/core/pool/type";
7
8
  export declare function getVault(ctx: AffluentContext, strategyVaultAddress: AddressInput): OpenedContract<StrategyVault>;
8
9
  export declare function getVaultData(ctx: AffluentContext, strategyVaultAddress: AddressLike): Promise<{
9
10
  globalDepositValueCap: bigint;
@@ -136,3 +137,149 @@ export declare function splitPureAndVaultAsset(ctx: AffluentContext, addresses:
136
137
  vaultAssetAddresses: string[];
137
138
  pureAssetAddresses: string[];
138
139
  }>;
140
+ export declare function getPoolDataForStrategyVault(ctx: AffluentContext, strategyVaultAddress: AddressInput): Promise<Record<string, PoolState>>;
141
+ export declare function getPoolPositionsForStrategyVault(ctx: AffluentContext, strategyVaultAddress: AddressInput): Promise<Record<string, Record<string, {
142
+ supplyShare: bigint;
143
+ supplyAmount: bigint;
144
+ borrowShare: bigint;
145
+ borrowAmount: bigint;
146
+ }>>>;
147
+ export declare function getValuationContext(ctx: AffluentContext, strategyVaultAddress: AddressInput): Promise<{
148
+ storage: {
149
+ globalDepositValueCap: bigint;
150
+ withdrawFeeRate: number;
151
+ queueWithdrawFeeRate: number;
152
+ depositQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
153
+ withdrawQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
154
+ interactiveVaultDict: Record<string, import("../../contracts/vault/strategy-vault").InteractiveVaultConfigItem>;
155
+ xchainConnectorAddress: Address | null;
156
+ xchainConfig: Record<string, {
157
+ connected: boolean;
158
+ xchainAccountAddress: bigint;
159
+ oftConfig: Map<string, {
160
+ destinationAddress: Address;
161
+ forwardGas: bigint;
162
+ forwardPayload?: import("@ton/core").Cell | null;
163
+ lzTransferFeeRate?: bigint;
164
+ }> | null;
165
+ strategyConfig: Map<bigint, {
166
+ isExecutable: boolean;
167
+ }> | null;
168
+ afterStrategyConfig: Map<bigint, {
169
+ isExecutable: boolean;
170
+ }> | null;
171
+ lzGasFee: bigint;
172
+ }>;
173
+ xchainUpdateHash: bigint;
174
+ owner: Address;
175
+ manager: Address;
176
+ assets: Record<string, import("../../contracts/vault/strategy-vault").AssetV2>;
177
+ factorialPools: Record<string, import("../../contracts/vault/strategy-vault").FactorialPool>;
178
+ aggregatorIndex: bigint;
179
+ content: import("@ton/core").Cell;
180
+ totalSupply: bigint;
181
+ oracleConfig: import("@ton/core").Cell | import("../../contracts/oracle/redstone-onchain-oracle/type").RedstoneOnchainOracleConfig | import("../../contracts/oracle/redstone-oracle/type").RedstonOracleConfig;
182
+ rfqConfig: {
183
+ priceDeviationTolerance: number;
184
+ rfqEventEmitterAddress: string | null;
185
+ } | null;
186
+ gasConfig: Record<string, bigint> | null;
187
+ isPrivateVault: boolean;
188
+ depositCloseTimestamp: number;
189
+ withdrawOpenTimestamp: number;
190
+ whitelistedMinters: import("@ton/core").Dictionary<Address, Boolean>;
191
+ lastCollectTime: number;
192
+ managementFeeRatePerYear: number;
193
+ protocolFeeRatePerYear: number;
194
+ collectedManagementFee: bigint;
195
+ collectedProtocolFee: bigint;
196
+ rfqCode: import("@ton/core").Cell;
197
+ walletCode: import("@ton/core").Cell;
198
+ dataAggregatorCode: import("@ton/core").Cell;
199
+ protocolFeeManagerAddress: Address;
200
+ rfqIndex: bigint;
201
+ isExecutingStrategy: boolean;
202
+ maxLeverageRatio: number;
203
+ assetWalletDict: Record<string, string>;
204
+ walletAssetDict: Record<string, string>;
205
+ managementFeeRecipientAddress: Address | null;
206
+ guardianAddress: Address | null;
207
+ timelock: bigint;
208
+ pendingOwnerActionIndex: bigint;
209
+ pendingOwnerActionCount: bigint;
210
+ pendingOwnerAction: any;
211
+ getFactorialPoolAsset: (poolAddress: Address, assetAddress: Address) => import("../../contracts/vault/strategy-vault").FactorialPoolShare;
212
+ getAsset: (assetAddress: Address) => import("../../contracts/vault/strategy-vault").AssetV2;
213
+ version: string;
214
+ address: Address;
215
+ balance: bigint;
216
+ code: import("@ton/core").Cell;
217
+ } | {
218
+ globalDepositValueCap: bigint;
219
+ withdrawFeeRate: number;
220
+ queueWithdrawFeeRate: number;
221
+ depositQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
222
+ withdrawQueueManager: import("../../contracts/vault/strategy-vault").QueueManager;
223
+ interactiveVaultDict: Record<string, import("../../contracts/vault/strategy-vault").InteractiveVaultConfigItem>;
224
+ xchainConnectorAddress: null;
225
+ xchainConfig: null;
226
+ xchainUpdateHash: bigint;
227
+ owner: Address;
228
+ manager: Address;
229
+ assets: Record<string, import("../../contracts/vault/strategy-vault").AssetV2>;
230
+ factorialPools: Record<string, import("../../contracts/vault/strategy-vault").FactorialPool>;
231
+ aggregatorIndex: bigint;
232
+ content: import("@ton/core").Cell;
233
+ totalSupply: bigint;
234
+ oracleConfig: import("@ton/core").Cell | import("../../contracts/oracle/redstone-onchain-oracle/type").RedstoneOnchainOracleConfig | import("../../contracts/oracle/redstone-oracle/type").RedstonOracleConfig;
235
+ rfqConfig: {
236
+ priceDeviationTolerance: number;
237
+ rfqEventEmitterAddress: string | null;
238
+ } | null;
239
+ gasConfig: Record<string, bigint> | null;
240
+ isPrivateVault: boolean;
241
+ depositCloseTimestamp: number;
242
+ withdrawOpenTimestamp: number;
243
+ whitelistedMinters: import("@ton/core").Dictionary<Address, Boolean>;
244
+ lastCollectTime: number;
245
+ managementFeeRatePerYear: number;
246
+ protocolFeeRatePerYear: number;
247
+ collectedManagementFee: bigint;
248
+ collectedProtocolFee: bigint;
249
+ rfqCode: import("@ton/core").Cell;
250
+ walletCode: import("@ton/core").Cell;
251
+ dataAggregatorCode: import("@ton/core").Cell;
252
+ protocolFeeManagerAddress: Address;
253
+ rfqIndex: bigint;
254
+ isExecutingStrategy: boolean;
255
+ maxLeverageRatio: number;
256
+ assetWalletDict: Record<string, string>;
257
+ walletAssetDict: Record<string, string>;
258
+ managementFeeRecipientAddress: Address | null;
259
+ guardianAddress: Address | null;
260
+ timelock: bigint;
261
+ pendingOwnerActionIndex: bigint;
262
+ pendingOwnerActionCount: bigint;
263
+ pendingOwnerAction: any;
264
+ getFactorialPoolAsset: (poolAddress: Address, assetAddress: Address) => import("../../contracts/vault/strategy-vault").FactorialPoolShare;
265
+ getAsset: (assetAddress: Address) => import("../../contracts/vault/strategy-vault").AssetV2;
266
+ version: string;
267
+ address: Address;
268
+ balance: bigint;
269
+ code: import("@ton/core").Cell;
270
+ };
271
+ totalSupply: bigint;
272
+ reserves: {
273
+ [k: string]: bigint;
274
+ };
275
+ poolPositions: Record<string, Record<string, {
276
+ supplyShare: bigint;
277
+ supplyAmount: bigint;
278
+ borrowShare: bigint;
279
+ borrowAmount: bigint;
280
+ }>>;
281
+ price: bigint;
282
+ priceInfo: import("../composite-oracle").Prices;
283
+ }>;
284
+ export declare function getPrice(ctx: AffluentContext, strategyVaultAddress: AddressInput): Promise<bigint>;
285
+ export declare function getUnderlyingPrices(ctx: AffluentContext, strategyVaultAddress: AddressInput): Promise<any>;
@@ -7,10 +7,18 @@ exports.getRFQAuctionAddress = getRFQAuctionAddress;
7
7
  exports.getRFQAuction = getRFQAuction;
8
8
  exports.isVaultAsset = isVaultAsset;
9
9
  exports.splitPureAndVaultAsset = splitPureAndVaultAsset;
10
+ exports.getPoolDataForStrategyVault = getPoolDataForStrategyVault;
11
+ exports.getPoolPositionsForStrategyVault = getPoolPositionsForStrategyVault;
12
+ exports.getValuationContext = getValuationContext;
13
+ exports.getPrice = getPrice;
14
+ exports.getUnderlyingPrices = getUnderlyingPrices;
15
+ const core_1 = require("@ton/core");
10
16
  const utils_1 = require("../../contracts/common/utils");
11
17
  const jetton_wallet_1 = require("../../contracts/jetton/jetton-wallet");
12
18
  const rfq_auction_1 = require("../../contracts/rfq/rfq_auction");
13
19
  const strategy_vault_1 = require("../../contracts/vault/strategy-vault");
20
+ const composite_oracle_1 = require("../composite-oracle");
21
+ const pool_1 = require("../../contracts/core/pool");
14
22
  function getVault(ctx, strategyVaultAddress) {
15
23
  return ctx.getByContract(strategy_vault_1.StrategyVault, (0, utils_1.toAddress)(strategyVaultAddress));
16
24
  }
@@ -57,3 +65,67 @@ async function splitPureAndVaultAsset(ctx, addresses) {
57
65
  pureAssetAddresses,
58
66
  };
59
67
  }
68
+ async function getPoolDataForStrategyVault(ctx, strategyVaultAddress) {
69
+ const vaultData = await getVault(ctx, strategyVaultAddress).getVaultData();
70
+ const poolAddresses = Object.keys(vaultData.factorialPools);
71
+ const poolDataEntriesPromises = poolAddresses.map(async (poolAddress) => {
72
+ const pool = ctx.getByContract(pool_1.Pool, core_1.Address.parse(poolAddress));
73
+ return [poolAddress, await pool.getPoolData()];
74
+ });
75
+ const poolDataEntries = await Promise.all(poolDataEntriesPromises);
76
+ return Object.fromEntries(poolDataEntries);
77
+ }
78
+ async function getPoolPositionsForStrategyVault(ctx, strategyVaultAddress) {
79
+ const strategyVault = getVault(ctx, strategyVaultAddress);
80
+ const vaultData = await strategyVault.getVaultData();
81
+ const poolInfo = {};
82
+ const poolDatas = await getPoolDataForStrategyVault(ctx, strategyVaultAddress);
83
+ for (const [poolAddress, poolPosition] of Object.entries(vaultData.factorialPools)) {
84
+ const poolData = poolDatas[poolAddress];
85
+ const position = {};
86
+ for (const [assetAddress, assetPosition] of Object.entries(poolPosition)) {
87
+ const amountPosition = (0, pool_1.positionShareToAmount)(assetPosition, poolData.assets[assetAddress]);
88
+ position[assetAddress] = {
89
+ supplyShare: assetPosition.supply,
90
+ supplyAmount: amountPosition.supply,
91
+ borrowShare: assetPosition.borrow,
92
+ borrowAmount: amountPosition.borrow,
93
+ };
94
+ }
95
+ poolInfo[poolAddress] = position;
96
+ }
97
+ return poolInfo;
98
+ }
99
+ async function getValuationContext(ctx, strategyVaultAddress) {
100
+ const compositeOracle = new composite_oracle_1.CompositeOracleV1(ctx);
101
+ const vaultData = await getVaultData(ctx, (0, utils_1.toAddress)(strategyVaultAddress));
102
+ const { allPrices: priceInfo } = await compositeOracle.getVaultPriceWithDetails((0, utils_1.toAddress)(strategyVaultAddress));
103
+ const vaultPrice = priceInfo[(0, utils_1.toAddress)(strategyVaultAddress).toString()].price;
104
+ if (!vaultPrice)
105
+ throw new Error("Vault price not found");
106
+ const poolPositions = await getPoolPositionsForStrategyVault(ctx, strategyVaultAddress);
107
+ return {
108
+ storage: vaultData,
109
+ totalSupply: vaultData.totalSupply,
110
+ reserves: Object.fromEntries(Object.entries(vaultData.assets)
111
+ .map(([assetAddress, assetData]) => [assetAddress, assetData.cash])),
112
+ poolPositions,
113
+ price: vaultPrice,
114
+ priceInfo,
115
+ };
116
+ }
117
+ async function getPrice(ctx, strategyVaultAddress) {
118
+ const valuationCtx = await getValuationContext(ctx, strategyVaultAddress);
119
+ return valuationCtx.price;
120
+ }
121
+ async function getUnderlyingPrices(ctx, strategyVaultAddress) {
122
+ const valuationCtx = await getValuationContext(ctx, strategyVaultAddress);
123
+ const underlyingPriceEntries = Object.keys(valuationCtx.storage.assets)
124
+ .map(assetAddress => {
125
+ const priceData = valuationCtx.priceInfo[assetAddress];
126
+ if (!priceData)
127
+ throw new Error(`Price data not found for asset ${assetAddress}`);
128
+ return [assetAddress, priceData.price];
129
+ });
130
+ return Object.fromEntries(underlyingPriceEntries);
131
+ }
@@ -0,0 +1,2 @@
1
+ import { AssetState } from "../../contracts/core/pool/type";
2
+ export type PoolInfoForStrategyVault = Record<string, Record<string, AssetState>>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,91 @@
1
+ import { Address, Sender } from "@ton/ton";
2
+ import { ShareVaultManagerSetTargetWeightAction, ShareVaultManagerSupplyAction, ShareVaultManagerWithdrawAction, ShareVaultUserActionParams } from "./types/action";
3
+ import { TxStep, TxCallBackFn } from "./utils/tracker/type";
4
+ import { ServiceBaseV1 } from "./common/service";
5
+ import { ShareVaultState, WhitelistedPool } from "./contracts/vault/share-vault/type";
6
+ type PoolInfoForShareVault = {
7
+ cash: bigint;
8
+ totalSupplyAmount: bigint;
9
+ totalSupplyShare: bigint;
10
+ vaultSupplyAmount: bigint;
11
+ };
12
+ export declare class ShareVaultV1 extends ServiceBaseV1 {
13
+ private walletAddresses;
14
+ private getJettonWalletAddress;
15
+ findTx(action: any, callbackFn?: TxCallBackFn): Promise<{
16
+ action: {
17
+ type: string;
18
+ params: ShareVaultUserActionParams;
19
+ queryId: bigint;
20
+ };
21
+ steps: TxStep[];
22
+ } | undefined>;
23
+ supply(sender: Sender, params: ShareVaultUserActionParams): Promise<void>;
24
+ supplyAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
25
+ action: {
26
+ type: string;
27
+ params: ShareVaultUserActionParams;
28
+ queryId: bigint;
29
+ };
30
+ steps: TxStep[];
31
+ }>;
32
+ findSupplyTx(queryId: bigint, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
33
+ action: {
34
+ type: string;
35
+ params: ShareVaultUserActionParams;
36
+ queryId: bigint;
37
+ };
38
+ steps: TxStep[];
39
+ }>;
40
+ withdraw(sender: Sender, params: ShareVaultUserActionParams): Promise<void>;
41
+ withdrawAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
42
+ action: {
43
+ type: string;
44
+ params: ShareVaultUserActionParams;
45
+ queryId: bigint;
46
+ };
47
+ steps: TxStep[];
48
+ }>;
49
+ findWithdrawTx(queryId: bigint, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
50
+ action: {
51
+ type: string;
52
+ params: ShareVaultUserActionParams;
53
+ queryId: bigint;
54
+ };
55
+ steps: TxStep[];
56
+ }>;
57
+ supplyToPool(sender: Sender, params: ShareVaultManagerSupplyAction): Promise<void>;
58
+ withdrawFromPool(sender: Sender, params: ShareVaultManagerWithdrawAction): Promise<void>;
59
+ withdrawFromPoolSimulate(sender: Address, params: ShareVaultManagerWithdrawAction): Promise<void>;
60
+ setTargetWeight(sender: Sender, params: ShareVaultManagerSetTargetWeightAction): Promise<void>;
61
+ getVaultData(vaultAddress: Address | string): Promise<ShareVaultState>;
62
+ getPoolCashAmounts(vaultData: ShareVaultState): Promise<Record<string, bigint>>;
63
+ getPoolInfoForShareVault(vaultData: ShareVaultState): Promise<Record<string, PoolInfoForShareVault>>;
64
+ estimateWithdrawLiquidityFulfillmentPoolCount(vaultData: ShareVaultState, requst_vault_shares: bigint): Promise<{
65
+ count: number;
66
+ sortedPools: {
67
+ targetWeightRatio: number;
68
+ poolAddress: string;
69
+ availableAmount: bigint;
70
+ pool: any;
71
+ }[];
72
+ }>;
73
+ getPoolTupleSortedByTargetWeight(whitelistedPools: Record<string, WhitelistedPool>, totalAssetAmount: bigint, totalTargetWeight: bigint, poolInfoForShareVault: Record<string, PoolInfoForShareVault>): {
74
+ targetWeightRatio: number;
75
+ poolAddress: string;
76
+ availableAmount: bigint;
77
+ pool: any;
78
+ }[];
79
+ WTON: {
80
+ unwrap: (sender: Sender, params: {
81
+ amount: bigint;
82
+ sender: Address | string;
83
+ recipient: Address | string;
84
+ }) => Promise<void>;
85
+ wrap: (sender: Sender, params: {
86
+ amount: bigint;
87
+ recipient: Address | string;
88
+ }) => Promise<void>;
89
+ };
90
+ }
91
+ export {};