@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
@@ -9,9 +9,11 @@ import * as query from "./query";
9
9
  import * as oracle from "./oracle";
10
10
  import * as owner from "./owner";
11
11
  import * as user from "./user";
12
+ import { PoolSupplyTracer, PoolWithdrawTracer, PoolBorrowTracer, PoolRepayTracer } from "./user/trace";
12
13
  export { sendMsg } from "../../lib/send-msg";
13
14
  export * from "./owner/types";
14
15
  export * from "./user/types";
16
+ export * from "./user/trace";
15
17
  export * from "./computation";
16
18
  export { computation, query, oracle, owner, user };
17
19
  export declare class PoolServiceV1 {
@@ -32,63 +34,12 @@ export declare class PoolServiceV1 {
32
34
  static convertShareToAmount(accountData: AccountState, poolData: PoolState): AccountState;
33
35
  static haveBorrow(accountData: AccountState): boolean;
34
36
  static haveAssets(accountData: AccountState): string[];
35
- sendSetOwner(sender: AddressSender, params: owner.SetOwnerParams, value?: bigint): Promise<{
36
- newOwner: Address;
37
- queryID: number | undefined;
38
- }>;
39
- sendSetIrmConfig(sender: AddressSender, params: owner.SetIrmConfigParams, value?: bigint): Promise<{
40
- asset: Address;
41
- irmConfig: import("@ton/core").Cell;
42
- queryId: number | undefined;
43
- }>;
44
- sendSetFeeConfigurer(sender: AddressSender, params: owner.SetFeeConfigurerParams, value?: bigint): Promise<{
45
- feeConfigurer: Address;
46
- queryId: number | undefined;
47
- }>;
48
- sendSupply(sender: AddressSender, params: user.SupplyParams, value?: bigint): Promise<{
49
- recipient: Address;
50
- amount: bigint;
51
- response: Address;
52
- forwardTonAmount: bigint;
53
- forwardPayload: import("@ton/core").Cell;
54
- queryId: bigint | undefined;
55
- }>;
56
- sendWithdraw(sender: AddressSender, params: user.WithdrawParams, value?: bigint): Promise<{
57
- asset: Address;
58
- isShare: boolean;
59
- amount: bigint;
60
- recipient: Address;
61
- response: Address;
62
- jettonForwardTonAmount: bigint;
63
- jettonForwardPayload: import("@ton/core").Cell | null;
64
- oracleParams: import("@ton/core").Cell | null;
65
- queryId: bigint | undefined;
66
- }>;
67
- sendBorrow(sender: AddressSender, params: user.BorrowParams, value?: bigint): Promise<{
68
- asset: Address;
69
- isShare: boolean;
70
- amount: bigint;
71
- recipient: Address;
72
- response: Address;
73
- jettonForwardTonAmount: bigint;
74
- jettonForwardPayload: import("@ton/core").Cell | null;
75
- oracleParams: import("@ton/core").Cell | null;
76
- queryId: bigint | undefined;
77
- }>;
78
- sendRepay(sender: AddressSender, params: user.RepayParams, value?: bigint): Promise<{
79
- recipient: Address;
80
- amount: bigint;
81
- response: Address;
82
- forwardTonAmount: bigint;
83
- forwardPayload: import("@ton/core").Cell;
84
- queryId: bigint | undefined;
85
- }>;
86
- sendLiquidate(sender: AddressSender, params: user.LiquidateParams, value?: bigint): Promise<{
87
- recipient: Address;
88
- amount: bigint;
89
- response: Address;
90
- forwardTonAmount: bigint;
91
- forwardPayload: import("@ton/core").Cell;
92
- queryId: bigint | undefined;
93
- }>;
37
+ sendSetOwner(sender: AddressSender, params: owner.SetOwnerParams, value?: bigint): Promise<import("../..").SimpleTracer>;
38
+ sendSetIrmConfig(sender: AddressSender, params: owner.SetIrmConfigParams, value?: bigint): Promise<import("../..").SimpleTracer>;
39
+ sendSetFeeConfigurer(sender: AddressSender, params: owner.SetFeeConfigurerParams, value?: bigint): Promise<import("../..").SimpleTracer>;
40
+ sendSupply(sender: AddressSender, params: user.SupplyParams, value?: bigint): Promise<PoolSupplyTracer>;
41
+ sendWithdraw(sender: AddressSender, params: user.WithdrawParams, value?: bigint): Promise<PoolWithdrawTracer>;
42
+ sendBorrow(sender: AddressSender, params: user.BorrowParams, value?: bigint): Promise<PoolBorrowTracer>;
43
+ sendRepay(sender: AddressSender, params: user.RepayParams, value?: bigint): Promise<PoolRepayTracer>;
44
+ sendLiquidate(sender: AddressSender, params: user.LiquidateParams, value?: bigint): Promise<import("../..").SimpleTracer>;
94
45
  }
@@ -38,6 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.PoolServiceV1 = exports.user = exports.owner = exports.oracle = exports.query = exports.computation = exports.sendMsg = void 0;
40
40
  const context_1 = require("../../context");
41
+ const utils_1 = require("../../contracts/common/utils");
41
42
  const send_msg_1 = require("../../lib/send-msg");
42
43
  const computation = __importStar(require("./computation"));
43
44
  exports.computation = computation;
@@ -49,11 +50,13 @@ const owner = __importStar(require("./owner"));
49
50
  exports.owner = owner;
50
51
  const user = __importStar(require("./user"));
51
52
  exports.user = user;
53
+ const trace_1 = require("./user/trace");
52
54
  // Re-exports
53
55
  var send_msg_2 = require("../../lib/send-msg");
54
56
  Object.defineProperty(exports, "sendMsg", { enumerable: true, get: function () { return send_msg_2.sendMsg; } });
55
57
  __exportStar(require("./owner/types"), exports);
56
58
  __exportStar(require("./user/types"), exports);
59
+ __exportStar(require("./user/trace"), exports);
57
60
  __exportStar(require("./computation"), exports); // Types and pure computation functions
58
61
  class PoolServiceV1 {
59
62
  ctx;
@@ -109,31 +112,75 @@ class PoolServiceV1 {
109
112
  // Owner
110
113
  // ============================================================
111
114
  async sendSetOwner(sender, params, value) {
112
- return (0, send_msg_1.sendMsg)(sender, owner.createSetOwnerMsg(this.ctx, params, value));
115
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await owner.createSetOwnerMsg(this.ctx, params, value));
113
116
  }
114
117
  async sendSetIrmConfig(sender, params, value) {
115
- return (0, send_msg_1.sendMsg)(sender, owner.createSetIrmConfigMsg(this.ctx, params, value));
118
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await owner.createSetIrmConfigMsg(this.ctx, params, value));
116
119
  }
117
120
  async sendSetFeeConfigurer(sender, params, value) {
118
- return (0, send_msg_1.sendMsg)(sender, owner.createSetFeeConfigurerMsg(this.ctx, params, value));
121
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await owner.createSetFeeConfigurerMsg(this.ctx, params, value));
119
122
  }
