four-flap-meme-sdk 1.5.55 → 1.5.56

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 (150) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -1
  3. package/dist/sol/constants.d.ts +150 -0
  4. package/dist/sol/constants.js +188 -0
  5. package/dist/sol/dex/blockrazor/client.d.ts +51 -0
  6. package/dist/sol/dex/blockrazor/client.js +96 -0
  7. package/dist/sol/dex/blockrazor/constants.d.ts +34 -0
  8. package/dist/sol/dex/blockrazor/constants.js +55 -0
  9. package/dist/sol/dex/blockrazor/geyser.d.ts +128 -0
  10. package/dist/sol/dex/blockrazor/geyser.js +530 -0
  11. package/dist/sol/dex/blockrazor/index.d.ts +18 -0
  12. package/dist/sol/dex/blockrazor/index.js +23 -0
  13. package/dist/sol/dex/blockrazor/send.d.ts +135 -0
  14. package/dist/sol/dex/blockrazor/send.js +254 -0
  15. package/dist/sol/dex/blockrazor/types.d.ts +191 -0
  16. package/dist/sol/dex/blockrazor/types.js +5 -0
  17. package/dist/sol/dex/index.d.ts +10 -0
  18. package/dist/sol/dex/index.js +16 -0
  19. package/dist/sol/dex/jup/client.d.ts +33 -0
  20. package/dist/sol/dex/jup/client.js +110 -0
  21. package/dist/sol/dex/jup/index.d.ts +16 -0
  22. package/dist/sol/dex/jup/index.js +148 -0
  23. package/dist/sol/dex/jup/legacy.d.ts +623 -0
  24. package/dist/sol/dex/jup/legacy.js +416 -0
  25. package/dist/sol/dex/jup/lend.d.ts +640 -0
  26. package/dist/sol/dex/jup/lend.js +603 -0
  27. package/dist/sol/dex/jup/portfolio.d.ts +362 -0
  28. package/dist/sol/dex/jup/portfolio.js +367 -0
  29. package/dist/sol/dex/jup/price.d.ts +173 -0
  30. package/dist/sol/dex/jup/price.js +220 -0
  31. package/dist/sol/dex/jup/recurring.d.ts +437 -0
  32. package/dist/sol/dex/jup/recurring.js +320 -0
  33. package/dist/sol/dex/jup/send.d.ts +282 -0
  34. package/dist/sol/dex/jup/send.js +295 -0
  35. package/dist/sol/dex/jup/studio.d.ts +457 -0
  36. package/dist/sol/dex/jup/studio.js +488 -0
  37. package/dist/sol/dex/jup/tokens.d.ts +767 -0
  38. package/dist/sol/dex/jup/tokens.js +697 -0
  39. package/dist/sol/dex/jup/trigger.d.ts +511 -0
  40. package/dist/sol/dex/jup/trigger.js +397 -0
  41. package/dist/sol/dex/jup/types.d.ts +433 -0
  42. package/dist/sol/dex/jup/types.js +5 -0
  43. package/dist/sol/dex/jup/ultra.d.ts +646 -0
  44. package/dist/sol/dex/jup/ultra.js +853 -0
  45. package/dist/sol/dex/meteora/client.d.ts +76 -0
  46. package/dist/sol/dex/meteora/client.js +219 -0
  47. package/dist/sol/dex/meteora/damm-v1-bundle.d.ts +61 -0
  48. package/dist/sol/dex/meteora/damm-v1-bundle.js +112 -0
  49. package/dist/sol/dex/meteora/damm-v1.d.ts +118 -0
  50. package/dist/sol/dex/meteora/damm-v1.js +315 -0
  51. package/dist/sol/dex/meteora/damm-v2-bundle.d.ts +82 -0
  52. package/dist/sol/dex/meteora/damm-v2-bundle.js +242 -0
  53. package/dist/sol/dex/meteora/damm-v2.d.ts +172 -0
  54. package/dist/sol/dex/meteora/damm-v2.js +632 -0
  55. package/dist/sol/dex/meteora/dbc-bundle.d.ts +123 -0
  56. package/dist/sol/dex/meteora/dbc-bundle.js +304 -0
  57. package/dist/sol/dex/meteora/dbc.d.ts +192 -0
  58. package/dist/sol/dex/meteora/dbc.js +619 -0
  59. package/dist/sol/dex/meteora/dlmm-bundle.d.ts +39 -0
  60. package/dist/sol/dex/meteora/dlmm-bundle.js +189 -0
  61. package/dist/sol/dex/meteora/dlmm.d.ts +157 -0
  62. package/dist/sol/dex/meteora/dlmm.js +671 -0
  63. package/dist/sol/dex/meteora/index.d.ts +25 -0
  64. package/dist/sol/dex/meteora/index.js +65 -0
  65. package/dist/sol/dex/meteora/types.d.ts +787 -0
  66. package/dist/sol/dex/meteora/types.js +110 -0
  67. package/dist/sol/dex/orca/index.d.ts +10 -0
  68. package/dist/sol/dex/orca/index.js +16 -0
  69. package/dist/sol/dex/orca/orca-bundle.d.ts +41 -0
  70. package/dist/sol/dex/orca/orca-bundle.js +173 -0
  71. package/dist/sol/dex/orca/orca.d.ts +65 -0
  72. package/dist/sol/dex/orca/orca.js +474 -0
  73. package/dist/sol/dex/orca/types.d.ts +263 -0
  74. package/dist/sol/dex/orca/types.js +38 -0
  75. package/dist/sol/dex/orca/wavebreak-bundle.d.ts +34 -0
  76. package/dist/sol/dex/orca/wavebreak-bundle.js +198 -0
  77. package/dist/sol/dex/orca/wavebreak-types.d.ts +227 -0
  78. package/dist/sol/dex/orca/wavebreak-types.js +23 -0
  79. package/dist/sol/dex/orca/wavebreak.d.ts +78 -0
  80. package/dist/sol/dex/orca/wavebreak.js +497 -0
  81. package/dist/sol/dex/pump/index.d.ts +9 -0
  82. package/dist/sol/dex/pump/index.js +14 -0
  83. package/dist/sol/dex/pump/pump-bundle.d.ts +92 -0
  84. package/dist/sol/dex/pump/pump-bundle.js +383 -0
  85. package/dist/sol/dex/pump/pump-swap-bundle.d.ts +103 -0
  86. package/dist/sol/dex/pump/pump-swap-bundle.js +380 -0
  87. package/dist/sol/dex/pump/pump-swap.d.ts +46 -0
  88. package/dist/sol/dex/pump/pump-swap.js +199 -0
  89. package/dist/sol/dex/pump/pump.d.ts +35 -0
  90. package/dist/sol/dex/pump/pump.js +352 -0
  91. package/dist/sol/dex/pump/types.d.ts +215 -0
  92. package/dist/sol/dex/pump/types.js +5 -0
  93. package/dist/sol/dex/raydium/index.d.ts +8 -0
  94. package/dist/sol/dex/raydium/index.js +12 -0
  95. package/dist/sol/dex/raydium/launchlab.d.ts +68 -0
  96. package/dist/sol/dex/raydium/launchlab.js +210 -0
  97. package/dist/sol/dex/raydium/raydium-bundle.d.ts +64 -0
  98. package/dist/sol/dex/raydium/raydium-bundle.js +324 -0
  99. package/dist/sol/dex/raydium/raydium.d.ts +40 -0
  100. package/dist/sol/dex/raydium/raydium.js +366 -0
  101. package/dist/sol/dex/raydium/types.d.ts +240 -0
  102. package/dist/sol/dex/raydium/types.js +5 -0
  103. package/dist/sol/index.d.ts +11 -0
  104. package/dist/sol/index.js +18 -0
  105. package/dist/sol/jito/bundle.d.ts +90 -0
  106. package/dist/sol/jito/bundle.js +263 -0
  107. package/dist/sol/jito/index.d.ts +7 -0
  108. package/dist/sol/jito/index.js +7 -0
  109. package/dist/sol/jito/tip.d.ts +51 -0
  110. package/dist/sol/jito/tip.js +83 -0
  111. package/dist/sol/jito/types.d.ts +100 -0
  112. package/dist/sol/jito/types.js +5 -0
  113. package/dist/sol/nozomi/client.d.ts +63 -0
  114. package/dist/sol/nozomi/client.js +222 -0
  115. package/dist/sol/nozomi/index.d.ts +8 -0
  116. package/dist/sol/nozomi/index.js +8 -0
  117. package/dist/sol/nozomi/tip.d.ts +50 -0
  118. package/dist/sol/nozomi/tip.js +80 -0
  119. package/dist/sol/nozomi/types.d.ts +96 -0
  120. package/dist/sol/nozomi/types.js +5 -0
  121. package/dist/sol/token/create-complete.d.ts +115 -0
  122. package/dist/sol/token/create-complete.js +235 -0
  123. package/dist/sol/token/create-token.d.ts +57 -0
  124. package/dist/sol/token/create-token.js +230 -0
  125. package/dist/sol/token/index.d.ts +9 -0
  126. package/dist/sol/token/index.js +14 -0
  127. package/dist/sol/token/metadata-upload.d.ts +86 -0
  128. package/dist/sol/token/metadata-upload.js +173 -0
  129. package/dist/sol/token/metadata.d.ts +92 -0
  130. package/dist/sol/token/metadata.js +274 -0
  131. package/dist/sol/token/types.d.ts +153 -0
  132. package/dist/sol/token/types.js +5 -0
  133. package/dist/sol/types.d.ts +176 -0
  134. package/dist/sol/types.js +7 -0
  135. package/dist/sol/utils/balance.d.ts +160 -0
  136. package/dist/sol/utils/balance.js +638 -0
  137. package/dist/sol/utils/connection.d.ts +78 -0
  138. package/dist/sol/utils/connection.js +168 -0
  139. package/dist/sol/utils/index.d.ts +9 -0
  140. package/dist/sol/utils/index.js +9 -0
  141. package/dist/sol/utils/lp-inspect.d.ts +75 -0
  142. package/dist/sol/utils/lp-inspect.js +235 -0
  143. package/dist/sol/utils/transfer.d.ts +196 -0
  144. package/dist/sol/utils/transfer.js +307 -0
  145. package/dist/sol/utils/wallet.d.ts +107 -0
  146. package/dist/sol/utils/wallet.js +210 -0
  147. package/package.json +44 -5
  148. package/README.zh-CN.pdf +0 -0
  149. package/dist/flap/portal-bundle-merkle/encryption.d.ts +0 -16
  150. package/dist/flap/portal-bundle-merkle/encryption.js +0 -146
