four-flap-meme-sdk 1.4.89 → 1.4.91
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/README.zh-CN.pdf +0 -0
- package/dist/flap/portal-bundle-merkle/create-to-dex.d.ts +1 -1
- package/dist/flap/portal-bundle-merkle/create-to-dex.js +51 -13
- package/dist/flap/portal-bundle-merkle/encryption.d.ts +16 -0
- package/dist/flap/portal-bundle-merkle/encryption.js +146 -0
- package/dist/utils/holders-maker.d.ts +19 -0
- package/dist/utils/holders-maker.js +4 -1
- package/package.json +3 -38
- package/dist/sol/constants.d.ts +0 -126
- package/dist/sol/constants.js +0 -145
- package/dist/sol/dex/blockrazor/client.d.ts +0 -51
- package/dist/sol/dex/blockrazor/client.js +0 -96
- package/dist/sol/dex/blockrazor/constants.d.ts +0 -34
- package/dist/sol/dex/blockrazor/constants.js +0 -55
- package/dist/sol/dex/blockrazor/geyser.d.ts +0 -128
- package/dist/sol/dex/blockrazor/geyser.js +0 -530
- package/dist/sol/dex/blockrazor/index.d.ts +0 -18
- package/dist/sol/dex/blockrazor/index.js +0 -23
- package/dist/sol/dex/blockrazor/send.d.ts +0 -135
- package/dist/sol/dex/blockrazor/send.js +0 -254
- package/dist/sol/dex/blockrazor/types.d.ts +0 -191
- package/dist/sol/dex/blockrazor/types.js +0 -5
- package/dist/sol/dex/index.d.ts +0 -10
- package/dist/sol/dex/index.js +0 -16
- package/dist/sol/dex/jup/client.d.ts +0 -33
- package/dist/sol/dex/jup/client.js +0 -110
- package/dist/sol/dex/jup/index.d.ts +0 -16
- package/dist/sol/dex/jup/index.js +0 -148
- package/dist/sol/dex/jup/legacy.d.ts +0 -623
- package/dist/sol/dex/jup/legacy.js +0 -416
- package/dist/sol/dex/jup/lend.d.ts +0 -640
- package/dist/sol/dex/jup/lend.js +0 -603
- package/dist/sol/dex/jup/portfolio.d.ts +0 -362
- package/dist/sol/dex/jup/portfolio.js +0 -367
- package/dist/sol/dex/jup/price.d.ts +0 -173
- package/dist/sol/dex/jup/price.js +0 -220
- package/dist/sol/dex/jup/recurring.d.ts +0 -437
- package/dist/sol/dex/jup/recurring.js +0 -320
- package/dist/sol/dex/jup/send.d.ts +0 -282
- package/dist/sol/dex/jup/send.js +0 -295
- package/dist/sol/dex/jup/studio.d.ts +0 -457
- package/dist/sol/dex/jup/studio.js +0 -488
- package/dist/sol/dex/jup/tokens.d.ts +0 -767
- package/dist/sol/dex/jup/tokens.js +0 -697
- package/dist/sol/dex/jup/trigger.d.ts +0 -511
- package/dist/sol/dex/jup/trigger.js +0 -397
- package/dist/sol/dex/jup/types.d.ts +0 -433
- package/dist/sol/dex/jup/types.js +0 -5
- package/dist/sol/dex/jup/ultra.d.ts +0 -646
- package/dist/sol/dex/jup/ultra.js +0 -853
- package/dist/sol/dex/meteora/client.d.ts +0 -76
- package/dist/sol/dex/meteora/client.js +0 -219
- package/dist/sol/dex/meteora/damm-v1-bundle.d.ts +0 -61
- package/dist/sol/dex/meteora/damm-v1-bundle.js +0 -112
- package/dist/sol/dex/meteora/damm-v1.d.ts +0 -118
- package/dist/sol/dex/meteora/damm-v1.js +0 -315
- package/dist/sol/dex/meteora/damm-v2-bundle.d.ts +0 -82
- package/dist/sol/dex/meteora/damm-v2-bundle.js +0 -242
- package/dist/sol/dex/meteora/damm-v2.d.ts +0 -172
- package/dist/sol/dex/meteora/damm-v2.js +0 -632
- package/dist/sol/dex/meteora/dbc-bundle.d.ts +0 -123
- package/dist/sol/dex/meteora/dbc-bundle.js +0 -304
- package/dist/sol/dex/meteora/dbc.d.ts +0 -192
- package/dist/sol/dex/meteora/dbc.js +0 -619
- package/dist/sol/dex/meteora/dlmm-bundle.d.ts +0 -39
- package/dist/sol/dex/meteora/dlmm-bundle.js +0 -189
- package/dist/sol/dex/meteora/dlmm.d.ts +0 -157
- package/dist/sol/dex/meteora/dlmm.js +0 -671
- package/dist/sol/dex/meteora/index.d.ts +0 -25
- package/dist/sol/dex/meteora/index.js +0 -65
- package/dist/sol/dex/meteora/types.d.ts +0 -787
- package/dist/sol/dex/meteora/types.js +0 -110
- package/dist/sol/dex/orca/index.d.ts +0 -10
- package/dist/sol/dex/orca/index.js +0 -16
- package/dist/sol/dex/orca/orca-bundle.d.ts +0 -41
- package/dist/sol/dex/orca/orca-bundle.js +0 -173
- package/dist/sol/dex/orca/orca.d.ts +0 -65
- package/dist/sol/dex/orca/orca.js +0 -474
- package/dist/sol/dex/orca/types.d.ts +0 -263
- package/dist/sol/dex/orca/types.js +0 -38
- package/dist/sol/dex/orca/wavebreak-bundle.d.ts +0 -34
- package/dist/sol/dex/orca/wavebreak-bundle.js +0 -198
- package/dist/sol/dex/orca/wavebreak-types.d.ts +0 -227
- package/dist/sol/dex/orca/wavebreak-types.js +0 -23
- package/dist/sol/dex/orca/wavebreak.d.ts +0 -78
- package/dist/sol/dex/orca/wavebreak.js +0 -497
- package/dist/sol/dex/pump/index.d.ts +0 -9
- package/dist/sol/dex/pump/index.js +0 -14
- package/dist/sol/dex/pump/pump-bundle.d.ts +0 -92
- package/dist/sol/dex/pump/pump-bundle.js +0 -383
- package/dist/sol/dex/pump/pump-swap-bundle.d.ts +0 -103
- package/dist/sol/dex/pump/pump-swap-bundle.js +0 -380
- package/dist/sol/dex/pump/pump-swap.d.ts +0 -46
- package/dist/sol/dex/pump/pump-swap.js +0 -199
- package/dist/sol/dex/pump/pump.d.ts +0 -35
- package/dist/sol/dex/pump/pump.js +0 -352
- package/dist/sol/dex/pump/types.d.ts +0 -215
- package/dist/sol/dex/pump/types.js +0 -5
- package/dist/sol/dex/raydium/index.d.ts +0 -8
- package/dist/sol/dex/raydium/index.js +0 -12
- package/dist/sol/dex/raydium/launchlab.d.ts +0 -68
- package/dist/sol/dex/raydium/launchlab.js +0 -210
- package/dist/sol/dex/raydium/raydium-bundle.d.ts +0 -64
- package/dist/sol/dex/raydium/raydium-bundle.js +0 -324
- package/dist/sol/dex/raydium/raydium.d.ts +0 -40
- package/dist/sol/dex/raydium/raydium.js +0 -366
- package/dist/sol/dex/raydium/types.d.ts +0 -240
- package/dist/sol/dex/raydium/types.js +0 -5
- package/dist/sol/index.d.ts +0 -10
- package/dist/sol/index.js +0 -16
- package/dist/sol/jito/bundle.d.ts +0 -90
- package/dist/sol/jito/bundle.js +0 -263
- package/dist/sol/jito/index.d.ts +0 -7
- package/dist/sol/jito/index.js +0 -7
- package/dist/sol/jito/tip.d.ts +0 -51
- package/dist/sol/jito/tip.js +0 -83
- package/dist/sol/jito/types.d.ts +0 -100
- package/dist/sol/jito/types.js +0 -5
- package/dist/sol/token/create-complete.d.ts +0 -115
- package/dist/sol/token/create-complete.js +0 -235
- package/dist/sol/token/create-token.d.ts +0 -57
- package/dist/sol/token/create-token.js +0 -230
- package/dist/sol/token/index.d.ts +0 -9
- package/dist/sol/token/index.js +0 -14
- package/dist/sol/token/metadata-upload.d.ts +0 -86
- package/dist/sol/token/metadata-upload.js +0 -173
- package/dist/sol/token/metadata.d.ts +0 -92
- package/dist/sol/token/metadata.js +0 -274
- package/dist/sol/token/types.d.ts +0 -153
- package/dist/sol/token/types.js +0 -5
- package/dist/sol/types.d.ts +0 -176
- package/dist/sol/types.js +0 -7
- package/dist/sol/utils/balance.d.ts +0 -160
- package/dist/sol/utils/balance.js +0 -638
- package/dist/sol/utils/connection.d.ts +0 -78
- package/dist/sol/utils/connection.js +0 -168
- package/dist/sol/utils/index.d.ts +0 -9
- package/dist/sol/utils/index.js +0 -9
- package/dist/sol/utils/lp-inspect.d.ts +0 -129
- package/dist/sol/utils/lp-inspect.js +0 -900
- package/dist/sol/utils/transfer.d.ts +0 -125
- package/dist/sol/utils/transfer.js +0 -220
- package/dist/sol/utils/wallet.d.ts +0 -107
- package/dist/sol/utils/wallet.js +0 -210
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Jupiter Recurring API (定投/定期订单)
|
|
3
|
-
* @module sol/dex/jup/recurring
|
|
4
|
-
*
|
|
5
|
-
* Recurring API 提供定投/DCA (Dollar Cost Averaging) 功能
|
|
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
|
-
* // 创建定投:每天用 1 SOL 买入 USDC,共10天
|
|
28
|
-
* const result = await Sol.createRecurringOrder({
|
|
29
|
-
* user: wallet.publicKey.toBase58(),
|
|
30
|
-
* inputMint: 'So11111111111111111111111111111111111111112', // SOL
|
|
31
|
-
* outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
|
|
32
|
-
* params: {
|
|
33
|
-
* time: {
|
|
34
|
-
* inAmount: 1_000_000_000, // 1 SOL
|
|
35
|
-
* numberOfOrders: 10, // 10次
|
|
36
|
-
* interval: 86400, // 每天 (86400秒)
|
|
37
|
-
* }
|
|
38
|
-
* }
|
|
39
|
-
* })
|
|
40
|
-
*
|
|
41
|
-
* // 签名并执行
|
|
42
|
-
* const tx = VersionedTransaction.deserialize(
|
|
43
|
-
* Buffer.from(result.transaction, 'base64')
|
|
44
|
-
* )
|
|
45
|
-
* tx.sign([wallet])
|
|
46
|
-
*
|
|
47
|
-
* await Sol.executeRecurringOrder({
|
|
48
|
-
* requestId: result.requestId,
|
|
49
|
-
* signedTransaction: Buffer.from(tx.serialize()).toString('base64'),
|
|
50
|
-
* })
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
export async function createRecurringOrder(params, config) {
|
|
54
|
-
return jupPost('/recurring/v1/createOrder', params, config);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* 创建简单定投订单(时间模式)
|
|
58
|
-
*
|
|
59
|
-
* @param user 用户地址
|
|
60
|
-
* @param inputMint 输入代币 Mint
|
|
61
|
-
* @param outputMint 输出代币 Mint
|
|
62
|
-
* @param inAmount 每次投入数量 (最小单位)
|
|
63
|
-
* @param numberOfOrders 订单次数
|
|
64
|
-
* @param intervalSeconds 间隔时间 (秒)
|
|
65
|
-
* @param options 可选参数
|
|
66
|
-
* @param config Jupiter 配置
|
|
67
|
-
* @returns 创建订单响应
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
* ```typescript
|
|
71
|
-
* // 每天定投 1 SOL 买 USDC,共30天
|
|
72
|
-
* const result = await Sol.createSimpleRecurringOrder(
|
|
73
|
-
* wallet.publicKey.toBase58(),
|
|
74
|
-
* 'So11111111111111111111111111111111111111112', // SOL
|
|
75
|
-
* 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
|
|
76
|
-
* 1_000_000_000, // 1 SOL
|
|
77
|
-
* 30, // 30次
|
|
78
|
-
* 86400, // 每天
|
|
79
|
-
* )
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
82
|
-
export async function createSimpleRecurringOrder(user, inputMint, outputMint, inAmount, numberOfOrders, intervalSeconds, options, config) {
|
|
83
|
-
return createRecurringOrder({
|
|
84
|
-
user,
|
|
85
|
-
inputMint,
|
|
86
|
-
outputMint,
|
|
87
|
-
params: {
|
|
88
|
-
time: {
|
|
89
|
-
inAmount,
|
|
90
|
-
numberOfOrders,
|
|
91
|
-
interval: intervalSeconds,
|
|
92
|
-
maxPrice: options?.maxPrice,
|
|
93
|
-
minPrice: options?.minPrice,
|
|
94
|
-
startAt: options?.startAt,
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}, config);
|
|
98
|
-
}
|
|
99
|
-
// ============================================================================
|
|
100
|
-
// 便捷的时间间隔常量
|
|
101
|
-
// ============================================================================
|
|
102
|
-
/** 预设时间间隔 (秒) */
|
|
103
|
-
export const RECURRING_INTERVALS = {
|
|
104
|
-
/** 每分钟 */
|
|
105
|
-
MINUTE: 60,
|
|
106
|
-
/** 每小时 */
|
|
107
|
-
HOUR: 3600,
|
|
108
|
-
/** 每天 */
|
|
109
|
-
DAY: 86400,
|
|
110
|
-
/** 每周 */
|
|
111
|
-
WEEK: 604800,
|
|
112
|
-
/** 每月 (30天) */
|
|
113
|
-
MONTH: 2592000,
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* 创建每日定投
|
|
117
|
-
*/
|
|
118
|
-
export async function createDailyRecurring(user, inputMint, outputMint, inAmount, days, config) {
|
|
119
|
-
return createSimpleRecurringOrder(user, inputMint, outputMint, inAmount, days, RECURRING_INTERVALS.DAY, undefined, config);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* 创建每周定投
|
|
123
|
-
*/
|
|
124
|
-
export async function createWeeklyRecurring(user, inputMint, outputMint, inAmount, weeks, config) {
|
|
125
|
-
return createSimpleRecurringOrder(user, inputMint, outputMint, inAmount, weeks, RECURRING_INTERVALS.WEEK, undefined, config);
|
|
126
|
-
}
|
|
127
|
-
// ============================================================================
|
|
128
|
-
// Cancel Order - 取消订单
|
|
129
|
-
// ============================================================================
|
|
130
|
-
/**
|
|
131
|
-
* 取消定投订单
|
|
132
|
-
*
|
|
133
|
-
* @param params 取消参数
|
|
134
|
-
* @param config Jupiter 配置
|
|
135
|
-
* @returns 取消订单响应
|
|
136
|
-
*
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const result = await Sol.cancelRecurringOrder({
|
|
140
|
-
* user: wallet.publicKey.toBase58(),
|
|
141
|
-
* order: 'orderAccountAddress',
|
|
142
|
-
* recurringType: 'time',
|
|
143
|
-
* })
|
|
144
|
-
*
|
|
145
|
-
* // 签名并执行
|
|
146
|
-
* const tx = VersionedTransaction.deserialize(
|
|
147
|
-
* Buffer.from(result.transaction, 'base64')
|
|
148
|
-
* )
|
|
149
|
-
* tx.sign([wallet])
|
|
150
|
-
*
|
|
151
|
-
* await Sol.executeRecurringOrder({
|
|
152
|
-
* requestId: result.requestId,
|
|
153
|
-
* signedTransaction: Buffer.from(tx.serialize()).toString('base64'),
|
|
154
|
-
* })
|
|
155
|
-
* ```
|
|
156
|
-
*/
|
|
157
|
-
export async function cancelRecurringOrder(params, config) {
|
|
158
|
-
return jupPost('/recurring/v1/cancelOrder', params, config);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* 快捷取消时间模式定投订单
|
|
162
|
-
*
|
|
163
|
-
* @param user 用户地址
|
|
164
|
-
* @param order 订单账户地址
|
|
165
|
-
* @param config Jupiter 配置
|
|
166
|
-
* @returns 取消订单响应
|
|
167
|
-
*/
|
|
168
|
-
export async function cancelTimeRecurringOrder(user, order, config) {
|
|
169
|
-
return cancelRecurringOrder({
|
|
170
|
-
user,
|
|
171
|
-
order,
|
|
172
|
-
recurringType: 'time',
|
|
173
|
-
}, config);
|
|
174
|
-
}
|
|
175
|
-
// ============================================================================
|
|
176
|
-
// Execute - 执行交易
|
|
177
|
-
// ============================================================================
|
|
178
|
-
/**
|
|
179
|
-
* 执行已签名的定投订单交易
|
|
180
|
-
*
|
|
181
|
-
* @param params 执行参数
|
|
182
|
-
* @param config Jupiter 配置
|
|
183
|
-
* @returns 执行结果
|
|
184
|
-
*/
|
|
185
|
-
export async function executeRecurringOrder(params, config) {
|
|
186
|
-
return jupPost('/recurring/v1/execute', params, config);
|
|
187
|
-
}
|
|
188
|
-
// ============================================================================
|
|
189
|
-
// Get Orders - 获取订单
|
|
190
|
-
// ============================================================================
|
|
191
|
-
/**
|
|
192
|
-
* 获取用户的定投订单
|
|
193
|
-
*
|
|
194
|
-
* @param params 查询参数
|
|
195
|
-
* @param config Jupiter 配置
|
|
196
|
-
* @returns 订单列表响应(含分页)
|
|
197
|
-
*
|
|
198
|
-
* @example
|
|
199
|
-
* ```typescript
|
|
200
|
-
* const response = await Sol.getRecurringOrders({
|
|
201
|
-
* user: wallet.publicKey.toBase58(),
|
|
202
|
-
* recurringType: 'time',
|
|
203
|
-
* orderStatus: 'active',
|
|
204
|
-
* page: 1,
|
|
205
|
-
* })
|
|
206
|
-
*
|
|
207
|
-
* console.log(`共 ${response.totalPages} 页`)
|
|
208
|
-
* response.time?.forEach(order => {
|
|
209
|
-
* console.log(`订单: ${order.orderKey}`)
|
|
210
|
-
* console.log(` 每周期: ${order.inAmountPerCycle}`)
|
|
211
|
-
* console.log(` 已用: ${order.inUsed}`)
|
|
212
|
-
* console.log(` 已收: ${order.outReceived}`)
|
|
213
|
-
* console.log(` 交易数: ${order.trades.length}`)
|
|
214
|
-
* })
|
|
215
|
-
* ```
|
|
216
|
-
*/
|
|
217
|
-
export async function getRecurringOrders(params, config) {
|
|
218
|
-
const queryParams = {
|
|
219
|
-
user: params.user,
|
|
220
|
-
recurringType: params.recurringType,
|
|
221
|
-
orderStatus: params.orderStatus,
|
|
222
|
-
};
|
|
223
|
-
if (params.page)
|
|
224
|
-
queryParams.page = params.page;
|
|
225
|
-
if (params.mint)
|
|
226
|
-
queryParams.mint = params.mint;
|
|
227
|
-
if (params.includeFailedTx !== undefined) {
|
|
228
|
-
queryParams.includeFailedTx = params.includeFailedTx;
|
|
229
|
-
}
|
|
230
|
-
return jupGet('/recurring/v1/getRecurringOrders', queryParams, config);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* 获取用户的活跃时间模式定投订单
|
|
234
|
-
*
|
|
235
|
-
* @param user 用户地址
|
|
236
|
-
* @param page 页码
|
|
237
|
-
* @param config Jupiter 配置
|
|
238
|
-
* @returns 订单列表响应
|
|
239
|
-
*/
|
|
240
|
-
export async function getActiveTimeRecurringOrders(user, page = 1, config) {
|
|
241
|
-
return getRecurringOrders({
|
|
242
|
-
user,
|
|
243
|
-
recurringType: 'time',
|
|
244
|
-
orderStatus: 'active',
|
|
245
|
-
page,
|
|
246
|
-
}, config);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* 获取用户的历史时间模式定投订单
|
|
250
|
-
*
|
|
251
|
-
* @param user 用户地址
|
|
252
|
-
* @param page 页码
|
|
253
|
-
* @param config Jupiter 配置
|
|
254
|
-
* @returns 订单列表响应
|
|
255
|
-
*/
|
|
256
|
-
export async function getHistoryTimeRecurringOrders(user, page = 1, config) {
|
|
257
|
-
return getRecurringOrders({
|
|
258
|
-
user,
|
|
259
|
-
recurringType: 'time',
|
|
260
|
-
orderStatus: 'history',
|
|
261
|
-
page,
|
|
262
|
-
}, config);
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* 获取所有活跃时间模式定投订单(自动分页)
|
|
266
|
-
*
|
|
267
|
-
* @param user 用户地址
|
|
268
|
-
* @param config Jupiter 配置
|
|
269
|
-
* @returns 所有活跃订单
|
|
270
|
-
*/
|
|
271
|
-
export async function getAllActiveTimeRecurringOrders(user, config) {
|
|
272
|
-
const allOrders = [];
|
|
273
|
-
let page = 1;
|
|
274
|
-
while (true) {
|
|
275
|
-
const response = await getActiveTimeRecurringOrders(user, page, config);
|
|
276
|
-
if (response.time) {
|
|
277
|
-
allOrders.push(...response.time);
|
|
278
|
-
}
|
|
279
|
-
if (page >= response.totalPages)
|
|
280
|
-
break;
|
|
281
|
-
page++;
|
|
282
|
-
}
|
|
283
|
-
return allOrders;
|
|
284
|
-
}
|
|
285
|
-
// ============================================================================
|
|
286
|
-
// 便捷方法
|
|
287
|
-
// ============================================================================
|
|
288
|
-
/**
|
|
289
|
-
* 计算定投总投入
|
|
290
|
-
*
|
|
291
|
-
* @param inAmount 每次投入数量
|
|
292
|
-
* @param numberOfOrders 订单次数
|
|
293
|
-
* @returns 总投入数量
|
|
294
|
-
*/
|
|
295
|
-
export function calculateTotalInvestment(inAmount, numberOfOrders) {
|
|
296
|
-
return inAmount * numberOfOrders;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* 计算定投周期
|
|
300
|
-
*
|
|
301
|
-
* @param intervalSeconds 间隔时间 (秒)
|
|
302
|
-
* @param numberOfOrders 订单次数
|
|
303
|
-
* @returns 总持续时间 (秒)
|
|
304
|
-
*/
|
|
305
|
-
export function calculateTotalDuration(intervalSeconds, numberOfOrders) {
|
|
306
|
-
return intervalSeconds * (numberOfOrders - 1);
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* 估算定投结束时间
|
|
310
|
-
*
|
|
311
|
-
* @param intervalSeconds 间隔时间 (秒)
|
|
312
|
-
* @param numberOfOrders 订单次数
|
|
313
|
-
* @param startAt 开始时间 (Unix 时间戳,默认为当前时间)
|
|
314
|
-
* @returns 结束时间 (Date)
|
|
315
|
-
*/
|
|
316
|
-
export function estimateEndDate(intervalSeconds, numberOfOrders, startAt) {
|
|
317
|
-
const start = startAt || Math.floor(Date.now() / 1000);
|
|
318
|
-
const duration = calculateTotalDuration(intervalSeconds, numberOfOrders);
|
|
319
|
-
return new Date((start + duration) * 1000);
|
|
320
|
-
}
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Jupiter Send API V1
|
|
3
|
-
* @module sol/dex/jup/send
|
|
4
|
-
*
|
|
5
|
-
* Send API 提供代币发送邀请链接功能
|
|
6
|
-
* 允许创建邀请链接让他人领取代币
|
|
7
|
-
*/
|
|
8
|
-
import type { JupiterConfig } from './types.js';
|
|
9
|
-
/** 创建发送请求参数 */
|
|
10
|
-
export interface CraftSendParams {
|
|
11
|
-
/**
|
|
12
|
-
* 邀请签名者公钥(从邀请码哈希生成)
|
|
13
|
-
* 注意:邀请码需要在客户端生成,请安全保管
|
|
14
|
-
*/
|
|
15
|
-
inviteSigner: string;
|
|
16
|
-
/** 发送者公钥地址 */
|
|
17
|
-
sender: string;
|
|
18
|
-
/** 发送金额(原子单位,如 1 USDC = 1000000) */
|
|
19
|
-
amount: string;
|
|
20
|
-
/** 代币 Mint 地址(默认 WSOL) */
|
|
21
|
-
mint?: string;
|
|
22
|
-
}
|
|
23
|
-
/** 创建发送响应 */
|
|
24
|
-
export interface CraftSendResponse {
|
|
25
|
-
/** Base64 编码的未签名交易 */
|
|
26
|
-
tx: string;
|
|
27
|
-
/** 邀请过期时间 (Unix 时间戳) */
|
|
28
|
-
expiry: string;
|
|
29
|
-
/** 总费用 (lamports) */
|
|
30
|
-
totalFeeLamports: string;
|
|
31
|
-
}
|
|
32
|
-
/** 撤回请求参数 */
|
|
33
|
-
export interface CraftClawbackParams {
|
|
34
|
-
/**
|
|
35
|
-
* 邀请 PDA 地址
|
|
36
|
-
* 通过 "invite" 和邀请签名者公钥派生
|
|
37
|
-
*/
|
|
38
|
-
invitePDA: string;
|
|
39
|
-
/** 发送者公钥地址(将接收撤回的资金) */
|
|
40
|
-
sender: string;
|
|
41
|
-
}
|
|
42
|
-
/** 撤回响应 */
|
|
43
|
-
export interface CraftClawbackResponse {
|
|
44
|
-
/** Base64 编码的未签名交易 */
|
|
45
|
-
tx: string;
|
|
46
|
-
}
|
|
47
|
-
/** 邀请信息 */
|
|
48
|
-
export interface SendInvite {
|
|
49
|
-
/** 邀请签名者公钥 */
|
|
50
|
-
invite_signer: string;
|
|
51
|
-
/** 邀请 PDA 地址 */
|
|
52
|
-
invite_pda: string;
|
|
53
|
-
/** 发送者地址 */
|
|
54
|
-
sender: string;
|
|
55
|
-
/** 过期时间 */
|
|
56
|
-
expiry: string;
|
|
57
|
-
/** 金额 */
|
|
58
|
-
amount: string;
|
|
59
|
-
/** 创建交易签名 */
|
|
60
|
-
creation_tx: string;
|
|
61
|
-
/** 删除交易签名 */
|
|
62
|
-
deletion_tx: string;
|
|
63
|
-
/** 接收者地址 */
|
|
64
|
-
receiver: string;
|
|
65
|
-
/** 操作类型 */
|
|
66
|
-
action: string;
|
|
67
|
-
/** 创建时间 */
|
|
68
|
-
creation_time: string;
|
|
69
|
-
/** 删除时间 */
|
|
70
|
-
deletion_time: string;
|
|
71
|
-
/** 代币 Mint */
|
|
72
|
-
mint: string;
|
|
73
|
-
/** 确认数 */
|
|
74
|
-
confirmed: number;
|
|
75
|
-
}
|
|
76
|
-
/** 邀请列表响应 */
|
|
77
|
-
export interface InviteListResponse {
|
|
78
|
-
/** 邀请列表 */
|
|
79
|
-
invites: SendInvite[];
|
|
80
|
-
/** 是否有更多数据 */
|
|
81
|
-
hasMoreData: boolean;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* 创建发送邀请交易
|
|
85
|
-
*
|
|
86
|
-
* 创建一个邀请链接,让他人可以领取指定数量的代币。
|
|
87
|
-
*
|
|
88
|
-
* @param params 创建参数
|
|
89
|
-
* @param config Jupiter 配置
|
|
90
|
-
* @returns 创建响应
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```typescript
|
|
94
|
-
* import { Sol } from 'four-flap-meme-sdk'
|
|
95
|
-
* import { Keypair } from '@solana/web3.js'
|
|
96
|
-
* import crypto from 'crypto'
|
|
97
|
-
*
|
|
98
|
-
* Sol.setJupiterConfig({ apiKey: 'your-api-key' })
|
|
99
|
-
*
|
|
100
|
-
* // 生成邀请码(客户端生成,安全保管)
|
|
101
|
-
* const inviteCode = crypto.randomBytes(32).toString('hex')
|
|
102
|
-
* const inviteHash = crypto.createHash('sha256').update(inviteCode).digest()
|
|
103
|
-
* const inviteKeypair = Keypair.fromSeed(inviteHash)
|
|
104
|
-
*
|
|
105
|
-
* // 创建发送邀请
|
|
106
|
-
* const result = await Sol.craftSend({
|
|
107
|
-
* inviteSigner: inviteKeypair.publicKey.toBase58(),
|
|
108
|
-
* sender: wallet.publicKey.toBase58(),
|
|
109
|
-
* amount: '1000000', // 1 USDC
|
|
110
|
-
* mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
111
|
-
* })
|
|
112
|
-
*
|
|
113
|
-
* console.log(`过期时间: ${new Date(parseInt(result.expiry) * 1000)}`)
|
|
114
|
-
* console.log(`费用: ${result.totalFeeLamports} lamports`)
|
|
115
|
-
*
|
|
116
|
-
* // 签名交易
|
|
117
|
-
* const tx = VersionedTransaction.deserialize(Buffer.from(result.tx, 'base64'))
|
|
118
|
-
* tx.sign([wallet, inviteKeypair])
|
|
119
|
-
*
|
|
120
|
-
* // 发送交易...
|
|
121
|
-
* // 保存 inviteCode 分享给接收者
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
export declare function craftSend(params: CraftSendParams, config?: JupiterConfig): Promise<CraftSendResponse>;
|
|
125
|
-
/**
|
|
126
|
-
* 创建 SOL 发送邀请
|
|
127
|
-
*
|
|
128
|
-
* @param inviteSigner 邀请签名者公钥
|
|
129
|
-
* @param sender 发送者地址
|
|
130
|
-
* @param amountLamports SOL 数量 (lamports)
|
|
131
|
-
* @param config Jupiter 配置
|
|
132
|
-
* @returns 创建响应
|
|
133
|
-
*/
|
|
134
|
-
export declare function craftSendSol(inviteSigner: string, sender: string, amountLamports: string | number, config?: JupiterConfig): Promise<CraftSendResponse>;
|
|
135
|
-
/**
|
|
136
|
-
* 创建 USDC 发送邀请
|
|
137
|
-
*
|
|
138
|
-
* @param inviteSigner 邀请签名者公钥
|
|
139
|
-
* @param sender 发送者地址
|
|
140
|
-
* @param amountUsdc USDC 数量(原子单位,6位小数)
|
|
141
|
-
* @param config Jupiter 配置
|
|
142
|
-
* @returns 创建响应
|
|
143
|
-
*/
|
|
144
|
-
export declare function craftSendUsdc(inviteSigner: string, sender: string, amountUsdc: string | number, config?: JupiterConfig): Promise<CraftSendResponse>;
|
|
145
|
-
/**
|
|
146
|
-
* 撤回/取消邀请
|
|
147
|
-
*
|
|
148
|
-
* 撤回未领取的邀请,资金返还给发送者。
|
|
149
|
-
*
|
|
150
|
-
* @param params 撤回参数
|
|
151
|
-
* @param config Jupiter 配置
|
|
152
|
-
* @returns 撤回响应
|
|
153
|
-
*
|
|
154
|
-
* @example
|
|
155
|
-
* ```typescript
|
|
156
|
-
* // 撤回邀请
|
|
157
|
-
* const result = await Sol.craftClawback({
|
|
158
|
-
* invitePDA: 'invitePDAAddress...',
|
|
159
|
-
* sender: wallet.publicKey.toBase58(),
|
|
160
|
-
* })
|
|
161
|
-
*
|
|
162
|
-
* // 签名并发送交易
|
|
163
|
-
* const tx = VersionedTransaction.deserialize(Buffer.from(result.tx, 'base64'))
|
|
164
|
-
* tx.sign([wallet])
|
|
165
|
-
* // 发送交易...
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
|
-
export declare function craftClawback(params: CraftClawbackParams, config?: JupiterConfig): Promise<CraftClawbackResponse>;
|
|
169
|
-
/**
|
|
170
|
-
* 获取待处理的邀请
|
|
171
|
-
*
|
|
172
|
-
* 获取发送者创建的尚未被领取或撤回的邀请。
|
|
173
|
-
*
|
|
174
|
-
* @param address 发送者地址
|
|
175
|
-
* @param page 页码(默认 1)
|
|
176
|
-
* @param config Jupiter 配置
|
|
177
|
-
* @returns 邀请列表响应
|
|
178
|
-
*
|
|
179
|
-
* @example
|
|
180
|
-
* ```typescript
|
|
181
|
-
* const pending = await Sol.getPendingInvites(
|
|
182
|
-
* wallet.publicKey.toBase58(),
|
|
183
|
-
* 1,
|
|
184
|
-
* )
|
|
185
|
-
*
|
|
186
|
-
* console.log(`待处理邀请: ${pending.invites.length}`)
|
|
187
|
-
* pending.invites.forEach(invite => {
|
|
188
|
-
* console.log(`金额: ${invite.amount}`)
|
|
189
|
-
* console.log(`过期: ${new Date(parseInt(invite.expiry) * 1000)}`)
|
|
190
|
-
* })
|
|
191
|
-
* ```
|
|
192
|
-
*/
|
|
193
|
-
export declare function getPendingInvites(address: string, page?: number, config?: JupiterConfig): Promise<InviteListResponse>;
|
|
194
|
-
/**
|
|
195
|
-
* 获取所有待处理邀请(自动分页)
|
|
196
|
-
*
|
|
197
|
-
* @param address 发送者地址
|
|
198
|
-
* @param config Jupiter 配置
|
|
199
|
-
* @returns 所有待处理邀请
|
|
200
|
-
*/
|
|
201
|
-
export declare function getAllPendingInvites(address: string, config?: JupiterConfig): Promise<SendInvite[]>;
|
|
202
|
-
/**
|
|
203
|
-
* 获取邀请历史
|
|
204
|
-
*
|
|
205
|
-
* 获取地址相关的所有邀请历史(作为发送者或接收者)。
|
|
206
|
-
*
|
|
207
|
-
* @param address 地址(发送者或接收者)
|
|
208
|
-
* @param page 页码(默认 1)
|
|
209
|
-
* @param config Jupiter 配置
|
|
210
|
-
* @returns 邀请列表响应
|
|
211
|
-
*
|
|
212
|
-
* @example
|
|
213
|
-
* ```typescript
|
|
214
|
-
* const history = await Sol.getInviteHistory(
|
|
215
|
-
* wallet.publicKey.toBase58(),
|
|
216
|
-
* 1,
|
|
217
|
-
* )
|
|
218
|
-
*
|
|
219
|
-
* console.log(`邀请历史: ${history.invites.length}`)
|
|
220
|
-
* history.invites.forEach(invite => {
|
|
221
|
-
* console.log(`${invite.action}: ${invite.amount}`)
|
|
222
|
-
* console.log(` 发送者: ${invite.sender}`)
|
|
223
|
-
* console.log(` 接收者: ${invite.receiver}`)
|
|
224
|
-
* })
|
|
225
|
-
* ```
|
|
226
|
-
*/
|
|
227
|
-
export declare function getInviteHistory(address: string, page?: number, config?: JupiterConfig): Promise<InviteListResponse>;
|
|
228
|
-
/**
|
|
229
|
-
* 获取所有邀请历史(自动分页)
|
|
230
|
-
*
|
|
231
|
-
* @param address 地址
|
|
232
|
-
* @param config Jupiter 配置
|
|
233
|
-
* @returns 所有邀请历史
|
|
234
|
-
*/
|
|
235
|
-
export declare function getAllInviteHistory(address: string, config?: JupiterConfig): Promise<SendInvite[]>;
|
|
236
|
-
/**
|
|
237
|
-
* 获取待处理邀请总金额
|
|
238
|
-
*
|
|
239
|
-
* @param address 发送者地址
|
|
240
|
-
* @param config Jupiter 配置
|
|
241
|
-
* @returns 总金额(按 mint 分组)
|
|
242
|
-
*/
|
|
243
|
-
export declare function getPendingInvitesTotal(address: string, config?: JupiterConfig): Promise<Map<string, bigint>>;
|
|
244
|
-
/**
|
|
245
|
-
* 获取即将过期的邀请
|
|
246
|
-
*
|
|
247
|
-
* @param address 发送者地址
|
|
248
|
-
* @param withinHours 在多少小时内过期(默认 24)
|
|
249
|
-
* @param config Jupiter 配置
|
|
250
|
-
* @returns 即将过期的邀请
|
|
251
|
-
*/
|
|
252
|
-
export declare function getExpiringInvites(address: string, withinHours?: number, config?: JupiterConfig): Promise<SendInvite[]>;
|
|
253
|
-
/**
|
|
254
|
-
* 检查邀请是否已过期
|
|
255
|
-
*
|
|
256
|
-
* @param invite 邀请信息
|
|
257
|
-
* @returns 是否已过期
|
|
258
|
-
*/
|
|
259
|
-
export declare function isInviteExpired(invite: SendInvite): boolean;
|
|
260
|
-
/**
|
|
261
|
-
* 获取邀请剩余时间(秒)
|
|
262
|
-
*
|
|
263
|
-
* @param invite 邀请信息
|
|
264
|
-
* @returns 剩余秒数(已过期返回 0)
|
|
265
|
-
*/
|
|
266
|
-
export declare function getInviteTimeRemaining(invite: SendInvite): number;
|
|
267
|
-
/**
|
|
268
|
-
* 筛选发送的邀请
|
|
269
|
-
*
|
|
270
|
-
* @param invites 邀请列表
|
|
271
|
-
* @param sender 发送者地址
|
|
272
|
-
* @returns 发送的邀请
|
|
273
|
-
*/
|
|
274
|
-
export declare function filterSentInvites(invites: SendInvite[], sender: string): SendInvite[];
|
|
275
|
-
/**
|
|
276
|
-
* 筛选接收的邀请
|
|
277
|
-
*
|
|
278
|
-
* @param invites 邀请列表
|
|
279
|
-
* @param receiver 接收者地址
|
|
280
|
-
* @returns 接收的邀请
|
|
281
|
-
*/
|
|
282
|
-
export declare function filterReceivedInvites(invites: SendInvite[], receiver: string): SendInvite[];
|