120
123
  // ============================================================
121
124
  // User
122
125
  // ============================================================
123
126
  async sendSupply(sender, params, value) {
124
- return (0, send_msg_1.sendMsg)(sender, user.createSupplyMsg(this.ctx, sender, params, value));
127
+ const msg = await user.createSupplyMsg(this.ctx, sender, params, value);
128
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
129
+ const asset = (0, utils_1.toAddress)(params.assetAddress);
130
+ return trace_1.PoolSupplyTracer.create({
131
+ ctx: this.ctx,
132
+ msgBody: msg.input.body,
133
+ extHash: await result.getExternalHash(),
134
+ actor: sender.address,
135
+ asset,
136
+ pool: (0, utils_1.toAddress)(params.poolAddress),
137
+ isWTON: this.ctx.isWTON(asset),
138
+ });
125
139
  }
126
140
  async sendWithdraw(sender, params, value) {
127
- return (0, send_msg_1.sendMsg)(sender, user.createWithdrawMsg(this.ctx, sender, params, value));
141
+ const msg = await user.createWithdrawMsg(this.ctx, sender, params, value);
142
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
143
+ const asset = (0, utils_1.toAddress)(params.assetAddress);
144
+ return trace_1.PoolWithdrawTracer.create({
145
+ ctx: this.ctx,
146
+ msgBody: msg.input.body,
147
+ extHash: await result.getExternalHash(),
148
+ actor: sender.address,
149
+ asset,
150
+ pool: (0, utils_1.toAddress)(params.poolAddress),
151
+ isWTON: this.ctx.isWTON(asset),
152
+ });
128
153
  }
