@affluent-org/sdk 0.0.4 → 0.0.6

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 (110) hide show
  1. package/dist/affluent.d.ts +3 -3
  2. package/dist/affluent.js +3 -3
  3. package/dist/common/computation.d.ts +6 -0
  4. package/dist/common/computation.js +54 -0
  5. package/dist/common/helper.d.ts +5 -0
  6. package/dist/common/helper.js +29 -0
  7. package/dist/common/service.d.ts +10 -2
  8. package/dist/common/service.js +56 -3
  9. package/dist/common/trace-action.d.ts +92 -0
  10. package/dist/common/trace-action.js +187 -0
  11. package/dist/common/transform.d.ts +87 -0
  12. package/dist/common/transform.js +264 -0
  13. package/dist/common/types.d.ts +140 -0
  14. package/dist/common/types.js +11 -0
  15. package/dist/context.d.ts +3 -0
  16. package/dist/context.js +9 -0
  17. package/dist/contracts/oracle/redstone-onchain-oracle/index.js +2 -0
  18. package/dist/contracts/oracle/redstone-onchain-oracle/type.d.ts +1 -1
  19. package/dist/contracts/vault/strategy-vault/index.d.ts +2 -1
  20. package/dist/contracts/vault/strategy-vault/index.js +1 -0
  21. package/dist/factorial.d.ts +18 -8
  22. package/dist/factorial.js +26 -14
  23. package/dist/index.d.ts +4 -2
  24. package/dist/index.js +18 -2
  25. package/dist/lib/send-msg.d.ts +16 -2
  26. package/dist/lib/send-msg.js +23 -2
  27. package/dist/monitor.js +2 -0
  28. package/dist/monitorCacheV1.js +3 -2
  29. package/dist/oracle/oracle.d.ts +3 -2
  30. package/dist/oracle/oracle.js +25 -2
  31. package/dist/pool.d.ts +41 -0
  32. package/dist/pool.js +146 -178
  33. package/dist/poolCacheV1.js +1 -0
  34. package/dist/rfq-auction.d.ts +2 -2
  35. package/dist/rfq-auction.js +6 -6
  36. package/dist/rfq-batch.d.ts +21 -11
  37. package/dist/rfq-batch.js +81 -9
  38. package/dist/services/composite-oracle/codec.d.ts +76 -0
  39. package/dist/services/composite-oracle/codec.js +281 -0
  40. package/dist/services/composite-oracle/computation.d.ts +8 -19
  41. package/dist/services/composite-oracle/computation.js +119 -76
  42. package/dist/services/composite-oracle/index.d.ts +2 -2
  43. package/dist/services/composite-oracle/index.js +5 -6
  44. package/dist/services/composite-oracle/query.d.ts +6 -6
  45. package/dist/services/composite-oracle/query.js +6 -47
  46. package/dist/services/pool/computation.d.ts +3 -9
  47. package/dist/services/pool/computation.js +12 -78
  48. package/dist/services/pool/index.d.ts +10 -59
  49. package/dist/services/pool/index.js +55 -8
  50. package/dist/services/pool/oracle.d.ts +2 -2
  51. package/dist/services/pool/query.d.ts +1 -1
  52. package/dist/services/pool/query.js +1 -1
  53. package/dist/services/pool/user/trace.d.ts +90 -0
  54. package/dist/services/pool/user/trace.js +168 -0
  55. package/dist/services/rfq-auction/index.d.ts +7 -23
  56. package/dist/services/rfq-auction/index.js +45 -6
  57. package/dist/services/rfq-auction/oracle.d.ts +2 -2
  58. package/dist/services/rfq-auction/user/index.js +1 -1
  59. package/dist/services/rfq-auction/user/trace.d.ts +53 -0
  60. package/dist/services/rfq-auction/user/trace.js +68 -0
  61. package/dist/services/rfq-batch/index.d.ts +16 -13
  62. package/dist/services/rfq-batch/index.js +34 -10
  63. package/dist/services/rfq-batch/oracle.d.ts +2 -2
  64. package/dist/services/rfq-batch/user/trace.d.ts +49 -0
  65. package/dist/services/rfq-batch/user/trace.js +67 -0
  66. package/dist/services/share-vault/index.d.ts +14 -88
  67. package/dist/services/share-vault/index.js +37 -10
  68. package/dist/services/share-vault/query.d.ts +5 -32
  69. package/dist/services/share-vault/query.js +25 -12
  70. package/dist/services/share-vault/user/trace.d.ts +54 -0
  71. package/dist/services/share-vault/user/trace.js +84 -0
  72. package/dist/services/strategy-vault/index.d.ts +77 -2115
  73. package/dist/services/strategy-vault/index.js +119 -54
  74. package/dist/services/strategy-vault/oracle.d.ts +3 -3
  75. package/dist/services/strategy-vault/oracle.js +1 -0
  76. package/dist/services/strategy-vault/owner/index.d.ts +2 -2
  77. package/dist/services/strategy-vault/owner/index.js +1 -1
  78. package/dist/services/strategy-vault/owner/types.d.ts +4 -0
  79. package/dist/services/strategy-vault/query.d.ts +14 -143
  80. package/dist/services/strategy-vault/query.js +28 -40
  81. package/dist/services/strategy-vault/user/trace.d.ts +156 -0
  82. package/dist/services/strategy-vault/user/trace.js +264 -0
  83. package/dist/share-vault.d.ts +164 -8
  84. package/dist/share-vault.js +222 -67
  85. package/dist/strategy_vault/base.d.ts +521 -105
  86. package/dist/strategy_vault/base.js +493 -41
  87. package/dist/strategy_vault/steps.d.ts +120 -3
  88. package/dist/strategy_vault/steps.js +161 -0
  89. package/dist/types/sender.d.ts +1 -0
  90. package/dist/utils/_parse_temp/StrategyVault.d.ts +9 -9
  91. package/dist/utils/_parse_temp/StrategyVault.js +48 -40
  92. package/dist/utils/_parse_temp/parseMsgBody.d.ts +2 -2
  93. package/dist/utils/_parse_temp/parseMsgBody.js +84 -84
  94. package/dist/utils/external-message-hash.d.ts +7 -3
  95. package/dist/utils/external-message-hash.js +20 -7
  96. package/dist/utils/oracle/redstone/helper.js +2 -0
  97. package/dist/utils/oracle/redstone/redstoneHelper.d.ts +7 -0
  98. package/dist/utils/oracle/redstone/redstoneHelper.js +103 -1
  99. package/dist/utils/pending-tracker/trackable-sender.d.ts +37 -4
  100. package/dist/utils/pending-tracker/trackable-sender.js +47 -8
  101. package/dist/utils/pending-tracker/v3-client.d.ts +16 -0
  102. package/dist/utils/pending-tracker/v3-client.js +80 -2
  103. package/dist/utils/risk_calculator/risk_calculator.d.ts +3 -3
  104. package/dist/utils/toncenter/index.d.ts +1 -0
  105. package/dist/utils/toncenter/index.js +17 -0
  106. package/dist/utils/toncenter/transform.d.ts +11 -0
  107. package/dist/utils/toncenter/transform.js +40 -0
  108. package/dist/utils/toncenter/type.d.ts +227 -0
  109. package/dist/utils/toncenter/type.js +2 -0
  110. package/package.json +3 -3
