@affluent-org/sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.prettierrc +11 -0
  2. package/Refactoring.md +548 -0
  3. package/dist/_compiled/Account.compiled.json +1 -0
  4. package/dist/_compiled/Receipt.compiled.json +1 -0
  5. package/dist/_compiled/WTONWallet.compiled.json +1 -0
  6. package/dist/_compiled/index.d.ts +4 -0
  7. package/dist/_compiled/index.js +12 -0
  8. package/dist/affluent.d.ts +14 -0
  9. package/dist/affluent.js +20 -0
  10. package/dist/constants/constants.d.ts +2 -0
  11. package/dist/constants/constants.js +5 -0
  12. package/dist/constants/contracts.d.ts +9 -0
  13. package/dist/constants/contracts.js +18 -0
  14. package/dist/context.d.ts +43 -0
  15. package/dist/context.js +90 -0
  16. package/dist/contracts/common/type.d.ts +16 -0
  17. package/dist/contracts/common/type.js +2 -0
  18. package/dist/contracts/common/utils.d.ts +3 -0
  19. package/dist/contracts/common/utils.js +16 -0
  20. package/dist/contracts/core/account/index.d.ts +38 -0
  21. package/dist/contracts/core/account/index.js +128 -0
  22. package/dist/contracts/core/account/type.d.ts +18 -0
  23. package/dist/contracts/core/account/type.js +2 -0
  24. package/dist/contracts/core/pool/index.d.ts +149 -0
  25. package/dist/contracts/core/pool/index.js +379 -0
  26. package/dist/contracts/core/pool/serializer.d.ts +15 -0
  27. package/dist/contracts/core/pool/serializer.js +307 -0
  28. package/dist/contracts/core/pool/type.d.ts +136 -0
  29. package/dist/contracts/core/pool/type.js +2 -0
  30. package/dist/contracts/dedust-farm/MockDedustFarm.d.ts +41 -0
  31. package/dist/contracts/dedust-farm/MockDedustFarm.js +79 -0
  32. package/dist/contracts/external/tonstaker.d.ts +18 -0
  33. package/dist/contracts/external/tonstaker.js +26 -0
  34. package/dist/contracts/factory/factory.d.ts +24 -0
  35. package/dist/contracts/factory/factory.js +58 -0
  36. package/dist/contracts/factory/type.d.ts +11 -0
  37. package/dist/contracts/factory/type.js +2 -0
  38. package/dist/contracts/farm/distributor.d.ts +43 -0
  39. package/dist/contracts/farm/distributor.js +83 -0
  40. package/dist/contracts/farm/receipt.d.ts +40 -0
  41. package/dist/contracts/farm/receipt.js +68 -0
  42. package/dist/contracts/irm/jump-irm/serializer.d.ts +4 -0
  43. package/dist/contracts/irm/jump-irm/serializer.js +26 -0
  44. package/dist/contracts/irm/jump-irm/type.d.ts +8 -0
  45. package/dist/contracts/irm/jump-irm/type.js +2 -0
  46. package/dist/contracts/jetton/jetton-minter.d.ts +23 -0
  47. package/dist/contracts/jetton/jetton-minter.js +46 -0
  48. package/dist/contracts/jetton/jetton-wallet.d.ts +67 -0
  49. package/dist/contracts/jetton/jetton-wallet.js +119 -0
  50. package/dist/contracts/jetton/type.d.ts +7 -0
  51. package/dist/contracts/jetton/type.js +2 -0
  52. package/dist/contracts/liquid_token/dedust/minter.d.ts +56 -0
  53. package/dist/contracts/liquid_token/dedust/minter.js +112 -0
  54. package/dist/contracts/liquid_token/dedust/wallet.d.ts +127 -0
  55. package/dist/contracts/liquid_token/dedust/wallet.js +213 -0
  56. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.d.ts +53 -0
  57. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.js +110 -0
  58. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.d.ts +169 -0
  59. package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.js +288 -0
  60. package/dist/contracts/oracle/composite-onchain-oracle/index.d.ts +108 -0
  61. package/dist/contracts/oracle/composite-onchain-oracle/index.js +185 -0
  62. package/dist/contracts/oracle/parser.d.ts +7 -0
  63. package/dist/contracts/oracle/parser.js +77 -0
  64. package/dist/contracts/oracle/redstone-onchain-oracle/index.d.ts +56 -0
  65. package/dist/contracts/oracle/redstone-onchain-oracle/index.js +159 -0
  66. package/dist/contracts/oracle/redstone-onchain-oracle/serializer.d.ts +4 -0
  67. package/dist/contracts/oracle/redstone-onchain-oracle/serializer.js +137 -0
  68. package/dist/contracts/oracle/redstone-onchain-oracle/type.d.ts +57 -0
  69. package/dist/contracts/oracle/redstone-onchain-oracle/type.js +18 -0
  70. package/dist/contracts/oracle/redstone-oracle/serializer.d.ts +3 -0
  71. package/dist/contracts/oracle/redstone-oracle/serializer.js +30 -0
  72. package/dist/contracts/oracle/redstone-oracle/type.d.ts +9 -0
  73. package/dist/contracts/oracle/redstone-oracle/type.js +2 -0
  74. package/dist/contracts/oracle/redstone-parser.d.ts +9 -0
  75. package/dist/contracts/oracle/redstone-parser.js +58 -0
  76. package/dist/contracts/rfq/rfq_auction/index.d.ts +216 -0
  77. package/dist/contracts/rfq/rfq_auction/index.js +334 -0
  78. package/dist/contracts/rfq/rfq_batch/index.d.ts +346 -0
  79. package/dist/contracts/rfq/rfq_batch/index.js +448 -0
  80. package/dist/contracts/rfq/rfq_event_emitter/index.d.ts +132 -0
  81. package/dist/contracts/rfq/rfq_event_emitter/index.js +143 -0
  82. package/dist/contracts/stonfi-farm/MockStonfiFarmItem.d.ts +41 -0
  83. package/dist/contracts/stonfi-farm/MockStonfiFarmItem.js +83 -0
  84. package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.d.ts +45 -0
  85. package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.js +92 -0
  86. package/dist/contracts/unknown-contract/index.d.ts +14 -0
  87. package/dist/contracts/unknown-contract/index.js +18 -0
  88. package/dist/contracts/vault/share-vault/index.d.ts +206 -0
  89. package/dist/contracts/vault/share-vault/index.js +373 -0
  90. package/dist/contracts/vault/strategy-vault/codec.d.ts +710 -0
  91. package/dist/contracts/vault/strategy-vault/codec.js +1256 -0
  92. package/dist/contracts/vault/strategy-vault/computation.d.ts +11 -0
  93. package/dist/contracts/vault/strategy-vault/computation.js +56 -0
  94. package/dist/contracts/vault/strategy-vault/constants.d.ts +163 -0
  95. package/dist/contracts/vault/strategy-vault/constants.js +170 -0
  96. package/dist/contracts/vault/strategy-vault/index.d.ts +587 -0
  97. package/dist/contracts/vault/strategy-vault/index.js +406 -0
  98. package/dist/contracts/vault/strategy-vault/type.d.ts +115 -0
  99. package/dist/contracts/vault/strategy-vault/type.js +2 -0
  100. package/dist/contracts/wton/jetton-minter.d.ts +35 -0
  101. package/dist/contracts/wton/jetton-minter.js +71 -0
  102. package/dist/contracts/wton/jetton-wallet.d.ts +90 -0
  103. package/dist/contracts/wton/jetton-wallet.js +153 -0
  104. package/dist/contracts/wton/type.d.ts +7 -0
  105. package/dist/contracts/wton/type.js +2 -0
  106. package/dist/index.d.ts +34 -0
  107. package/dist/index.js +65 -0
  108. package/dist/lib/assert.d.ts +1 -0
  109. package/dist/lib/assert.js +9 -0
  110. package/dist/lib/query-cache.d.ts +5 -0
  111. package/dist/lib/query-cache.js +57 -0
  112. package/dist/lib/send-msg.d.ts +11 -0
  113. package/dist/lib/send-msg.js +9 -0
  114. package/dist/services/composite-oracle/computation.d.ts +55 -0
  115. package/dist/services/composite-oracle/computation.js +295 -0
  116. package/dist/services/composite-oracle/index.d.ts +45 -0
  117. package/dist/services/composite-oracle/index.js +110 -0
  118. package/dist/services/composite-oracle/query.d.ts +36 -0
  119. package/dist/services/composite-oracle/query.js +251 -0
  120. package/dist/services/composite-oracle/types.d.ts +82 -0
  121. package/dist/services/composite-oracle/types.js +11 -0
  122. package/dist/services/pool/computation.d.ts +75 -0
  123. package/dist/services/pool/computation.js +219 -0
  124. package/dist/services/pool/index.d.ts +94 -0
  125. package/dist/services/pool/index.js +139 -0
  126. package/dist/services/pool/oracle.d.ts +20 -0
  127. package/dist/services/pool/oracle.js +61 -0
  128. package/dist/services/pool/owner/index.d.ts +37 -0
  129. package/dist/services/pool/owner/index.js +76 -0
  130. package/dist/services/pool/owner/types.d.ts +18 -0
  131. package/dist/services/pool/owner/types.js +2 -0
  132. package/dist/services/pool/query.d.ts +64 -0
  133. package/dist/services/pool/query.js +282 -0
  134. package/dist/services/pool/user/index.d.ts +86 -0
  135. package/dist/services/pool/user/index.js +285 -0
  136. package/dist/services/pool/user/types.d.ts +44 -0
  137. package/dist/services/pool/user/types.js +2 -0
  138. package/dist/services/rfq-auction/index.d.ts +81 -0
  139. package/dist/services/rfq-auction/index.js +93 -0
  140. package/dist/services/rfq-auction/oracle.d.ts +19 -0
  141. package/dist/services/rfq-auction/oracle.js +60 -0
  142. package/dist/services/rfq-auction/query.d.ts +50 -0
  143. package/dist/services/rfq-auction/query.js +19 -0
  144. package/dist/services/rfq-auction/user/index.d.ts +63 -0
  145. package/dist/services/rfq-auction/user/index.js +218 -0
  146. package/dist/services/rfq-auction/user/types.d.ts +29 -0
  147. package/dist/services/rfq-auction/user/types.js +2 -0
  148. package/dist/services/rfq-batch/index.d.ts +78 -0
  149. package/dist/services/rfq-batch/index.js +132 -0
  150. package/dist/services/rfq-batch/oracle.d.ts +22 -0
  151. package/dist/services/rfq-batch/oracle.js +54 -0
  152. package/dist/services/rfq-batch/query.d.ts +46 -0
  153. package/dist/services/rfq-batch/query.js +34 -0
  154. package/dist/services/rfq-batch/user/index.d.ts +79 -0
  155. package/dist/services/rfq-batch/user/index.js +171 -0
  156. package/dist/services/rfq-batch/user/types.d.ts +37 -0
  157. package/dist/services/rfq-batch/user/types.js +2 -0
  158. package/dist/services/share-vault/computation.d.ts +24 -0
  159. package/dist/services/share-vault/computation.js +42 -0
  160. package/dist/services/share-vault/index.d.ts +90 -0
  161. package/dist/services/share-vault/index.js +128 -0
  162. package/dist/services/share-vault/manager/index.d.ts +40 -0
  163. package/dist/services/share-vault/manager/index.js +111 -0
  164. package/dist/services/share-vault/manager/types.d.ts +23 -0
  165. package/dist/services/share-vault/manager/types.js +2 -0
  166. package/dist/services/share-vault/owner/index.d.ts +64 -0
  167. package/dist/services/share-vault/owner/index.js +122 -0
  168. package/dist/services/share-vault/owner/types.d.ts +33 -0
  169. package/dist/services/share-vault/owner/types.js +2 -0
  170. package/dist/services/share-vault/query.d.ts +34 -0
  171. package/dist/services/share-vault/query.js +138 -0
  172. package/dist/services/share-vault/user/index.d.ts +33 -0
  173. package/dist/services/share-vault/user/index.js +106 -0
  174. package/dist/services/share-vault/user/types.d.ts +13 -0
  175. package/dist/services/share-vault/user/types.js +2 -0
  176. package/dist/services/strategy-vault/index.d.ts +2124 -0
  177. package/dist/services/strategy-vault/index.js +268 -0
  178. package/dist/services/strategy-vault/manager/index.d.ts +1968 -0
  179. package/dist/services/strategy-vault/manager/index.js +475 -0
  180. package/dist/services/strategy-vault/manager/types.d.ts +144 -0
  181. package/dist/services/strategy-vault/manager/types.js +2 -0
  182. package/dist/services/strategy-vault/oracle.d.ts +66 -0
  183. package/dist/services/strategy-vault/oracle.js +162 -0
  184. package/dist/services/strategy-vault/owner/index.d.ts +277 -0
  185. package/dist/services/strategy-vault/owner/index.js +333 -0
  186. package/dist/services/strategy-vault/owner/types.d.ts +146 -0
  187. package/dist/services/strategy-vault/owner/types.js +2 -0
  188. package/dist/services/strategy-vault/query.d.ts +138 -0
  189. package/dist/services/strategy-vault/query.js +59 -0
  190. package/dist/services/strategy-vault/user/index.d.ts +89 -0
  191. package/dist/services/strategy-vault/user/index.js +219 -0
  192. package/dist/services/strategy-vault/user/types.d.ts +46 -0
  193. package/dist/services/strategy-vault/user/types.js +2 -0
  194. package/dist/types/sender.d.ts +7 -0
  195. package/dist/types/sender.js +2 -0
  196. package/dist/utils/action-parser.d.ts +7 -0
  197. package/dist/utils/action-parser.js +20 -0
  198. package/dist/utils/external-message-hash.d.ts +45 -0
  199. package/dist/utils/external-message-hash.js +65 -0
  200. package/dist/utils/oracle/redstone/readonlyCachedRedstone.d.ts +3 -0
  201. package/dist/utils/oracle/redstone/readonlyCachedRedstone.js +25 -0
  202. package/dist/utils/oracle/redstone/redstoneHelper.d.ts +21 -0
  203. package/dist/utils/oracle/redstone/redstoneHelper.js +228 -0
  204. package/dist/utils/parser.d.ts +40 -0
  205. package/dist/utils/parser.js +580 -0
  206. package/dist/utils/pending-tracker/index.d.ts +14 -0
  207. package/dist/utils/pending-tracker/index.js +34 -0
  208. package/dist/utils/pending-tracker/trackable-sender.d.ts +16 -0
  209. package/dist/utils/pending-tracker/trackable-sender.js +87 -0
  210. package/dist/utils/pending-tracker/type.d.ts +78 -0
  211. package/dist/utils/pending-tracker/type.js +2 -0
  212. package/dist/utils/pending-tracker/v3-client.d.ts +31 -0
  213. package/dist/utils/pending-tracker/v3-client.js +104 -0
  214. package/dist/utils/risk_calculator/risk_calculator.d.ts +45 -0
  215. package/dist/utils/risk_calculator/risk_calculator.js +332 -0
  216. package/dist/utils/utils.d.ts +5 -0
  217. package/dist/utils/utils.js +12 -0
  218. package/package.json +46 -0
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LFStonfiJettonWallet = exports.Opcodes = void 0;
4
+ exports.jettonWalletConfigToCell = jettonWalletConfigToCell;
5
+ const core_1 = require("@ton/core");
6
+ function jettonWalletConfigToCell(config) {
7
+ return (0, core_1.beginCell)()
8
+ .storeCoins(0)
9
+ .storeCoins(0)
10
+ .storeAddress(config.owner)
11
+ .storeUint(0, 4)
12
+ .storeRef((0, core_1.beginCell)().storeAddress(config.minter).storeAddress(config.lockedAsset).storeAddress(config.pool).endCell())
13
+ .endCell();
14
+ }
15
+ exports.Opcodes = {
16
+ Mint: 21,
17
+ InternalTransfer: 0x178d4519,
18
+ Transfer: 0xf8a7ea5,
19
+ Burn: 0x595f07bc,
20
+ };
21
+ class LFStonfiJettonWallet {
22
+ address;
23
+ init;
24
+ constructor(address, init) {
25
+ this.address = address;
26
+ this.init = init;
27
+ }
28
+ static Op = {
29
+ Mint: 21,
30
+ InternalTransfer: 0x178d4519,
31
+ Transfer: 0xf8a7ea5,
32
+ Burn: 0x595f07bc,
33
+ Initialize: 0xbe5a7595,
34
+ Seize: 0x7df57cb6,
35
+ SeizeInternal: 0x64486eca,
36
+ SeizeFail: 0x4cf20f42,
37
+ Farm: 0xb7a336e0,
38
+ Unfarm: 0x2f641bf0,
39
+ ConnectPoolAccount: 0x8d989d7d,
40
+ TransferNotification: 0x7362d09c,
41
+ SyncLockedAssetCash: 0x918b3e28,
42
+ ClaimRewards: 0x78d9f109,
43
+ WithdrawTons: 0x6d8e5e3c,
44
+ WithdrawJettons: 0x768a50b2,
45
+ };
46
+ static Error = {
47
+ UnknownOp: 0xffff,
48
+ WrongWorkchain: 333,
49
+ // Jetton Wallet Errors
50
+ UnauthorizedTransfer: 705,
51
+ NotEnoughJettons: 706,
52
+ UnauthorizedIncomingTransfer: 707,
53
+ MalformedForwardPayload: 708,
54
+ NotEnoughTons: 709,
55
+ BurnFeeNotMatched: 707,
56
+ UnknownAction: 0xffff,
57
+ UnknownActionBounced: 0xfff0,
58
+ // Jetton Minter Errors
59
+ DiscoveryFeeNotMatched: 75,
60
+ UnauthorizedMintRequest: 73,
61
+ UnauthorizedBurnRequest: 74,
62
+ UnauthorizedChangeAdminRequest: 76,
63
+ UnauthorizedChangeContentRequest: 77,
64
+ // Liquid Farm Errors
65
+ InvalidWalletAddress: 1000,
66
+ Unauthorized: 1001,
67
+ NotEnoughBalance: 1002,
68
+ NotEnoughLockedAssetBalance: 1003,
69
+ EnoughLockedAssetBalance: 1004,
70
+ NotEnoughLockedAssetCash: 1005,
71
+ SyncInProcess: 1006,
72
+ InvalidExpectCash: 1007,
73
+ };
74
+ static createFromAddress(address) {
75
+ return new LFStonfiJettonWallet(address);
76
+ }
77
+ static createFromConfig(config, code, workchain = 0) {
78
+ const data = jettonWalletConfigToCell(config);
79
+ const init = { code, data };
80
+ return new LFStonfiJettonWallet((0, core_1.contractAddress)(workchain, init), init);
81
+ }
82
+ async sendDeploy(provider, via, value) {
83
+ await provider.internal(via, {
84
+ value,
85
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
86
+ body: (0, core_1.beginCell)().endCell(),
87
+ });
88
+ }
89
+ async sendInitialize(provider, via, value) {
90
+ await provider.internal(via, {
91
+ value,
92
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
93
+ body: (0, core_1.beginCell)().storeUint(LFStonfiJettonWallet.Op.Initialize, 32).storeUint(0, 64).endCell(),
94
+ });
95
+ }
96
+ async sendConnectPoolAccount(provider, via, value) {
97
+ await provider.internal(via, {
98
+ value,
99
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
100
+ body: (0, core_1.beginCell)().storeUint(LFStonfiJettonWallet.Op.ConnectPoolAccount, 32).storeUint(0, 64).endCell(),
101
+ });
102
+ }
103
+ async sendFarm(provider, via, value, opts) {
104
+ await provider.internal(via, {
105
+ value,
106
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
107
+ body: (0, core_1.beginCell)()
108
+ .storeUint(LFStonfiJettonWallet.Op.Farm, 32)
109
+ .storeUint(opts.queryId ?? 0, 64)
110
+ .storeCoins(opts.amount)
111
+ .storeAddress(opts.response)
112
+ .storeCoins(opts.forwardTonAmount)
113
+ .endCell(),
114
+ });
115
+ }
116
+ async sendUnfarm(provider, via, value, opts) {
117
+ await provider.internal(via, {
118
+ value,
119
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
120
+ body: (0, core_1.beginCell)()
121
+ .storeUint(LFStonfiJettonWallet.Op.Unfarm, 32)
122
+ .storeUint(opts.queryId ?? 0, 64)
123
+ .storeAddress(opts.nftAddress)
124
+ .endCell(),
125
+ });
126
+ }
127
+ async sendSyncLockedAssetCash(provider, via, value, opts) {
128
+ await provider.internal(via, {
129
+ value,
130
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
131
+ body: (0, core_1.beginCell)()
132
+ .storeUint(LFStonfiJettonWallet.Op.SyncLockedAssetCash, 32)
133
+ .storeUint(opts.queryId ?? 0, 64)
134
+ .endCell(),
135
+ });
136
+ }
137
+ async sendTransferNotification(provider, via, opts) {
138
+ await provider.internal(via, {
139
+ value: opts.value,
140
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
141
+ body: (0, core_1.beginCell)()
142
+ .storeUint(LFStonfiJettonWallet.Op.TransferNotification, 32) // opcode
143
+ .storeUint(opts.queryId ?? 0, 64) // query id
144
+ .storeCoins(opts.amount) //
145
+ .storeAddress(opts.fromAddress)
146
+ .endCell(),
147
+ });
148
+ }
149
+ async sendTransfer(provider, via, opts) {
150
+ await provider.internal(via, {
151
+ value: opts.value,
152
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
153
+ body: (0, core_1.beginCell)()
154
+ .storeUint(exports.Opcodes.Transfer, 32) // opcode
155
+ .storeUint(opts.queryId ?? 0, 64) // query id
156
+ .storeCoins(opts.amount)
157
+ .storeAddress(opts.recipient) //
158
+ .storeAddress(opts.response || opts.recipient)
159
+ .storeDict(null)
160
+ .storeCoins(opts.notificationGas ? opts.notificationGas : (0, core_1.toNano)(0.05)) // forward-ton-amount 이게 없으면 transfer_notification 호출 안될수도.
161
+ .storeMaybeRef(opts.additional)
162
+ .endCell(),
163
+ });
164
+ }
165
+ async sendBurn(provider, via, opts) {
166
+ await provider.internal(via, {
167
+ value: opts.value,
168
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
169
+ body: (0, core_1.beginCell)()
170
+ .storeUint(opts.opcode ? opts.opcode : exports.Opcodes.Burn, 32) // opcode
171
+ .storeUint(opts.queryId ?? 0, 64) // query id
172
+ .storeCoins(opts.amount) //
173
+ .storeAddress(opts.recipientAddress)
174
+ .storeAddress(opts.responseAddress)
175
+ .endCell(),
176
+ });
177
+ }
178
+ async sendSeize(provider, via, opts) {
179
+ await provider.internal(via, {
180
+ value: opts.value,
181
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
182
+ body: (0, core_1.beginCell)()
183
+ .storeUint(opts.opcode ? opts.opcode : LFStonfiJettonWallet.Op.Seize, 32) // opcode
184
+ .storeUint(opts.queryId ?? 0, 64) // query id
185
+ .storeCoins(opts.amount) //
186
+ .storeAddress(opts.targetAddress)
187
+ .storeAddress(opts.responseAddress)
188
+ .endCell(),
189
+ });
190
+ }
191
+ async sendClaimRewards(provider, via, opts) {
192
+ await provider.internal(via, {
193
+ value: opts.value,
194
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
195
+ body: (0, core_1.beginCell)()
196
+ .storeUint(LFStonfiJettonWallet.Op.ClaimRewards, 32) // opcode
197
+ .storeUint(opts.queryId ?? 0, 64) // query id
198
+ .storeAddress(opts.nftAddress)
199
+ .storeBit(opts.claimAll) //
200
+ .storeUint(opts.poolIndex, 8)
201
+ .endCell(),
202
+ });
203
+ }
204
+ async sendWithdrawTons(provider, via, value, opts) {
205
+ await provider.internal(via, {
206
+ value: value,
207
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
208
+ body: (0, core_1.beginCell)()
209
+ .storeUint(LFStonfiJettonWallet.Op.WithdrawTons, 32) // opcode
210
+ .storeUint(opts.queryId ?? 0, 64) // query id
211
+ .endCell(),
212
+ });
213
+ }
214
+ async sendWithdrawJettons(provider, via, value, opts) {
215
+ await provider.internal(via, {
216
+ value: value,
217
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
218
+ body: (0, core_1.beginCell)()
219
+ .storeUint(LFStonfiJettonWallet.Op.WithdrawJettons, 32) // opcode
220
+ .storeUint(opts.queryId ?? 0, 64) // query id
221
+ .storeAddress(opts.wallet)
222
+ .storeCoins(opts.amount)
223
+ .storeBit(0)
224
+ .endCell(),
225
+ });
226
+ }
227
+ async getState(provider) {
228
+ return await provider.getState();
229
+ }
230
+ async getWalletData(provider) {
231
+ try {
232
+ const _result = await provider.get("get_wallet_data", []);
233
+ const balance = _result.stack.readBigNumber();
234
+ const owner = _result.stack.readAddress();
235
+ const jetton = _result.stack.readAddress();
236
+ return {
237
+ balance,
238
+ owner,
239
+ jetton,
240
+ };
241
+ }
242
+ catch (e) {
243
+ return {
244
+ balance: 0n,
245
+ };
246
+ }
247
+ }
248
+ async getLiquidFarmData(provider) {
249
+ try {
250
+ const _result = await provider.get("get_liquid_farm_data", []);
251
+ const balance = _result.stack.readBigNumber();
252
+ const lockedAssetBalance = _result.stack.readBigNumber();
253
+ const lockedAssetCash = _result.stack.readBigNumber();
254
+ const lockedAssetCashBeforeSync = _result.stack.readBigNumber();
255
+ const jettonAddress = _result.stack.readAddress();
256
+ const assetWalletAddress = _result.stack.readAddressOpt();
257
+ const poolAccountAddress = _result.stack.readAddressOpt();
258
+ const connectedWithPoolAccount = _result.stack.readBoolean();
259
+ const ownerAddress = _result.stack.readAddress();
260
+ const assetAddress = _result.stack.readAddress();
261
+ const poolAddress = _result.stack.readAddress();
262
+ return {
263
+ deployed: true,
264
+ balance,
265
+ lockedAssetBalance,
266
+ lockedAssetCash,
267
+ lockedAssetCashBeforeSync,
268
+ jettonAddress,
269
+ assetWalletAddress,
270
+ poolAccountAddress,
271
+ connectedWithPoolAccount,
272
+ ownerAddress,
273
+ assetAddress,
274
+ poolAddress,
275
+ };
276
+ }
277
+ catch (e) {
278
+ return {
279
+ deployed: false,
280
+ balance: 0n,
281
+ lockedAssetBalance: 0n,
282
+ lockedAssetCash: 0n,
283
+ lockedAssetCashBeforeSync: 0n,
284
+ };
285
+ }
286
+ }
287
+ }
288
+ exports.LFStonfiJettonWallet = LFStonfiJettonWallet;
@@ -0,0 +1,108 @@
1
+ import { Address, Cell, Contract, ContractProvider, Sender, Slice } from "@ton/core";
2
+ export type CompositeOnchainOracleConfig = {
3
+ owner: Address;
4
+ dataAggregatorCode: Cell;
5
+ };
6
+ export declare function compositeOnchainOracleConfigToCell(config: CompositeOnchainOracleConfig): Cell;
7
+ export declare class CompositeOnchainOracle implements Contract {
8
+ readonly address: Address;
9
+ readonly init?: {
10
+ code: Cell;
11
+ data: Cell;
12
+ } | undefined;
13
+ constructor(address: Address, init?: {
14
+ code: Cell;
15
+ data: Cell;
16
+ } | undefined);
17
+ static AssetType: {
18
+ currency: number;
19
+ synthetic1: number;
20
+ synthetic2: number;
21
+ vault: number;
22
+ };
23
+ static SourceType: {
24
+ internal: number;
25
+ tonstakers: number;
26
+ stonfi: number;
27
+ dedust: number;
28
+ storm: number;
29
+ tradoor: number;
30
+ };
31
+ static Op: {
32
+ ProvideOraclePrice: number;
33
+ TakeOraclePrice: number;
34
+ };
35
+ static OnchainSynthetic1AssetMetadata: {
36
+ new (params: {
37
+ sourceType: number;
38
+ sourceAddress: Address;
39
+ assetAddress: Address;
40
+ presetReserve?: bigint;
41
+ presetTotalSupply?: bigint;
42
+ }): {
43
+ sourceType: number;
44
+ sourceAddress: Address;
45
+ assetAddress: Address;
46
+ presetReserve: bigint;
47
+ presetTotalSupply: bigint;
48
+ toCell(): Cell;
49
+ };
50
+ };
51
+ static OnchainSynthetic2AssetMetadata: {
52
+ new (params: {
53
+ sourceType: number;
54
+ sourceAddress: Address;
55
+ assetAddress0: Address;
56
+ assetAddress1: Address;
57
+ presetReserve0?: bigint;
58
+ presetReserve1?: bigint;
59
+ presetTotalSupply?: bigint;
60
+ }): {
61
+ sourceType: number;
62
+ sourceAddress: Address;
63
+ assetAddress0: Address;
64
+ assetAddress1: Address;
65
+ presetReserve0: bigint;
66
+ presetReserve1: bigint;
67
+ presetTotalSupply: bigint;
68
+ toCell(): Cell;
69
+ };
70
+ };
71
+ static RedstoneNativeAssetMetadata: {
72
+ new (params: {
73
+ assetAddress: Address;
74
+ assetDecimals: number;
75
+ }): {
76
+ assetAddress: Address;
77
+ assetDecimals: number;
78
+ toCell(): Cell;
79
+ };
80
+ };
81
+ static RedstoneSynthetic1AssetMetadata: {
82
+ new (params: {
83
+ assetAddress: Address;
84
+ underlyingAssetAddress: Address;
85
+ assetDecimals: number;
86
+ }): {
87
+ assetAddress: Address;
88
+ underlyingAssetAddress: Address;
89
+ assetDecimals: number;
90
+ toCell(): Cell;
91
+ };
92
+ };
93
+ static createFromAddress(address: Address): CompositeOnchainOracle;
94
+ static createFromConfig(config: CompositeOnchainOracleConfig, code: Cell, workchain?: number): CompositeOnchainOracle;
95
+ sendDeploy(provider: ContractProvider, via: Sender, value: bigint): Promise<void>;
96
+ static createAddressToTupleCell(whitelists: Address[]): Cell;
97
+ sendProvideOraclePrice(provider: ContractProvider, via: Sender, opts: {
98
+ value: bigint;
99
+ oracleConfig: Cell;
100
+ oracleParams: Cell;
101
+ forwardPayload?: Slice;
102
+ queryID?: bigint;
103
+ }): Promise<void>;
104
+ getState(provider: ContractProvider): Promise<import("@ton/core").ContractState>;
105
+ getOwner(provider: ContractProvider): Promise<{
106
+ owner: Address | null;
107
+ }>;
108
+ }
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompositeOnchainOracle = void 0;
4
+ exports.compositeOnchainOracleConfigToCell = compositeOnchainOracleConfigToCell;
5
+ const core_1 = require("@ton/core");
6
+ function compositeOnchainOracleConfigToCell(config) {
7
+ return (0, core_1.beginCell)().storeCoins(0).storeAddress(config.owner).storeRef(config.dataAggregatorCode).endCell();
8
+ }
9
+ class CompositeOnchainOracle {
10
+ address;
11
+ init;
12
+ constructor(address, init) {
13
+ this.address = address;
14
+ this.init = init;
15
+ }
16
+ static AssetType = {
17
+ currency: 0,
18
+ synthetic1: 1,
19
+ synthetic2: 2,
20
+ vault: 10,
21
+ };
22
+ static SourceType = {
23
+ internal: 0,
24
+ tonstakers: 1,
25
+ stonfi: 2,
26
+ dedust: 3,
27
+ storm: 4,
28
+ tradoor: 5,
29
+ };
30
+ static Op = {
31
+ ProvideOraclePrice: 0x262964ae,
32
+ TakeOraclePrice: 0xba2968fa,
33
+ };
34
+ static OnchainSynthetic1AssetMetadata = class {
35
+ sourceType;
36
+ sourceAddress;
37
+ assetAddress;
38
+ presetReserve;
39
+ presetTotalSupply;
40
+ constructor(params) {
41
+ this.sourceType = params.sourceType;
42
+ this.sourceAddress = params.sourceAddress;
43
+ this.assetAddress = params.assetAddress;
44
+ this.presetReserve = params.presetReserve ?? 0n;
45
+ this.presetTotalSupply = params.presetTotalSupply ?? 0n;
46
+ }
47
+ toCell() {
48
+ return (0, core_1.beginCell)()
49
+ .storeUint(this.sourceType, 8)
50
+ .storeAddress(this.sourceAddress)
51
+ .storeUint(CompositeOnchainOracle.AssetType.synthetic1, 8)
52
+ .storeAddress(this.assetAddress)
53
+ .storeCoins(this.presetReserve)
54
+ .storeCoins(this.presetTotalSupply)
55
+ .endCell();
56
+ }
57
+ };
58
+ static OnchainSynthetic2AssetMetadata = class {
59
+ sourceType;
60
+ sourceAddress;
61
+ assetAddress0;
62
+ assetAddress1;
63
+ presetReserve0;
64
+ presetReserve1;
65
+ presetTotalSupply;
66
+ constructor(params) {
67
+ this.sourceType = params.sourceType;
68
+ this.sourceAddress = params.sourceAddress;
69
+ this.assetAddress0 = params.assetAddress0;
70
+ this.assetAddress1 = params.assetAddress1;
71
+ this.presetReserve0 = params.presetReserve0 ?? 0n;
72
+ this.presetReserve1 = params.presetReserve1 ?? 0n;
73
+ this.presetTotalSupply = params.presetTotalSupply ?? 0n;
74
+ }
75
+ toCell() {
76
+ return (0, core_1.beginCell)()
77
+ .storeUint(this.sourceType, 8)
78
+ .storeAddress(this.sourceAddress)
79
+ .storeUint(CompositeOnchainOracle.AssetType.synthetic2, 8)
80
+ .storeAddress(this.assetAddress0)
81
+ .storeAddress(this.assetAddress1)
82
+ .storeCoins(this.presetReserve0)
83
+ .storeCoins(this.presetReserve1)
84
+ .storeCoins(this.presetTotalSupply)
85
+ .endCell();
86
+ }
87
+ };
88
+ static RedstoneNativeAssetMetadata = class {
89
+ assetAddress;
90
+ assetDecimals;
91
+ constructor(params) {
92
+ this.assetAddress = params.assetAddress;
93
+ this.assetDecimals = params.assetDecimals;
94
+ }
95
+ toCell() {
96
+ return (0, core_1.beginCell)()
97
+ .storeUint(CompositeOnchainOracle.AssetType.currency, 8)
98
+ .storeAddress(this.assetAddress)
99
+ .storeCoins(this.assetDecimals)
100
+ .endCell();
101
+ }
102
+ };
103
+ static RedstoneSynthetic1AssetMetadata = class {
104
+ assetAddress;
105
+ underlyingAssetAddress;
106
+ assetDecimals;
107
+ constructor(params) {
108
+ this.assetAddress = params.assetAddress;
109
+ this.underlyingAssetAddress = params.underlyingAssetAddress;
110
+ this.assetDecimals = params.assetDecimals;
111
+ }
112
+ toCell() {
113
+ return (0, core_1.beginCell)()
114
+ .storeUint(CompositeOnchainOracle.AssetType.synthetic1, 8)
115
+ .storeAddress(this.assetAddress)
116
+ .storeUint(CompositeOnchainOracle.AssetType.synthetic1, 8)
117
+ .storeAddress(this.underlyingAssetAddress)
118
+ .storeCoins(this.assetDecimals)
119
+ .endCell();
120
+ }
121
+ };
122
+ static createFromAddress(address) {
123
+ return new CompositeOnchainOracle(address);
124
+ }
125
+ static createFromConfig(config, code, workchain = 0) {
126
+ const data = compositeOnchainOracleConfigToCell(config);
127
+ const init = { code, data };
128
+ return new CompositeOnchainOracle((0, core_1.contractAddress)(workchain, init), init);
129
+ }
130
+ async sendDeploy(provider, via, value) {
131
+ await provider.internal(via, {
132
+ value,
133
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
134
+ body: (0, core_1.beginCell)().endCell(),
135
+ });
136
+ }
137
+ static createAddressToTupleCell(whitelists) {
138
+ if (whitelists.length === 0) {
139
+ return (0, core_1.beginCell)().storeUint(0, 2).endCell();
140
+ }
141
+ // 13982176438608211n
142
+ // 14502560648720
143
+ const chunkedWhitelists = [];
144
+ for (let i = 0; i < whitelists.length; i += 3) {
145
+ chunkedWhitelists.push(whitelists.slice(i, i + 3));
146
+ }
147
+ const cells = chunkedWhitelists.map((chunk) => {
148
+ let cell = (0, core_1.beginCell)();
149
+ cell = cell.storeUint(chunk.length, 2);
150
+ chunk.forEach((address) => {
151
+ cell = cell.storeAddress(address);
152
+ });
153
+ return cell;
154
+ });
155
+ const finalCell = cells.reduce((acc, cur) => {
156
+ return acc ? cur.storeRef(acc) : cur;
157
+ }, null);
158
+ return finalCell?.endCell() || (0, core_1.beginCell)().storeUint(0, 2).endCell();
159
+ }
160
+ async sendProvideOraclePrice(provider, via, opts) {
161
+ let body = (0, core_1.beginCell)()
162
+ .storeUint(CompositeOnchainOracle.Op.ProvideOraclePrice, 32)
163
+ .storeUint(opts.queryID ?? 0, 64)
164
+ .storeRef((0, core_1.beginCell)().storeRef(opts.oracleConfig).storeRef(opts.oracleParams).endCell());
165
+ if (opts.forwardPayload) {
166
+ body = body.storeSlice(opts.forwardPayload);
167
+ }
168
+ await provider.internal(via, {
169
+ value: opts.value,
170
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
171
+ body: body.endCell(),
172
+ });
173
+ }
174
+ async getState(provider) {
175
+ return await provider.getState();
176
+ }
177
+ async getOwner(provider) {
178
+ const result = await provider.get("get_owner", []);
179
+ const owner = result.stack.readAddressOpt();
180
+ return {
181
+ owner,
182
+ };
183
+ }
184
+ }
185
+ exports.CompositeOnchainOracle = CompositeOnchainOracle;
@@ -0,0 +1,7 @@
1
+ import { Cell } from "@ton/core";
2
+ export declare function parseOracleConfig(cell: Cell): Cell | import("./redstone-onchain-oracle/type").RedstoneOnchainOracleConfig | import("./redstone-oracle/type").RedstonOracleConfig;
3
+ export declare function parseOracleParams(cell: Cell): {
4
+ dataFeedIds: import("@ton/core").TupleItem[];
5
+ prices: Record<string, string[]>;
6
+ requestAssetCell: Cell;
7
+ };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseOracleConfig = parseOracleConfig;
4
+ exports.parseOracleParams = parseOracleParams;
5
+ const core_1 = require("@ton/core");
6
+ const serializer_1 = require("./redstone-onchain-oracle/serializer");
7
+ const serializer_2 = require("./redstone-oracle/serializer");
8
+ const redstone_parser_1 = require("./redstone-parser");
9
+ function parseOracleConfig(cell) {
10
+ try {
11
+ return (0, serializer_1.parseRedstoneOnchainOracleConfig)(cell);
12
+ }
13
+ catch (e) { }
14
+ try {
15
+ return (0, serializer_2.parseRedstoneOracleConfig)(cell);
16
+ }
17
+ catch (e) { }
18
+ return cell;
19
+ }
20
+ function parseOracleParams(cell) {
21
+ const cs = cell.beginParse();
22
+ const dataFeedIdsCell = cs.loadRef();
23
+ const payloadRef = cs.loadRef();
24
+ const requestAssetCell = cs.loadRef();
25
+ const dataFeedIds = (0, core_1.parseTuple)(dataFeedIdsCell);
26
+ // const payloadRef = oracleParamsCs.loadRef();
27
+ const prices = {};
28
+ try {
29
+ const payloadCs = payloadRef.beginParse();
30
+ const dataPackagesDictRef = payloadCs.loadRef();
31
+ const slice = () => ({
32
+ serialize: (src, builder) => { },
33
+ parse: (src) => {
34
+ return src;
35
+ },
36
+ });
37
+ // Parse data packages dictionary (key length is 16 bits)
38
+ const dataPackagesDict = dataPackagesDictRef.beginParse().loadDictDirect(core_1.Dictionary.Keys.Uint(16), slice());
39
+ // Parse each data package to extract price only
40
+ for (const [, packageCs] of dataPackagesDict) {
41
+ // console.log(dataPackageCell);
42
+ try {
43
+ // const packageCs = dataPackageCell.beginParse();
44
+ // Read signature
45
+ const signatureR = packageCs.loadUintBig(256);
46
+ const signatureS = packageCs.loadUintBig(256);
47
+ const signatureV = packageCs.loadUint(8);
48
+ const dataRef = packageCs.loadRef();
49
+ // Convert to hex format expected by parseDataPackageHex
50
+ const dataCs = dataRef.beginParse();
51
+ const dataHex = dataCs.loadBuffer(dataCs.remainingBits / 8).toString("hex");
52
+ const signatureHex = signatureR.toString(16).padStart(64, "0") +
53
+ signatureS.toString(16).padStart(64, "0") +
54
+ signatureV.toString(16).padStart(2, "0");
55
+ // parseDataPackageHex expects: data + signature
56
+ const parsed = (0, redstone_parser_1.parseDataPackageHex)(dataHex + signatureHex);
57
+ if (!prices[parsed.feedId.toString()]) {
58
+ prices[parsed.feedId.toString()] = [];
59
+ }
60
+ prices[parsed.feedId.toString()].push(parsed.price.toString());
61
+ }
62
+ catch (e) {
63
+ console.log(e);
64
+ // Skip failed package parsing
65
+ }
66
+ }
67
+ }
68
+ catch (e) {
69
+ console.log("parse Prices error");
70
+ console.log(e);
71
+ }
72
+ return {
73
+ dataFeedIds,
74
+ prices,
75
+ requestAssetCell,
76
+ };
77
+ }