129
154
  async sendBorrow(sender, params, value) {
130
- return (0, send_msg_1.sendMsg)(sender, user.createBorrowMsg(this.ctx, sender, params, value));
155
+ const msg = await user.createBorrowMsg(this.ctx, sender, params, value);
156
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
157
+ const asset = (0, utils_1.toAddress)(params.assetAddress);
158
+ return trace_1.PoolBorrowTracer.create({
159
+ ctx: this.ctx,
160
+ msgBody: msg.input.body,
161
+ extHash: await result.getExternalHash(),
162
+ actor: sender.address,
163
+ asset,
164
+ pool: (0, utils_1.toAddress)(params.poolAddress),
165
+ isWTON: this.ctx.isWTON(asset),
166
+ });
131
167
  }
132
168
  async sendRepay(sender, params, value) {
133
- return (0, send_msg_1.sendMsg)(sender, user.createRepayMsg(this.ctx, sender, params, value));
169
+ const msg = await user.createRepayMsg(this.ctx, sender, params, value);
170
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
171
+ const asset = (0, utils_1.toAddress)(params.assetAddress);
172
+ return trace_1.PoolRepayTracer.create({
173
+ ctx: this.ctx,
174
+ msgBody: msg.input.body,
175
+ extHash: await result.getExternalHash(),
176
+ actor: sender.address,
177
+ asset,
178
+ pool: (0, utils_1.toAddress)(params.poolAddress),
179
+ isWTON: this.ctx.isWTON(asset),
180
+ });
134
181
  }
135
182
  async sendLiquidate(sender, params, value) {
136
- return (0, send_msg_1.sendMsg)(sender, user.createLiquidateMsg(this.ctx, sender, params, value));
183
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await user.createLiquidateMsg(this.ctx, sender, params, value));
137
184
  }
138
185
  }
139
186
  exports.PoolServiceV1 = PoolServiceV1;
@@ -2,12 +2,12 @@ import { Cell } from "@ton/core";
2
2
  import { AffluentContext } from "../../context";
3
3
  import { AddressInput, AddressLike } from "../../contracts/common/type";
4
4
  import { PoolState } from "../../contracts/core/pool/type";
5
- import { VaultPositions } from "../composite-oracle/types";
5
+ import { IVaultStateContext } from "../../common/types";
6
6
  /**
7
7
  * Build oracle params Cell from pre-fetched vault positions
8
8
  * Pure computation - no network calls
9
9
  */