@@ -1,8 +1,8 @@
1
- import { Address, Sender } from "@ton/ton";
1
+ import { Address, Cell, Sender } from "@ton/ton";
2
2
  import { ShareVaultManagerSetTargetWeightAction, ShareVaultManagerSupplyAction, ShareVaultManagerWithdrawAction, ShareVaultUserActionParams } from "./types/action";
3
3
  import { TxStep, TxCallBackFn } from "./utils/tracker/type";
4
+ import { ShareVaultState, WhitelistedPoolData } from "./contracts/vault/share-vault";
4
5
  import { ServiceBaseV1 } from "./common/service";
5
- import { ShareVaultState, WhitelistedPool } from "./contracts/vault/share-vault/type";
6
6
  type PoolInfoForShareVault = {
7
7
  cash: bigint;
8
8
  totalSupplyAmount: bigint;
@@ -20,8 +20,38 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
20
20
  };
21
21
  steps: TxStep[];
22
22
  } | undefined>;
23
- supply(sender: Sender, params: ShareVaultUserActionParams): Promise<void>;
24
- supplyAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
23
+ supply(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
24
+ opt: {
25
+ queryId: bigint;
26
+ recipient: Address;
27
+ response: Address;
28
+ amount: bigint;
29
+ forwardTonAmount: bigint;
30
+ };
31
+ queryId: bigint;
32
+ steps: TxStep[];
33
+ senderVaultWalletAddress: Address;
34
+ } | {
35
+ opt: {
36
+ queryId: bigint;
37
+ recipient: Address;
38
+ response: Address;
39
+ amount: bigint;
40
+ forwardTonAmount: bigint;
41
+ forwardPayload: Cell;
42
+ };
43
+ steps: TxStep[];
44
+ senderVaultWalletAddress: Address;
45
+ }>;
46
+ supplyAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn, vaultData?: ShareVaultState): Promise<{
47
+ action: {
48
+ type: string;
49
+ params: ShareVaultUserActionParams;
50
+ queryId: bigint;
51
+ };
52
+ steps: TxStep[];
53
+ }>;
54
+ supplyAndWaitTxV1(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn, vaultData?: ShareVaultState): Promise<{
25
55
  action: {
26
56
  type: string;
27
57
  params: ShareVaultUserActionParams;
@@ -29,6 +59,47 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
29
59
  };
30
60
  steps: TxStep[];
31
61
  }>;