@@ -0,0 +1,397 @@
1
+ /**
2
+ * Jupiter Trigger API (限价单/触发订单)
3
+ * @module sol/dex/jup/trigger
4
+ *
5
+ * Trigger API 提供限价单功能
6
+ * 用户可以创建、取消和查询触发订单
7
+ */
8
+ import { jupGet, jupPost } from './client.js';
9
+ // ============================================================================
10
+ // Create Order - 创建订单
11
+ // ============================================================================
12
+ /**
13
+ * 创建触发订单(限价单)
14
+ *
15
+ * 创建一个在指定价格执行的订单。
16
+ *
17
+ * @param params 创建订单参数
18
+ * @param config Jupiter 配置
19
+ * @returns 创建订单响应
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { Sol } from 'four-flap-meme-sdk'
24
+ *
25
+ * Sol.setJupiterConfig({ apiKey: 'your-api-key' })
26
+ *
27
+ * // 创建限价单:用 100 USDC 换取至少 0.5 SOL
28
+ * const result = await Sol.createTriggerOrder({
29
+ * inputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
30
+ * outputMint: 'So11111111111111111111111111111111111111112', // SOL
31
+ * maker: wallet.publicKey.toBase58(),
32
+ * payer: wallet.publicKey.toBase58(),
33
+ * params: {
34
+ * makingAmount: '100000000', // 100 USDC (6 decimals)
35
+ * takingAmount: '500000000', // 0.5 SOL (9 decimals)
36
+ * slippageBps: 0,
37
+ * },
38
+ * computeUnitPrice: 'auto',
39
+ * wrapAndUnwrapSol: true,
40
+ * })
41
+ *
42
+ * console.log('订单账户:', result.order)
43
+ * console.log('请求 ID:', result.requestId)
44
+ *
45
+ * // 签名并发送交易
46
+ * const tx = VersionedTransaction.deserialize(
47
+ * Buffer.from(result.transaction, 'base64')
48
+ * )
49
+ * tx.sign([wallet])
50
+ * const signature = await connection.sendTransaction(tx)
51
+ * ```
52
+ */
53
+ export async function createTriggerOrder(params, config) {
54
+ return jupPost('/trigger/v1/createOrder', params, config);
55
+ }
56
+ /**
57
+ * 创建简单限价单
58
+ *
59
+ * @param inputMint 输入代币 Mint
60
+ * @param outputMint 输出代币 Mint
61
+ * @param maker Maker 地址
62
+ * @param makingAmount 输入数量
63
+ * @param takingAmount 期望输出数量
64
+ * @param options 可选参数
65
+ * @param config Jupiter 配置
66
+ * @returns 创建订单响应
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const result = await Sol.createSimpleTriggerOrder(
71
+ * 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
72
+ * 'So11111111111111111111111111111111111111112', // SOL
73
+ * wallet.publicKey.toBase58(),
74
+ * '100000000', // 100 USDC
75
+ * '500000000', // 0.5 SOL
76
+ * )
77
+ * ```
78
+ */
79
+ export async function createSimpleTriggerOrder(inputMint, outputMint, maker, makingAmount, takingAmount, options, config) {
80
+ return createTriggerOrder({
81
+ inputMint,
82
+ outputMint,
83
+ maker,
84
+ payer: maker,
85
+ params: {
86
+ makingAmount,
87
+ takingAmount,
88
+ slippageBps: options?.slippageBps ?? 0,
89
+ expiredAt: options?.expiredAt,
90
+ },
91
+ computeUnitPrice: options?.computeUnitPrice ?? 'auto',
92
+ wrapAndUnwrapSol: options?.wrapAndUnwrapSol ?? true,
93
+ }, config);
94
+ }
95
+ // ============================================================================
96
+ // Cancel Order - 取消订单
97
+ // ============================================================================
98
+ /**
99
+ * 取消单个触发订单
100
+ *
101
+ * @param params 取消订单参数
102
+ * @param config Jupiter 配置
103
+ * @returns 取消订单响应
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const result = await Sol.cancelTriggerOrder({
108
+ * maker: wallet.publicKey.toBase58(),
109
+ * order: 'orderAccountAddress',
110
+ * })
111
+ *
112
+ * // 签名并发送
113
+ * const tx = VersionedTransaction.deserialize(
114
+ * Buffer.from(result.transaction, 'base64')
115
+ * )
116
+ * tx.sign([wallet])
117
+ *
118
+ * // 执行
119
+ * await Sol.executeTriggerOrder({
120
+ * requestId: result.requestId,
121
+ * signedTransaction: Buffer.from(tx.serialize()).toString('base64'),
122
+ * })
123
+ * ```
124
+ */
125
+ export async function cancelTriggerOrder(params, config) {
126
+ return jupPost('/trigger/v1/cancelOrder', params, config);
127
+ }
128
+ /**
129
+ * 批量取消触发订单
130
+ *
131
+ * @param params 批量取消参数
132
+ * @param config Jupiter 配置
133
+ * @returns 批量取消响应(包含多个交易)
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * const result = await Sol.cancelTriggerOrders({
138
+ * maker: wallet.publicKey.toBase58(),
139
+ * orders: ['order1', 'order2'],
140
+ * })
141
+ *
142
+ * // 需要签名并执行每个交易
143
+ * for (const txBase64 of result.transactions) {
144
+ * const tx = VersionedTransaction.deserialize(Buffer.from(txBase64, 'base64'))
145
+ * tx.sign([wallet])
146
+ * await connection.sendTransaction(tx)
147
+ * }
148
+ * ```
149
+ */
150
+ export async function cancelTriggerOrders(params, config) {
151
+ return jupPost('/trigger/v1/cancelOrders', params, config);
152
+ }
153
+ /**
154
+ * 快捷取消单个订单
155
+ *
156
+ * @param maker Maker 地址
157
+ * @param orderAccount 订单账户地址
158
+ * @param config Jupiter 配置
159
+ * @returns 取消订单响应
160
+ */
161
+ export async function cancelSingleTriggerOrder(maker, orderAccount, config) {
162
+ return cancelTriggerOrder({
163
+ maker,
164
+ order: orderAccount,
165
+ computeUnitPrice: 'auto',
166
+ }, config);
167
+ }
168
+ // ============================================================================
169
+ // Execute - 执行交易
170
+ // ============================================================================
171
+ /**
172
+ * 执行已签名的触发订单交易
173
+ *
174
+ * 将签名后的交易发送到 Jupiter 执行。
175
+ *
176
+ * @param params 执行参数
177
+ * @param config Jupiter 配置
178
+ * @returns 执行结果
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * // 1. 创建订单
183
+ * const createResult = await Sol.createTriggerOrder({
184
+ * inputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
185
+ * outputMint: 'So11111111111111111111111111111111111111112',
186
+ * maker: wallet.publicKey.toBase58(),
187
+ * payer: wallet.publicKey.toBase58(),
188
+ * params: {
189
+ * makingAmount: '100000000',
190
+ * takingAmount: '500000000',
191
+ * },
192
+ * })
193
+ *
194
+ * // 2. 签名交易
195
+ * const tx = VersionedTransaction.deserialize(
196
+ * Buffer.from(createResult.transaction, 'base64')
197
+ * )
198
+ * tx.sign([wallet])
199
+ *
200
+ * // 3. 执行交易
201
+ * const executeResult = await Sol.executeTriggerOrder({
202
+ * requestId: createResult.requestId,
203
+ * signedTransaction: Buffer.from(tx.serialize()).toString('base64'),
204
+ * })
205
+ *
206
+ * if (executeResult.status === 'Success') {
207
+ * console.log('订单创建成功:', executeResult.signature)
208
+ * }
209
+ * ```
210
+ */
211
+ export async function executeTriggerOrder(params, config) {
212
+ return jupPost('/trigger/v1/execute', params, config);
213
+ }
214
+ /**
215
+ * 创建订单并执行(一步完成)
216
+ *
217
+ * @param params 创建订单参数
218
+ * @param signTransaction 签名函数
219
+ * @param config Jupiter 配置
220
+ * @returns 执行结果和订单账户
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * const result = await Sol.createAndExecuteTriggerOrder(
225
+ * {
226
+ * inputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
227
+ * outputMint: 'So11111111111111111111111111111111111111112',
228
+ * maker: wallet.publicKey.toBase58(),
229
+ * payer: wallet.publicKey.toBase58(),
230
+ * params: {
231
+ * makingAmount: '100000000',
232
+ * takingAmount: '500000000',
233
+ * },
234
+ * },
235
+ * async (tx) => {
236
+ * tx.sign([wallet])
237
+ * return tx
238
+ * }
239
+ * )
240
+ *
241
+ * console.log('签名:', result.signature)
242
+ * console.log('订单:', result.order)
243
+ * ```
244
+ */
245
+ export async function createAndExecuteTriggerOrder(params, signTransaction, config) {
246
+ // 1. 创建订单
247
+ const createResult = await createTriggerOrder(params, config);
248
+ // 2. 反序列化并签名
249
+ // 注意:这里假设使用者会在 signTransaction 中处理反序列化
250
+ const signedTx = await signTransaction(createResult.transaction);
251
+ // 3. 执行
252
+ const executeResult = await executeTriggerOrder({
253
+ requestId: createResult.requestId,
254
+ signedTransaction: signedTx,
255
+ }, config);
256
+ return {
257
+ ...executeResult,
258
+ order: createResult.order,
259
+ };
260
+ }
261
+ // ============================================================================
262
+ // Get Orders - 获取订单
263
+ // ============================================================================
264
+ /**
265
+ * 获取用户的触发订单(带分页)
266
+ *
267
+ * @param params 查询参数
268
+ * @param config Jupiter 配置
269
+ * @returns 订单列表响应(含分页信息)
270
+ *
271
+ * @example
272
+ * ```typescript
273
+ * // 获取活跃订单
274
+ * const activeOrders = await Sol.getTriggerOrders({
275
+ * user: wallet.publicKey.toBase58(),
276
+ * orderStatus: 'active',
277
+ * page: 1,
278
+ * })
279
+ *
280
+ * console.log(`共 ${activeOrders.totalPages} 页`)
281
+ * activeOrders.orders.forEach(order => {
282
+ * console.log(`订单: ${order.orderKey}`)
283
+ * console.log(` ${order.makingAmount} -> ${order.takingAmount}`)
284
+ * console.log(` 状态: ${order.status}`)
285
+ * console.log(` 交易数: ${order.trades.length}`)
286
+ * })
287
+ *
288
+ * // 获取历史订单
289
+ * const history = await Sol.getTriggerOrders({
290
+ * user: wallet.publicKey.toBase58(),
291
+ * orderStatus: 'history',
292
+ * })
293
+ * ```
294
+ */
295
+ export async function getTriggerOrders(params, config) {
296
+ const queryParams = {};
297
+ if (params.user)
298
+ queryParams.user = params.user;
299
+ if (params.page)
300
+ queryParams.page = params.page;
301
+ if (params.orderStatus)
302
+ queryParams.orderStatus = params.orderStatus;
303
+ return jupGet('/trigger/v1/getTriggerOrders', queryParams, config);
304
+ }
305
+ /**
306
+ * 获取用户的活跃订单
307
+ *
308
+ * @param user 用户地址
309
+ * @param page 页码(默认: 1)
310
+ * @param config Jupiter 配置
311
+ * @returns 活跃订单响应
312
+ */
313
+ export async function getActiveTriggerOrders(user, page = 1, config) {
314
+ return getTriggerOrders({ user, orderStatus: 'active', page }, config);
315
+ }
316
+ /**
317
+ * 获取用户的历史订单
318
+ *
319
+ * @param user 用户地址
320
+ * @param page 页码(默认: 1)
321
+ * @param config Jupiter 配置
322
+ * @returns 历史订单响应
323
+ */
324
+ export async function getHistoryTriggerOrders(user, page = 1, config) {
325
+ return getTriggerOrders({ user, orderStatus: 'history', page }, config);
326
+ }
327
+ /**
328
+ * 获取所有活跃订单(自动分页)
329
+ *
330
+ * @param user 用户地址
331
+ * @param config Jupiter 配置
332
+ * @returns 所有活跃订单
333
+ */
334
+ export async function getAllActiveTriggerOrders(user, config) {
335
+ const allOrders = [];
336
+ let page = 1;
337
+ while (true) {
338
+ const response = await getActiveTriggerOrders(user, page, config);
339
+ allOrders.push(...response.orders);
340
+ if (page >= response.totalPages)
341
+ break;
342
+ page++;
343
+ }
344
+ return allOrders;
345
+ }
346
+ // ============================================================================
347
+ // 便捷方法
348
+ // ============================================================================
349
+ /**
350
+ * 计算限价单价格
351
+ *
352
+ * @param makingAmount 输入数量
353
+ * @param makingDecimals 输入代币精度
354
+ * @param takingAmount 输出数量
355
+ * @param takingDecimals 输出代币精度
356
+ * @returns 价格 (输出/输入)
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * // 100 USDC -> 0.5 SOL
361
+ * const price = Sol.calculateTriggerPrice(
362
+ * '100000000', 6, // 100 USDC
363
+ * '500000000', 9, // 0.5 SOL
364
+ * )
365
+ * console.log('价格:', price, 'SOL/USDC') // 0.005
366
+ * ```
367
+ */
368
+ export function calculateTriggerPrice(makingAmount, makingDecimals, takingAmount, takingDecimals) {
369
+ const making = Number(makingAmount) / Math.pow(10, makingDecimals);
370
+ const taking = Number(takingAmount) / Math.pow(10, takingDecimals);
371
+ return taking / making;
372
+ }
373
+ /**
374
+ * 从价格计算 takingAmount
375
+ *
376
+ * @param makingAmount 输入数量
377
+ * @param makingDecimals 输入代币精度
378
+ * @param price 期望价格 (输出/输入)
379
+ * @param takingDecimals 输出代币精度
380
+ * @returns takingAmount
381
+ *
382
+ * @example
383
+ * ```typescript
384
+ * // 100 USDC,价格 0.005 SOL/USDC
385
+ * const takingAmount = Sol.calculateTakingAmount(
386
+ * '100000000', 6, // 100 USDC
387
+ * 0.005, // 价格
388
+ * 9, // SOL 精度
389
+ * )
390
+ * console.log('takingAmount:', takingAmount) // '500000000'
391
+ * ```
392
+ */
393
+ export function calculateTakingAmount(makingAmount, makingDecimals, price, takingDecimals) {
394
+ const making = Number(makingAmount) / Math.pow(10, makingDecimals);
395
+ const taking = making * price;
396
+ return Math.floor(taking * Math.pow(10, takingDecimals)).toString();
397
+ }