10
- export declare function buildOracleParamsCellFromData(assets: string[], oracleConfig: any, vaultPositions: VaultPositions): Promise<Cell>;
10
+ export declare function buildOracleParamsCellFromData(assets: string[], oracleConfig: any, vaultPositions: Record<string, IVaultStateContext>): Promise<Cell>;
11
11
  /**
12
12
  * Get oracle params for a pool operation
13
13
  * Fetches account data and builds oracle params
@@ -5,7 +5,7 @@ import { Pool } from "../../contracts/core/pool";
5
5
  import { PoolState } from "../../contracts/core/pool/type";
6
6
  import { Account } from "../../contracts/core/account";
7
7
  import { AccountState, AccountAssetState } from "../../contracts/core/account/type";
8
- import { VaultCompositions, Prices } from "../composite-oracle/types";
8
+ import { VaultCompositions, Prices } from "../../common/types";
9
9
  import { HealthResult, MaxBorrowableResult, MaxWithdrawableResult } from "./computation";
10
10
  /**
11
11
  * Get Pool contract instance
@@ -107,7 +107,7 @@ async function getPricesAndCompositions(ctx, poolAddress) {
107
107
  vaultPositions,
108
108
  poolInfos,
109
109
  });
110
- const vaultCompositions = Object.fromEntries(Object.entries(result.vaultPrices).map(([k, v]) => [k, v.additionalData]));
110
+ const vaultCompositions = Object.fromEntries(Object.entries(result.vaultPrices).map(([asset, priceData]) => [asset, priceData.additionalData]));
111
111
  return { prices: result.allPrices, vaultCompositions };
112
112
  }
113
113
  /**
@@ -0,0 +1,90 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ import { TracerBase } from "../../../common/trace-action";
3
+ import { MessageHash } from "../../../utils/external-message-hash";
4
+ import { TonClient } from "@ton/ton";
5
+ import { AffluentContext } from "../../../context";
6
+ import { ToncenterV3Client } from "../../../utils/pending-tracker/v3-client";
7
+ export type PoolAddresses = {
8
+ actor: Address;
9
+ actorAssetWallet: Address;
10
+ account: Address;
11
+ pool: Address;
12
+ poolAssetWallet: Address;
13
+ };
14
+ export declare function getPoolAddresses(client: TonClient, params: {
15
+ actor: Address;
16
+ asset: Address;
17
+ pool: Address;
18
+ }): Promise<PoolAddresses>;
19
+ export type PoolSupplyTracerParams = {
20
+ ctx: AffluentContext;
21
+ msgBody: Cell;
22
+ extHash: MessageHash;
23
+ actor: Address;
24
+ asset: Address;
25
+ pool: Address;
26
+ isWTON: boolean;
27
+ };
28
+ export declare class PoolSupplyTracer extends TracerBase<"jetton" | "wton"> {
29
+ static create(params: PoolSupplyTracerParams): Promise<PoolSupplyTracer>;
30
+ constructor(toncenterClient: ToncenterV3Client, params: {
31
+ isWTON: boolean;
32
+ queryId: bigint;
33
+ extHash: MessageHash;
34
+ addresses: PoolAddresses;
35
+ });
36
+ }
37
+ export type PoolWithdrawTracerParams = {
38
+ ctx: AffluentContext;
39
+ msgBody: Cell;
40
+ extHash: MessageHash;
41
+ actor: Address;
42
+ asset: Address;
43
+ pool: Address;
44
+ isWTON: boolean;
45
+ };
46
+ export declare class PoolWithdrawTracer extends TracerBase<"jetton" | "wton"> {
47
+ static create(params: PoolWithdrawTracerParams): Promise<PoolWithdrawTracer>;
48
+ constructor(toncenterClient: ToncenterV3Client, params: {
49
+ isWTON: boolean;
50
+ queryId: bigint;
51
+ extHash: MessageHash;
52
+ addresses: PoolAddresses;
53
+ });
54
+ }
55
+ export type PoolBorrowTracerParams = {
56
+ ctx: AffluentContext;
57
+ msgBody: Cell;
58
+ extHash: MessageHash;
59
+ actor: Address;
60
+ asset: Address;
61
+ pool: Address;
62
+ isWTON: boolean;
63
+ };
64
+ export declare class PoolBorrowTracer extends TracerBase<"jetton" | "wton"> {
65
+ static create(params: PoolBorrowTracerParams): Promise<PoolBorrowTracer>;
66
+ constructor(toncenterClient: ToncenterV3Client, params: {
67
+ isWTON: boolean;
68
+ queryId: bigint;
69
+ extHash: MessageHash;
70
+ addresses: PoolAddresses;
71
+ });
72
+ }
73
+ export type PoolRepayTracerParams = {
74
+ ctx: AffluentContext;
75
+ msgBody: Cell;
76
+ extHash: MessageHash;
77
+ actor: Address;
78
+ asset: Address;
79
+ pool: Address;
80
+ isWTON: boolean;
81
+ };
82
+ export declare class PoolRepayTracer extends TracerBase<"jetton" | "wton"> {
83
+ static create(params: PoolRepayTracerParams): Promise<PoolRepayTracer>;
84
+ constructor(toncenterClient: ToncenterV3Client, params: {
85
+ isWTON: boolean;
86
+ queryId: bigint;
87
+ extHash: MessageHash;
88
+ addresses: PoolAddresses;
89
+ });
90
+ }
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolRepayTracer = exports.PoolBorrowTracer = exports.PoolWithdrawTracer = exports.PoolSupplyTracer = void 0;
4
+ exports.getPoolAddresses = getPoolAddresses;
5
+ const trace_action_1 = require("../../../common/trace-action");
6
+ const jetton_wallet_1 = require("../../../contracts/jetton/jetton-wallet");
7
+ const pool_1 = require("../../../contracts/core/pool");
8
+ const jetton_minter_1 = require("../../../contracts/jetton/jetton-minter");
9
+ async function getPoolAddresses(client, params) {
10
+ const { actor, asset, pool } = params;
11
+ const _asset = client.open(jetton_minter_1.JettonMinter.createFromAddress(asset));
12
+ const _pool = client.open(pool_1.Pool.createFromAddress(pool));
13
+ return {
14
+ actor,
15
+ actorAssetWallet: await _asset.getWalletAddress(actor),
16
+ account: await _pool.getAccountAddress(actor),
17
+ pool,
18
+ poolAssetWallet: await _asset.getWalletAddress(pool),
19
+ };
20
+ }
21
+ class PoolSupplyTracer extends trace_action_1.TracerBase {
22
+ static async create(params) {
23
+ const { ctx, msgBody, extHash, actor, asset, pool, isWTON } = params;
24
+ const { queryId } = (0, trace_action_1.getOpAndQueryId)(msgBody);
25
+ const addresses = await getPoolAddresses(ctx.client, { actor, asset, pool });
26
+ return new PoolSupplyTracer(ctx.toncenterClient, { isWTON, queryId, extHash, addresses });
27
+ }
28
+ constructor(toncenterClient, params) {
29
+ const { isWTON, queryId, extHash, addresses } = params;
30
+ const type = isWTON ? "wton" : "jetton";
31
+ const steps = [
32
+ ...(0, trace_action_1.createJettonSendSteps)({
33
+ isWTON,
34
+ actor: addresses.actor,
35
+ actorWallet: addresses.actorAssetWallet,
36
+ targetWallet: addresses.poolAssetWallet,
37
+ target: addresses.pool,
38
+ description: "Supplying Tokens",
39
+ }),
40
+ {
41
+ op: pool_1.Pool.Op.UpdateAccountStatus,
42
+ from: addresses.pool,
43
+ to: addresses.account,
44
+ description: "Updating Account Status",
45
+ },
46
+ ];
47
+ const failStep = {
48
+ op: jetton_wallet_1.JettonWallet.Op.Transfer,
49
+ from: addresses.pool,
50
+ to: addresses.poolAssetWallet,
51
+ description: "Refunding Tokens",
52
+ };
53
+ super(toncenterClient, extHash, type, queryId, steps, failStep);
54
+ }
55
+ }
56
+ exports.PoolSupplyTracer = PoolSupplyTracer;
57
+ class PoolWithdrawTracer extends trace_action_1.TracerBase {
58
+ static async create(params) {
59
+ const { ctx, msgBody, extHash, actor, asset, pool, isWTON } = params;
60
+ const { queryId } = (0, trace_action_1.getOpAndQueryId)(msgBody);
61
+ const addresses = await getPoolAddresses(ctx.client, { actor, asset, pool });
62
+ return new PoolWithdrawTracer(ctx.toncenterClient, { isWTON, queryId, extHash, addresses });
63
+ }
64
+ constructor(toncenterClient, params) {
65
+ const { isWTON, queryId, extHash, addresses } = params;
66
+ const type = isWTON ? "wton" : "jetton";
67
+ const steps = [
68
+ {
69
+ op: pool_1.Pool.Op.Withdraw,
70
+ from: addresses.actor,
71
+ to: addresses.pool,
72
+ description: "Requesting Withdrawal",
73
+ },
74
+ {
75
+ op: pool_1.Pool.Op.ExecuteAction,
76
+ from: addresses.pool,
77
+ to: addresses.account,
78
+ description: "Checking Account Health",
79
+ },
80
+ {
81
+ op: pool_1.Pool.Op.ExecuteAction,
82
+ from: addresses.account,
83
+ to: addresses.pool,
84
+ description: "Checking Account Health",
85
+ },
86
+ ...(0, trace_action_1.createJettonReceiveSteps)({
87
+ isWTON,
88
+ sourceWallet: addresses.poolAssetWallet,
89
+ actorWallet: addresses.actorAssetWallet,
90
+ actor: addresses.actor,
91
+ description: "Receiving Asset",
92
+ }),
93
+ ];
94
+ super(toncenterClient, extHash, type, queryId, steps);
95
+ }
96
+ }
97
+ exports.PoolWithdrawTracer = PoolWithdrawTracer;
98
+ class PoolBorrowTracer extends trace_action_1.TracerBase {
99
+ static async create(params) {
100
+ const { ctx, msgBody, extHash, actor, asset, pool, isWTON } = params;
101
+ const { queryId } = (0, trace_action_1.getOpAndQueryId)(msgBody);
102
+ const addresses = await getPoolAddresses(ctx.client, { actor, asset, pool });
103
+ return new PoolBorrowTracer(ctx.toncenterClient, { isWTON, queryId, extHash, addresses });
104
+ }
105
+ constructor(toncenterClient, params) {
106
+ const { isWTON, queryId, extHash, addresses } = params;
107
+ const type = isWTON ? "wton" : "jetton";
108
+ const steps = [
109
+ {
110
+ op: pool_1.Pool.Op.Borrow,
111
+ from: addresses.actor,
112
+ to: addresses.pool,
113
+ description: "Requesting Borrow",
114
+ },
115
+ {
116
+ op: pool_1.Pool.Op.ExecuteAction,
117
+ from: addresses.pool,
118
+ to: addresses.account,
119
+ description: "Checking Account Health",
120
+ },
121
+ {
122
+ op: pool_1.Pool.Op.ExecuteAction,
123
+ from: addresses.account,
124
+ to: addresses.pool,
125
+ description: "Checking Account Health",
126
+ },
127
+ ...(0, trace_action_1.createJettonReceiveSteps)({
128
+ isWTON,
129
+ sourceWallet: addresses.poolAssetWallet,
130
+ actorWallet: addresses.actorAssetWallet,
131
+ actor: addresses.actor,
132
+ description: "Receiving Borrowed Asset",
133
+ }),
134
+ ];
135
+ super(toncenterClient, extHash, type, queryId, steps);
136
+ }
137
+ }
138
+ exports.PoolBorrowTracer = PoolBorrowTracer;
139
+ class PoolRepayTracer extends trace_action_1.TracerBase {
140
+ static async create(params) {
141
+ const { ctx, msgBody, extHash, actor, asset, pool, isWTON } = params;
142
+ const { queryId } = (0, trace_action_1.getOpAndQueryId)(msgBody);
143
+ const addresses = await getPoolAddresses(ctx.client, { actor, asset, pool });
144
+ return new PoolRepayTracer(ctx.toncenterClient, { isWTON, queryId, extHash, addresses });
145
+ }
146
+ constructor(toncenterClient, params) {
147
+ const { isWTON, queryId, extHash, addresses } = params;
148
+ const type = isWTON ? "wton" : "jetton";
149
+ const steps = [
150
+ ...(0, trace_action_1.createJettonSendSteps)({
151
+ isWTON,
152
+ actor: addresses.actor,
153
+ actorWallet: addresses.actorAssetWallet,
154
+ targetWallet: addresses.poolAssetWallet,
155
+ target: addresses.pool,
156
+ description: "Repaying Tokens",
157
+ }),
158
+ {
159
+ op: pool_1.Pool.Op.ExecuteAction,
160
+ from: addresses.pool,
161
+ to: addresses.account,
162
+ description: "Updating Account Health",
163
+ },
164
+ ];
165
+ super(toncenterClient, extHash, type, queryId, steps);
166
+ }
167
+ }
168
+ exports.PoolRepayTracer = PoolRepayTracer;
@@ -3,11 +3,13 @@ import { AffluentContext } from "../../context";
3
3
  import { AddressInput, AddressLike } from "../../contracts/common/type";
4
4
  import { StrategyVaultState } from "../../contracts/vault/strategy-vault";
5
5
  import { AddressSender } from "../../types/sender";
6
+ import { RFQAuctionBidTracer, RFQAuctionCancelBidTracer } from "./user/trace";
6
7
  import * as query from "./query";
7
8
  import * as oracle from "./oracle";
8
9
  import * as user from "./user";
9
10
  export { sendMsg } from "../../lib/send-msg";
10
11
  export * from "./user/types";
12
+ export * from "./user/trace";
11
13
  export { query, oracle, user };
12
14
  export declare class RFQAuctionServiceV1 {
13
15
  private ctx;
@@ -55,27 +57,9 @@ export declare class RFQAuctionServiceV1 {
55
57
  }>;
56
58
  getOracleParams(rfqAuctionAddress: AddressInput): Promise<Cell>;
57
59
  getOracleParamsForVault(vaultAddress: AddressLike, additionalAssets?: AddressLike[], vaultData?: StrategyVaultState): Promise<Cell>;
58
- sendAmountBid(sender: AddressSender, params: user.AmountBidParams, value?: bigint): Promise<{
59
- recipient: import("@ton/core").Address;
60
- response: import("@ton/core").Address;
61
- amount: bigint;
62
- forwardTonAmount: bigint;
63
- forwardPayload: Cell;
64
- queryId: bigint | undefined;
65
- }>;
66
- sendSlippageBid(sender: AddressSender, params: user.SlippageBidParams, value?: bigint): Promise<{
67
- recipient: import("@ton/core").Address;
68
- response: import("@ton/core").Address;
69
- amount: bigint;
70
- forwardTonAmount: bigint;
71
- forwardPayload: Cell;
72
- queryId: bigint | undefined;
73
- }>;
74
- sendCancelBid(sender: AddressSender, params: user.CancelBidParams, value?: bigint): Promise<{}>;
75
- sendSettle(sender: AddressSender, params: user.SettleParams, value?: bigint): Promise<{
76
- oracleParams: Cell;
77
- }>;
78
- sendClearBids(sender: AddressSender, params: user.ClearBidsParams, value?: bigint): Promise<{
79
- clearCount: number;
80
- }>;
60
+ sendAmountBid(sender: AddressSender, params: user.AmountBidParams, value?: bigint): Promise<RFQAuctionBidTracer>;
61
+ sendSlippageBid(sender: AddressSender, params: user.SlippageBidParams, value?: bigint): Promise<RFQAuctionBidTracer>;
62
+ sendCancelBid(sender: AddressSender, params: user.CancelBidParams, value?: bigint): Promise<RFQAuctionCancelBidTracer>;
63
+ sendSettle(sender: AddressSender, params: user.SettleParams, value?: bigint): Promise<import("../..").SimpleTracer>;
64
+ sendClearBids(sender: AddressSender, params: user.ClearBidsParams, value?: bigint): Promise<import("../..").SimpleTracer>;
81
65
  }
@@ -39,6 +39,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.RFQAuctionServiceV1 = exports.user = exports.oracle = exports.query = exports.sendMsg = void 0;
40
40
  const context_1 = require("../../context");
41
41
  const send_msg_1 = require("../../lib/send-msg");
42
+ const utils_1 = require("../../contracts/common/utils");
43
+ const trace_1 = require("./user/trace");
42
44
  const query = __importStar(require("./query"));
43
45
  exports.query = query;
44
46
  const oracle = __importStar(require("./oracle"));
@@ -48,6 +50,7 @@ exports.user = user;
48
50
  var send_msg_2 = require("../../lib/send-msg");
49
51
  Object.defineProperty(exports, "sendMsg", { enumerable: true, get: function () { return send_msg_2.sendMsg; } });
50
52
  __exportStar(require("./user/types"), exports);
53
+ __exportStar(require("./user/trace"), exports);
51
54
  class RFQAuctionServiceV1 {
52
55
  ctx;
53
56
  constructor(ctx = context_1.AffluentContext.getInstance()) {
@@ -72,22 +75,58 @@ class RFQAuctionServiceV1 {
72
75
  return oracle.getOracleParamsForVault(this.ctx, vaultAddress, additionalAssets, vaultData);
73
76
  }
74
77
  // ============================================================
75
- // User Operations
78
+ // User
76
79
  // ============================================================
77
80
  async sendAmountBid(sender, params, value) {
78
- return (0, send_msg_1.sendMsg)(sender, user.createAmountBidMsg(this.ctx, sender, params, value));
81
+ const msg = await user.createAmountBidMsg(this.ctx, sender, params, value);
82
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
83
+ const bidAsset = (0, utils_1.toAddress)(params.bidAsset);
84
+ return trace_1.RFQAuctionBidTracer.create({
85
+ ctx: this.ctx,
86
+ msgBody: msg.input.body,
87
+ extHash: await result.getExternalHash(),
88
+ actor: sender.address,
89
+ bidAsset,
90
+ rfqAuction: (0, utils_1.toAddress)(params.rfqAuctionAddress),
91
+ isWTON: this.ctx.isWTON(bidAsset),
92
+ });
79
93
  }
80
94
  async sendSlippageBid(sender, params, value) {
81
- return (0, send_msg_1.sendMsg)(sender, user.createSlippageBidMsg(this.ctx, sender, params, value));
95
+ const msg = await user.createSlippageBidMsg(this.ctx, sender, params, value);
96
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
97
+ const bidAsset = (0, utils_1.toAddress)(params.bidAsset);
98
+ return trace_1.RFQAuctionBidTracer.create({
99
+ ctx: this.ctx,
100
+ msgBody: msg.input.body,
101
+ extHash: await result.getExternalHash(),
102
+ actor: sender.address,
103
+ bidAsset,
104
+ rfqAuction: (0, utils_1.toAddress)(params.rfqAuctionAddress),
105
+ isWTON: this.ctx.isWTON(bidAsset),
106
+ });
82
107
  }
83
108
  async sendCancelBid(sender, params, value) {
84
- return (0, send_msg_1.sendMsg)(sender, user.createCancelBidMsg(this.ctx, params, value));
109
+ const rfqData = await this.getRFQData(params.rfqAuctionAddress);
110
+ const msg = await user.createCancelBidMsg(this.ctx, params, value);
111
+ const result = await (0, send_msg_1.sendMsgAndWaitTx)(this.ctx, sender, msg);
112
+ return trace_1.RFQAuctionCancelBidTracer.create({
113
+ ctx: this.ctx,
114
+ msgBody: msg.input.body,
115
+ extHash: await result.getExternalHash(),
116
+ actor: sender.address,
117
+ bidAsset: rfqData.buyAssetAddress,
118
+ rfqAuction: (0, utils_1.toAddress)(params.rfqAuctionAddress),
119
+ isWTON: this.ctx.isWTON(rfqData.buyAssetAddress),
120
+ });
85
121
  }
122
+ // ============================================================
123
+ // Market Maker
124
+ // ============================================================
86
125
  async sendSettle(sender, params, value) {
87
- return (0, send_msg_1.sendMsg)(sender, user.createSettleMsg(this.ctx, params, value));
126
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await user.createSettleMsg(this.ctx, params, value));
88
127
  }
89
128
  async sendClearBids(sender, params, value) {
90
- return (0, send_msg_1.sendMsg)(sender, user.createClearBidsMsg(this.ctx, params, value));
129
+ return (0, send_msg_1.sendMsgAndWaitTxSimple)(this.ctx, sender, await user.createClearBidsMsg(this.ctx, params, value));
91
130
  }
92
131
  }
93
132
  exports.RFQAuctionServiceV1 = RFQAuctionServiceV1;
@@ -2,13 +2,13 @@ import { Cell } from "@ton/core";
2
2
  import { AffluentContext } from "../../context";
3
3
  import { AddressInput, AddressLike } from "../../contracts/common/type";
4
4
  import { StrategyVaultState } from "../../contracts/vault/strategy-vault";
5
- import { VaultPositions } from "../composite-oracle/types";
5
+ import { IVaultStateContext } from "../../common/types";
6
6
  export { OracleExposures, createOracleExposures } from "../composite-oracle/computation";
7
7
  /**
8
8
  * Build oracle params Cell from pre-fetched data
9
9
  * Pure computation - no network calls
10
10
  */
11
- export declare function buildOracleParamsCellFromData(assets: string[], oracleConfig: any, vaultPositions: VaultPositions): Promise<Cell>;
11
+ export declare function buildOracleParamsCellFromData(assets: string[], oracleConfig: any, vaultPositions: Record<string, IVaultStateContext>): Promise<Cell>;
12
12
  /**
13
13
  * Get oracle params for RFQ auction settlement
14
14
  */
@@ -192,7 +192,7 @@ async function createSettleMsg(ctx, params, value) {
192
192
  body: (0, core_1.beginCell)()
193
193
  .storeUint(rfq_auction_1.RFQAuction.Op.Settle, 32)
194
194
  .storeUint(params.queryId ?? 0, 64)
195
- .storeRef(oracleParams)
195
+ .storeMaybeRef(oracleParams)
196
196
  .endCell(),
197
197
  },
198
198
  };