62
+ supplyAndWaitTxV2(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn, vaultData?: ShareVaultState): Promise<{
63
+ action: {
64
+ type: string;
65
+ params: ShareVaultUserActionParams;
66
+ queryId: bigint;
67
+ };
68
+ steps: TxStep[];
69
+ }>;
70
+ supplyV1(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
71
+ opt: {
72
+ queryId: bigint;
73
+ recipient: Address;
74
+ response: Address;
75
+ amount: bigint;
76
+ forwardTonAmount: bigint;
77
+ };
78
+ queryId: bigint;
79
+ steps: TxStep[];
80
+ senderVaultWalletAddress: Address;
81
+ }>;
82
+ supplyV2(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
83
+ opt: {
84
+ queryId: bigint;
85
+ recipient: Address;
86
+ response: Address;
87
+ amount: bigint;
88
+ forwardTonAmount: bigint;
89
+ forwardPayload: Cell;
90
+ };
91
+ steps: TxStep[];
92
+ senderVaultWalletAddress: Address;
93
+ }>;
94
+ buildSupplySteps(params: ShareVaultUserActionParams, queryId: bigint, senderVaultWalletAddress: Address, firstStep: TxStep): TxStep[];
95
+ waitSupplyTx(steps: TxStep[], params: ShareVaultUserActionParams, queryId: bigint, senderVaultWalletAddress: Address, callbackFn?: TxCallBackFn): {
96
+ action: {
97
+ type: string;
98
+ params: ShareVaultUserActionParams;
99
+ queryId: bigint;
100
+ };
101
+ steps: TxStep[];
102
+ };
32
103
  findSupplyTx(queryId: bigint, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
33
104
  action: {
34
105
  type: string;
@@ -37,8 +108,34 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
37
108
  };
38
109
  steps: TxStep[];
39
110
  }>;
40
- withdraw(sender: Sender, params: ShareVaultUserActionParams): Promise<void>;
41
- withdrawAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
111
+ withdraw(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
112
+ opt: {
113
+ queryId: bigint;
114
+ response: Address;
115
+ amount: bigint;
116
+ };
117
+ steps: TxStep[];
118
+ senderVaultWalletAddress: Address;
119
+ asset: Address;
120
+ senderJettonWalletAddress: Address;
121
+ }>;
122
+ withdrawAndWaitTx(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn, vaultData?: ShareVaultState): Promise<{
123
+ action: {
124
+ type: string;
125
+ params: ShareVaultUserActionParams;
126
+ queryId: bigint;
127
+ };
128
+ steps: TxStep[];
129
+ }>;
130
+ withdrawAndWaitTxV1(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
131
+ action: {
132
+ type: string;
133
+ params: ShareVaultUserActionParams;
134
+ queryId: bigint;
135
+ };
136
+ steps: TxStep[];
137
+ }>;
138
+ withdrawAndWaitTxV2(sender: Sender, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
42
139
  action: {
43
140
  type: string;
44
141
  params: ShareVaultUserActionParams;
@@ -46,6 +143,38 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
46
143
  };
47
144
  steps: TxStep[];
48
145
  }>;
