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.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/sol/constants.d.ts +150 -0
- package/dist/sol/constants.js +188 -0
- package/dist/sol/dex/blockrazor/client.d.ts +51 -0
- package/dist/sol/dex/blockrazor/client.js +96 -0
- package/dist/sol/dex/blockrazor/constants.d.ts +34 -0
- package/dist/sol/dex/blockrazor/constants.js +55 -0
- package/dist/sol/dex/blockrazor/geyser.d.ts +128 -0
- package/dist/sol/dex/blockrazor/geyser.js +530 -0
- package/dist/sol/dex/blockrazor/index.d.ts +18 -0
- package/dist/sol/dex/blockrazor/index.js +23 -0
- package/dist/sol/dex/blockrazor/send.d.ts +135 -0
- package/dist/sol/dex/blockrazor/send.js +254 -0
- package/dist/sol/dex/blockrazor/types.d.ts +191 -0
- package/dist/sol/dex/blockrazor/types.js +5 -0
- package/dist/sol/dex/index.d.ts +10 -0
- package/dist/sol/dex/index.js +16 -0
- package/dist/sol/dex/jup/client.d.ts +33 -0
- package/dist/sol/dex/jup/client.js +110 -0
- package/dist/sol/dex/jup/index.d.ts +16 -0
- package/dist/sol/dex/jup/index.js +148 -0
- package/dist/sol/dex/jup/legacy.d.ts +623 -0
- package/dist/sol/dex/jup/legacy.js +416 -0
- package/dist/sol/dex/jup/lend.d.ts +640 -0
- package/dist/sol/dex/jup/lend.js +603 -0
- package/dist/sol/dex/jup/portfolio.d.ts +362 -0
- package/dist/sol/dex/jup/portfolio.js +367 -0
- package/dist/sol/dex/jup/price.d.ts +173 -0
- package/dist/sol/dex/jup/price.js +220 -0
- package/dist/sol/dex/jup/recurring.d.ts +437 -0
- package/dist/sol/dex/jup/recurring.js +320 -0
- package/dist/sol/dex/jup/send.d.ts +282 -0
- package/dist/sol/dex/jup/send.js +295 -0
- package/dist/sol/dex/jup/studio.d.ts +457 -0
- package/dist/sol/dex/jup/studio.js +488 -0
- package/dist/sol/dex/jup/tokens.d.ts +767 -0
- package/dist/sol/dex/jup/tokens.js +697 -0
- package/dist/sol/dex/jup/trigger.d.ts +511 -0
- package/dist/sol/dex/jup/trigger.js +397 -0
- package/dist/sol/dex/jup/types.d.ts +433 -0
- package/dist/sol/dex/jup/types.js +5 -0
- package/dist/sol/dex/jup/ultra.d.ts +646 -0
- package/dist/sol/dex/jup/ultra.js +853 -0
- package/dist/sol/dex/meteora/client.d.ts +76 -0
- package/dist/sol/dex/meteora/client.js +219 -0
- package/dist/sol/dex/meteora/damm-v1-bundle.d.ts +61 -0
- package/dist/sol/dex/meteora/damm-v1-bundle.js +112 -0
- package/dist/sol/dex/meteora/damm-v1.d.ts +118 -0
- package/dist/sol/dex/meteora/damm-v1.js +315 -0
- package/dist/sol/dex/meteora/damm-v2-bundle.d.ts +82 -0
- package/dist/sol/dex/meteora/damm-v2-bundle.js +242 -0
- package/dist/sol/dex/meteora/damm-v2.d.ts +172 -0
- package/dist/sol/dex/meteora/damm-v2.js +632 -0
- package/dist/sol/dex/meteora/dbc-bundle.d.ts +123 -0
- package/dist/sol/dex/meteora/dbc-bundle.js +304 -0
- package/dist/sol/dex/meteora/dbc.d.ts +192 -0
- package/dist/sol/dex/meteora/dbc.js +619 -0
- package/dist/sol/dex/meteora/dlmm-bundle.d.ts +39 -0
- package/dist/sol/dex/meteora/dlmm-bundle.js +189 -0
- package/dist/sol/dex/meteora/dlmm.d.ts +157 -0
- package/dist/sol/dex/meteora/dlmm.js +671 -0
- package/dist/sol/dex/meteora/index.d.ts +25 -0
- package/dist/sol/dex/meteora/index.js +65 -0
- package/dist/sol/dex/meteora/types.d.ts +787 -0
- package/dist/sol/dex/meteora/types.js +110 -0
- package/dist/sol/dex/orca/index.d.ts +10 -0
- package/dist/sol/dex/orca/index.js +16 -0
- package/dist/sol/dex/orca/orca-bundle.d.ts +41 -0
- package/dist/sol/dex/orca/orca-bundle.js +173 -0
- package/dist/sol/dex/orca/orca.d.ts +65 -0
- package/dist/sol/dex/orca/orca.js +474 -0
- package/dist/sol/dex/orca/types.d.ts +263 -0
- package/dist/sol/dex/orca/types.js +38 -0
- package/dist/sol/dex/orca/wavebreak-bundle.d.ts +34 -0
- package/dist/sol/dex/orca/wavebreak-bundle.js +198 -0
- package/dist/sol/dex/orca/wavebreak-types.d.ts +227 -0
- package/dist/sol/dex/orca/wavebreak-types.js +23 -0
- package/dist/sol/dex/orca/wavebreak.d.ts +78 -0
- package/dist/sol/dex/orca/wavebreak.js +497 -0
- package/dist/sol/dex/pump/index.d.ts +9 -0
- package/dist/sol/dex/pump/index.js +14 -0
- package/dist/sol/dex/pump/pump-bundle.d.ts +92 -0
- package/dist/sol/dex/pump/pump-bundle.js +383 -0
- package/dist/sol/dex/pump/pump-swap-bundle.d.ts +103 -0
- package/dist/sol/dex/pump/pump-swap-bundle.js +380 -0
- package/dist/sol/dex/pump/pump-swap.d.ts +46 -0
- package/dist/sol/dex/pump/pump-swap.js +199 -0
- package/dist/sol/dex/pump/pump.d.ts +35 -0
- package/dist/sol/dex/pump/pump.js +352 -0
- package/dist/sol/dex/pump/types.d.ts +215 -0
- package/dist/sol/dex/pump/types.js +5 -0
- package/dist/sol/dex/raydium/index.d.ts +8 -0
- package/dist/sol/dex/raydium/index.js +12 -0
- package/dist/sol/dex/raydium/launchlab.d.ts +68 -0
- package/dist/sol/dex/raydium/launchlab.js +210 -0
- package/dist/sol/dex/raydium/raydium-bundle.d.ts +64 -0
- package/dist/sol/dex/raydium/raydium-bundle.js +324 -0
- package/dist/sol/dex/raydium/raydium.d.ts +40 -0
- package/dist/sol/dex/raydium/raydium.js +366 -0
- package/dist/sol/dex/raydium/types.d.ts +240 -0
- package/dist/sol/dex/raydium/types.js +5 -0
- package/dist/sol/index.d.ts +11 -0
- package/dist/sol/index.js +18 -0
- package/dist/sol/jito/bundle.d.ts +90 -0
- package/dist/sol/jito/bundle.js +263 -0
- package/dist/sol/jito/index.d.ts +7 -0
- package/dist/sol/jito/index.js +7 -0
- package/dist/sol/jito/tip.d.ts +51 -0
- package/dist/sol/jito/tip.js +83 -0
- package/dist/sol/jito/types.d.ts +100 -0
- package/dist/sol/jito/types.js +5 -0
- package/dist/sol/nozomi/client.d.ts +63 -0
- package/dist/sol/nozomi/client.js +222 -0
- package/dist/sol/nozomi/index.d.ts +8 -0
- package/dist/sol/nozomi/index.js +8 -0
- package/dist/sol/nozomi/tip.d.ts +50 -0
- package/dist/sol/nozomi/tip.js +80 -0
- package/dist/sol/nozomi/types.d.ts +96 -0
- package/dist/sol/nozomi/types.js +5 -0
- package/dist/sol/token/create-complete.d.ts +115 -0
- package/dist/sol/token/create-complete.js +235 -0
- package/dist/sol/token/create-token.d.ts +57 -0
- package/dist/sol/token/create-token.js +230 -0
- package/dist/sol/token/index.d.ts +9 -0
- package/dist/sol/token/index.js +14 -0
- package/dist/sol/token/metadata-upload.d.ts +86 -0
- package/dist/sol/token/metadata-upload.js +173 -0
- package/dist/sol/token/metadata.d.ts +92 -0
- package/dist/sol/token/metadata.js +274 -0
- package/dist/sol/token/types.d.ts +153 -0
- package/dist/sol/token/types.js +5 -0
- package/dist/sol/types.d.ts +176 -0
- package/dist/sol/types.js +7 -0
- package/dist/sol/utils/balance.d.ts +160 -0
- package/dist/sol/utils/balance.js +638 -0
- package/dist/sol/utils/connection.d.ts +78 -0
- package/dist/sol/utils/connection.js +168 -0
- package/dist/sol/utils/index.d.ts +9 -0
- package/dist/sol/utils/index.js +9 -0
- package/dist/sol/utils/lp-inspect.d.ts +75 -0
- package/dist/sol/utils/lp-inspect.js +235 -0
- package/dist/sol/utils/transfer.d.ts +196 -0
- package/dist/sol/utils/transfer.js +307 -0
- package/dist/sol/utils/wallet.d.ts +107 -0
- package/dist/sol/utils/wallet.js +210 -0
- package/package.json +44 -5
- package/README.zh-CN.pdf +0 -0
- package/dist/flap/portal-bundle-merkle/encryption.d.ts +0 -16
- 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
|
+
}
|