146
+ withdrawV1(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
147
+ opt: {
148
+ queryId: bigint;
149
+ response: Address;
150
+ amount: bigint;
151
+ };
152
+ steps: TxStep[];
153
+ senderVaultWalletAddress: Address;
154
+ asset: Address;
155
+ senderJettonWalletAddress: Address;
156
+ }>;
157
+ withdrawV2(sender: Sender, params: ShareVaultUserActionParams, vaultData?: ShareVaultState): Promise<{
158
+ opt: {
159
+ queryId: bigint;
160
+ response: Address;
161
+ amount: bigint;
162
+ forwardPayload: Cell;
163
+ };
164
+ steps: TxStep[];
165
+ senderVaultWalletAddress: Address;
166
+ asset: Address;
167
+ senderJettonWalletAddress: Address;
168
+ }>;
169
+ buildWithdrawSteps(params: ShareVaultUserActionParams, queryId: bigint, vaultJettonWalletAddress: Address, senderVaultWalletAddress: Address, senderJettonWalletAddress: Address): TxStep[];
170
+ waitWithdrawTx(steps: TxStep[], params: ShareVaultUserActionParams, queryId: bigint, senderVaultWalletAddress: Address, assetAddress: Address, senderJettonWalletAddress: Address, callbackFn?: TxCallBackFn): {
171
+ action: {
172
+ type: string;
173
+ params: ShareVaultUserActionParams;
174
+ queryId: bigint;
175
+ };
176
+ steps: TxStep[];
177
+ };
49
178
  findWithdrawTx(queryId: bigint, params: ShareVaultUserActionParams, callbackFn?: TxCallBackFn): Promise<{
50
179
  action: {
51
180
  type: string;
@@ -58,7 +187,34 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
58
187
  withdrawFromPool(sender: Sender, params: ShareVaultManagerWithdrawAction): Promise<void>;
59
188
  withdrawFromPoolSimulate(sender: Address, params: ShareVaultManagerWithdrawAction): Promise<void>;
60
189
  setTargetWeight(sender: Sender, params: ShareVaultManagerSetTargetWeightAction): Promise<void>;
61
- getVaultData(vaultAddress: Address | string): Promise<ShareVaultState>;
190
+ getVaultData(vaultAddress: Address | string): Promise<{
191
+ totalSupply: bigint;
192
+ owner: Address | null;
193
+ manager: Address | null;
194
+ asset: Address;
195
+ balance: bigint;
196
+ cash: bigint;
197
+ totalTargetWeight: bigint;
198
+ nextAggregatorIndex: bigint;
199
+ isWtonVault: boolean;
200
+ assetWallet: Address | null;
201
+ whitelistedPools: Record<string, {
202
+ isWhitelisted: boolean;
203
+ targetWeight: bigint;
204
+ supply: bigint;
205
+ } & {
206
+ address: Address;
207
+ }>;
208
+ minimumGasFee: {
209
+ supply: bigint;
210
+ withdraw: bigint;
211
+ factorialSupply: bigint;
212
+ factorialWithdraw: bigint;
213
+ mintVaultShareTokens: bigint;
214
+ };
215
+ code: Cell;
216
+ address: Address;
217
+ }>;
62
218
  getPoolCashAmounts(vaultData: ShareVaultState): Promise<Record<string, bigint>>;
63
219
  getPoolInfoForShareVault(vaultData: ShareVaultState): Promise<Record<string, PoolInfoForShareVault>>;
64
220
  estimateWithdrawLiquidityFulfillmentPoolCount(vaultData: ShareVaultState, requst_vault_shares: bigint): Promise<{
@@ -70,7 +226,7 @@ export declare class ShareVaultV1 extends ServiceBaseV1 {
70
226
  pool: any;
71
227
  }[];
72
228
  }>;
73
- getPoolTupleSortedByTargetWeight(whitelistedPools: Record<string, WhitelistedPool>, totalAssetAmount: bigint, totalTargetWeight: bigint, poolInfoForShareVault: Record<string, PoolInfoForShareVault>): {
229
+ getPoolTupleSortedByTargetWeight(whitelistedPools: Record<string, WhitelistedPoolData>, totalAssetAmount: bigint, totalTargetWeight: bigint, poolInfoForShareVault: Record<string, PoolInfoForShareVault>): {
74
230
  targetWeightRatio: number;
75
231
  poolAddress: string;
76
232
  availableAmount: bigint;
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ShareVaultV1 = void 0;
4
7
  const ton_1 = require("@ton/ton");
@@ -10,8 +13,10 @@ const share_vault_1 = require("./contracts/vault/share-vault");
10
13
  const query_id_generactor_1 = require("./utils/tracker/query-id-generactor");
11
14
  const parser_1 = require("./utils/parser");
12
15
  const jetton_wallet_2 = require("./contracts/wton/jetton-wallet");
13
- const jetton_minter_2 = require("./contracts/wton/jetton-minter");
14
16
  const service_1 = require("./common/service");
17
+ const versions_1 = require("./common/versions");
18
+ const jetton_minter_2 = require("./contracts/wton/jetton-minter");
19
+ const WTONWallet_compiled_json_1 = __importDefault(require("./build/WTONWallet.compiled.json"));
15
20
  const TIMEOUT_SEC = 2 * 60 * 1000;
16
21
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17
22
  const toAddress = (value) => {
@@ -47,81 +52,159 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
47
52
  return this.findWithdrawTx(BigInt(action.queryId), action.params, callbackFn);
48
53
  }
49
54
  }
50
- async supply(sender, params) {
55
+ async supply(sender, params, vaultData) {
51
56
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
52
- const vaultData = await shareVault.getVaultData();
57
+ vaultData ??= await shareVault.getVaultData();
58
+ const version = this.contractVersion.getVersion(vaultData.code);
59
+ try {
60
+ if (version === versions_1.AffluentVersions.ShareV1) {
61
+ return await this.supplyV1(sender, params, vaultData);
62
+ }
63
+ else {
64
+ return await this.supplyV2(sender, params, vaultData);
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.error(version);
69
+ throw error;
70
+ }
71
+ }
72
+ async supplyAndWaitTx(sender, params, callbackFn, vaultData) {
73
+ const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
74
+ vaultData ??= await shareVault.getVaultData();
75
+ const version = this.contractVersion.getVersion(vaultData.code);
76
+ try {
77
+ if (version === versions_1.AffluentVersions.ShareV1) {
78
+ return this.supplyAndWaitTxV1(sender, params, callbackFn, vaultData);
79
+ }
80
+ else {
81
+ return this.supplyAndWaitTxV2(sender, params, callbackFn, vaultData);
82
+ }
83
+ }
84
+ catch (error) {
85
+ console.error(version);
86
+ throw error;
87
+ }
88
+ }
89
+ async supplyAndWaitTxV1(sender, params, callbackFn, vaultData) {
90
+ const result = await this.supplyV1(sender, params, vaultData);
91
+ return this.waitSupplyTx(result.steps, params, result.opt.queryId, result.senderVaultWalletAddress, callbackFn);
92
+ }
93
+ async supplyAndWaitTxV2(sender, params, callbackFn, vaultData) {
94
+ const result = await this.supplyV2(sender, params, vaultData);
95
+ return this.waitSupplyTx(result.steps, params, result.opt.queryId, result.senderVaultWalletAddress, callbackFn);
96
+ }
97
+ async supplyV1(sender, params, vaultData) {
98
+ const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
99
+ vaultData ??= await shareVault.getVaultData();
53
100
  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);
101
+ const senderJettonWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(vaultData.asset));
102
+ const senderJettonWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderJettonWalletAddress));
103
+ const senderVaultWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(params.vault));
104
+ const _opt = {
105
+ recipient: toAddress(params.vault),
106
+ response: toAddress(params.response),
107
+ amount: params.amount,
108
+ forwardTonAmount: gas,
109
+ };
110
+ const body = senderJettonWallet.createTransferBody(_opt);
111
+ const queryId = (0, query_id_generactor_1.generateQueryId)(toAddress(params.sender), body);
112
+ const opt = {
113
+ ..._opt,
114
+ queryId: queryId,
115
+ };
116
+ let steps = [];
54
117
  if (toString(vaultData.asset) == this.contracts.WTON) {
55
- const vaultWTONWalletAddress = await this.getJettonWalletAddress(toString(params.vault), toString(vaultData.asset));
56
- const vaultWTONWallet = this.client.open(jetton_wallet_2.WTONWallet.createFromAddress(vaultWTONWalletAddress));
57
- await vaultWTONWallet.sendExternalTransfer(sender, jetton_wallet_2.WTONWallet.Gas.ExternalTransfer, {
58
- recipient: toAddress(params.vault),
59
- response: toAddress(params.response),
60
- amount: params.amount,
61
- forwardTonAmount: gas,
62
- forwardPayload: (0, ton_1.beginCell)().storeUint(0, 32).endCell(),
118
+ const wtonWalletCode = ton_1.Cell.fromHex(WTONWallet_compiled_json_1.default.hex);
119
+ const vaultWTONWallet = this.client.open(jetton_wallet_2.WTONWallet.createFromConfig({
120
+ jettonMinter: vaultData.asset,
121
+ owner: toAddress(params.vault),
122
+ walletCode: wtonWalletCode,
123
+ }, wtonWalletCode));
124
+ await vaultWTONWallet.sendExternalTransfer(sender, jetton_wallet_2.WTONWallet.Gas.ExternalTransfer, opt);
125
+ steps = this.buildSupplySteps(params, queryId, senderVaultWalletAddress, {
126
+ queryId,
127
+ description: "Starting the tx",
128
+ from: toAddress(params.sender),
129
+ to: vaultWTONWallet.address,
130
+ opcode: jetton_wallet_2.WTONWallet.Op.ExternalTransfer,
63
131
  });
64
132
  }
65
133
  else {
66
- const senderJettonWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(vaultData.asset));
67
- const senderJettonWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderJettonWalletAddress));
68
- await senderJettonWallet.sendTransfer(sender, gas + jetton_wallet_1.JettonWallet.Gas.Transfer, {
69
- recipient: toAddress(params.vault),
70
- response: toAddress(params.response),
71
- amount: params.amount,
72
- forwardTonAmount: gas,
134
+ await senderJettonWallet.sendTransfer(sender, gas + jetton_wallet_1.JettonWallet.Gas.Transfer, opt);
135
+ steps = this.buildSupplySteps(params, queryId, senderVaultWalletAddress, {
136
+ description: "Starting the tx",
137
+ from: toAddress(params.sender),
138
+ to: senderJettonWalletAddress,
139
+ opcode: jetton_wallet_1.JettonWallet.Op.Transfer,
140
+ queryId: queryId,
73
141
  });
74
142
  }
143
+ return {
144
+ opt,
145
+ queryId,
146
+ steps,
147
+ senderVaultWalletAddress,
148
+ };
75
149
  }
76
- async supplyAndWaitTx(sender, params, callbackFn) {
150
+ async supplyV2(sender, params, vaultData) {
77
151
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
78
- const vaultData = await shareVault.getVaultData();
79
- 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);
152
+ vaultData ??= await shareVault.getVaultData();
153
+ const isWTON = this.isWTON(toString(vaultData.asset));
154
+ 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);
80
155
  const senderJettonWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(vaultData.asset));
81
156
  const senderJettonWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderJettonWalletAddress));
82
157
  const senderVaultWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(params.vault));
83
- const opt = {
158
+ const _opt = {
84
159
  recipient: toAddress(params.vault),
85
160
  response: toAddress(params.response),
86
161
  amount: params.amount,
87
162
  forwardTonAmount: gas,
163
+ forwardPayload: share_vault_1.ShareVault.createSupplyForwardPayload({
164
+ responseAddress: toAddress(params.response),
165
+ jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
166
+ jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
167
+ }),
88
168
  };
89
- const body = senderJettonWallet.createTransferBody(opt);
169
+ const body = senderJettonWallet.createTransferBody(_opt);
90
170
  const queryId = (0, query_id_generactor_1.generateQueryId)(toAddress(params.sender), body);
91
- const steps = [];
171
+ const opt = {
172
+ ..._opt,
173
+ queryId: queryId,
174
+ };
175
+ let steps = [];
92
176
  if (toString(vaultData.asset) == this.contracts.WTON) {
93
177
  const vaultWTONWalletAddress = await this.getJettonWalletAddress(toString(params.vault), toString(vaultData.asset));
94
178
  const vaultWTONWallet = this.client.open(jetton_wallet_2.WTONWallet.createFromAddress(vaultWTONWalletAddress));
95
- await vaultWTONWallet.sendExternalTransfer(sender, jetton_wallet_2.WTONWallet.Gas.ExternalTransfer, {
96
- ...opt,
97
- queryId: queryId,
179
+ await vaultWTONWallet.sendExternalTransfer(sender, jetton_wallet_2.WTONWallet.Gas.ExternalTransfer, opt);
180
+ steps = this.buildSupplySteps(params, queryId, senderVaultWalletAddress, {
181
+ queryId,
182
+ description: "Starting the tx",
183
+ from: toAddress(params.sender),
184
+ to: vaultWTONWalletAddress,
185
+ opcode: jetton_wallet_2.WTONWallet.Op.ExternalTransfer,
98
186
  });
99
- steps.push(...[
100
- {
101
- queryId,
102
- description: "Starting the tx",
103
- from: toAddress(params.sender),
104
- to: vaultWTONWalletAddress,
105
- opcode: jetton_wallet_2.WTONWallet.Op.ExternalTransfer,
106
- },
107
- ]);
108
187
  }
109
188
  else {
110
- await senderJettonWallet.sendTransfer(sender, gas + jetton_wallet_1.JettonWallet.Gas.Transfer, {
111
- ...opt,
189
+ await senderJettonWallet.sendTransfer(sender, gas + jetton_wallet_1.JettonWallet.Gas.Transfer, opt);
190
+ steps = this.buildSupplySteps(params, queryId, senderVaultWalletAddress, {
191
+ description: "Starting the tx",
192
+ from: toAddress(params.sender),
193
+ to: senderJettonWalletAddress,
194
+ opcode: jetton_wallet_1.JettonWallet.Op.Transfer,
112
195
  queryId: queryId,
113
196
  });
114
- steps.push(...[
115
- {
116
- description: "Starting the tx",
117
- from: toAddress(params.sender),
118
- to: senderJettonWalletAddress,
119
- opcode: jetton_wallet_1.JettonWallet.Op.Transfer,
120
- queryId: queryId,
121
- },
122
- ]);
123
197
  }
198
+ return {
199
+ opt,
200
+ steps,
201
+ senderVaultWalletAddress,
202
+ };
203
+ }
204
+ buildSupplySteps(params, queryId, senderVaultWalletAddress, firstStep) {
205
+ const steps = [];
124
206
  steps.push(...[
207
+ firstStep,
125
208
  {
126
209
  description: "Sending the token to the vault",
127
210
  to: toAddress(params.vault),
@@ -153,6 +236,9 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
153
236
  opcode: jetton_wallet_1.JettonWallet.Op.InternalTransfer,
154
237
  },
155
238
  ]);
239
+ return steps;
240
+ }
241
+ waitSupplyTx(steps, params, queryId, senderVaultWalletAddress, callbackFn) {
156
242
  (async () => {
157
243
  const matchedTx1 = await (0, tracker_1.findTx)(this.client, toAddress(params.sender), "0", steps[0]);
158
244
  steps[0].matchedTx = matchedTx1;
@@ -319,21 +405,69 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
319
405
  steps,
320
406
  };
321
407
  }
322
- async withdraw(sender, params) {
408
+ async withdraw(sender, params, vaultData) {
409
+ const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
410
+ vaultData ??= await shareVault.getVaultData();
411
+ const version = this.contractVersion.getVersion(vaultData.code);
412
+ if (version === versions_1.AffluentVersions.ShareV1) {
413
+ return this.withdrawV1(sender, params, vaultData);
414
+ }
415
+ else {
416
+ return this.withdrawV2(sender, params, vaultData);
417
+ }
418
+ }
419
+ async withdrawAndWaitTx(sender, params, callbackFn, vaultData) {
420
+ const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
421
+ vaultData ??= await shareVault.getVaultData();
422
+ const version = this.contractVersion.getVersion(vaultData.code);
423
+ if (version === versions_1.AffluentVersions.ShareV1) {
424
+ return this.withdrawAndWaitTxV1(sender, params, callbackFn);
425
+ }
426
+ else {
427
+ return this.withdrawAndWaitTxV2(sender, params, callbackFn);
428
+ }
429
+ }
430
+ async withdrawAndWaitTxV1(sender, params, callbackFn) {
431
+ const result = await this.withdrawV1(sender, params);
432
+ return this.waitWithdrawTx(result.steps, params, result.opt.queryId, result.senderVaultWalletAddress, result.asset, result.senderJettonWalletAddress, callbackFn);
433
+ }
434
+ async withdrawAndWaitTxV2(sender, params, callbackFn) {
435
+ const result = await this.withdrawV2(sender, params);
436
+ return this.waitWithdrawTx(result.steps, params, result.opt.queryId, result.senderVaultWalletAddress, result.asset, result.senderJettonWalletAddress, callbackFn);
437
+ }
438
+ async withdrawV1(sender, params, vaultData) {
439
+ const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
440
+ vaultData ??= await shareVault.getVaultData();
441
+ const asset = vaultData.asset;
442
+ const vaultJettonWalletAddress = await this.getJettonWalletAddress(toString(params.vault), toString(vaultData.asset));
443
+ const senderJettonWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(vaultData.asset));
444
+ const senderJettonWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderJettonWalletAddress));
323
445
  const senderVaultWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(params.vault));
324
446
  const senderVaultWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderVaultWalletAddress));
325
- const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
326
- const vaultData = await shareVault.getVaultData();
327
447
  const { count } = await this.estimateWithdrawLiquidityFulfillmentPoolCount(vaultData, params.amount);
328
- const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, count, vaultData.minimumGasFee) + (0, ton_1.toNano)(0.1); // TODO: re-mapping withdraw gas fee
329
- await senderVaultWallet.sendBurn(sender, gas, {
448
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, count, vaultData.minimumGasFee, this.isWTON(toString(vaultData.asset))) + (0, ton_1.toNano)(0.1);
449
+ const _opt = {
330
450
  response: toAddress(params.response),
331
451
  amount: params.amount,
332
- });
452
+ };
453
+ const queryId = (0, query_id_generactor_1.generateQueryId)(toAddress(params.sender), jetton_wallet_1.JettonWallet.getBurnMsgBody(_opt));
454
+ const opt = {
455
+ ..._opt,
456
+ queryId: queryId,
457
+ };
458
+ await senderVaultWallet.sendBurn(sender, gas, opt);
459
+ const steps = this.buildWithdrawSteps(params, queryId, vaultJettonWalletAddress, senderVaultWalletAddress, senderJettonWalletAddress);
460
+ return {
461
+ opt,
462
+ steps,
463
+ senderVaultWalletAddress,
464
+ asset,
465
+ senderJettonWalletAddress,
466
+ };
333
467
  }
334
- async withdrawAndWaitTx(sender, params, callbackFn) {
468
+ async withdrawV2(sender, params, vaultData) {
335
469
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
336
- const vaultData = await shareVault.getVaultData();
470
+ vaultData ??= await shareVault.getVaultData();
337
471
  const asset = vaultData.asset;
338
472
  const vaultJettonWalletAddress = await this.getJettonWalletAddress(toString(params.vault), toString(vaultData.asset));
339
473
  const senderJettonWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(vaultData.asset));
@@ -341,14 +475,32 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
341
475
  const senderVaultWalletAddress = await this.getJettonWalletAddress(toString(params.sender), toString(params.vault));
342
476
  const senderVaultWallet = this.client.open(jetton_wallet_1.JettonWallet.createFromAddress(senderVaultWalletAddress));
343
477
  const { count } = await this.estimateWithdrawLiquidityFulfillmentPoolCount(vaultData, params.amount);
344
- const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, count, vaultData.minimumGasFee) + (0, ton_1.toNano)(0.1); // TODO: re-mapping withdraw gas fee
345
- const opt = { response: toAddress(params.response), amount: params.amount };
346
- // const queryId = 16131232817234889649n;
347
- const queryId = (0, query_id_generactor_1.generateQueryId)(toAddress(params.sender), jetton_wallet_1.JettonWallet.getBurnMsgBody(opt));
348
- await senderVaultWallet.sendBurn(sender, gas, {
349
- ...opt,
478
+ const isWTON = this.isWTON(toString(vaultData.asset));
479
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, count, vaultData.minimumGasFee, isWTON) + (0, ton_1.toNano)(0.1);
480
+ const _opt = {
481
+ response: toAddress(params.response),
482
+ amount: params.amount,
483
+ forwardPayload: share_vault_1.ShareVault.createWithdrawForwardPayload({
484
+ jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
485
+ jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
486
+ }),
487
+ };
488
+ const queryId = (0, query_id_generactor_1.generateQueryId)(toAddress(params.sender), jetton_wallet_1.JettonWallet.getBurnMsgBody(_opt));
489
+ const opt = {
490
+ ..._opt,
350
491
  queryId: queryId,
351
- });
492
+ };
493
+ await senderVaultWallet.sendBurn(sender, gas, opt);
494
+ const steps = this.buildWithdrawSteps(params, queryId, vaultJettonWalletAddress, senderVaultWalletAddress, senderJettonWalletAddress);
495
+ return {
496
+ opt,
497
+ steps,
498
+ senderVaultWalletAddress,
499
+ asset,
500
+ senderJettonWalletAddress,
501
+ };
502
+ }
503
+ buildWithdrawSteps(params, queryId, vaultJettonWalletAddress, senderVaultWalletAddress, senderJettonWalletAddress) {
352
504
  const steps = [
353
505
  {
354
506
  description: "Staring the tx",
@@ -389,6 +541,9 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
389
541
  opcode: jetton_wallet_1.JettonWallet.Op.InternalTransfer,
390
542
  },
391
543
  ];
544
+ return steps;
545
+ }
546
+ waitWithdrawTx(steps, params, queryId, senderVaultWalletAddress, assetAddress, senderJettonWalletAddress, callbackFn) {
392
547
  (async () => {
393
548
  const matchedTx0 = await (0, tracker_1.findTx)(this.client, senderVaultWalletAddress, "0", steps[0]);
394
549
  steps[0].matchedTx = matchedTx0;
@@ -443,7 +598,7 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
443
598
  callbackFn(steps[4]);
444
599
  const matchedTxs5 = [];
445
600
  for (let poolAddress of poolAddresses) {
446
- const poolJettonWalletAddress = await this.getJettonWalletAddress(toString(poolAddress), toString(vaultData.asset));
601
+ const poolJettonWalletAddress = await this.getJettonWalletAddress(toString(poolAddress), toString(assetAddress));
447
602
  const matchedTx = await (0, tracker_1.findTx)(this.client, poolJettonWalletAddress, matchedTx2.lt.toString(), { ...steps[5], from: poolJettonWalletAddress });
448
603
  matchedTxs5.push(matchedTx);
449
604
  }
@@ -583,7 +738,7 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
583
738
  async supplyToPool(sender, params) {
584
739
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
585
740
  const vaultData = await shareVault.getVaultData();
586
- const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.supplyToPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
741
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.SupplyToPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
587
742
  await shareVault.sendSupplyToPool(sender, gas, {
588
743
  pool: toAddress(params.pool),
589
744
  amount: params.amount,
@@ -594,7 +749,7 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
594
749
  console.log("shareVault", shareVault);
595
750
  const vaultData = await shareVault.getVaultData();
596
751
  console.log("vaultData", vaultData);
597
- const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.withdrawFromPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
752
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.WithdrawFromPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
598
753
  console.log("gas", gas);
599
754
  await shareVault.sendWithdrawFromPool(sender, gas, {
600
755
  pool: toAddress(params.pool),
@@ -605,7 +760,7 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
605
760
  async withdrawFromPoolSimulate(sender, params) {
606
761
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
607
762
  const vaultData = await shareVault.getVaultData();
608
- const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.withdrawFromPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
763
+ const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.WithdrawFromPool, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee);
609
764
  console.log("vaultData", vaultData);
610
765
  console.log("gas", gas);
611
766
  // await shareVault.sendWithdrawFromPool(sender, gas, {
@@ -616,7 +771,7 @@ class ShareVaultV1 extends service_1.ServiceBaseV1 {
616
771
  }
617
772
  async setTargetWeight(sender, params) {
618
773
  const shareVault = this.client.open(share_vault_1.ShareVault.createFromAddress(toAddress(params.vault)));
619
- await shareVault.sendSetTargetWeight(sender, (0, ton_1.toNano)(0.006), {
774
+ await shareVault.sendSetTargetWeight(sender, (0, ton_1.toNano)(0.01), {
620
775
  pool: toAddress(params.pool),
621
776
  targetWeight: params.targetWeight,
622
777
  });