four-flap-meme-sdk 4.1.0 → 4.2.0
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/bundle/four-meme/core/sell-flow.js +6 -6
- package/dist/bundle/four-meme/pancake-proxy/helpers.d.ts +5 -38
- package/dist/bundle/four-meme/pancake-proxy/helpers.js +5 -228
- package/dist/bundle/four-meme/private/sell.js +3 -3
- package/dist/bundle/four-meme/swap-hop-helpers.d.ts +1 -5
- package/dist/bundle/four-meme/swap-hop-helpers.js +1 -63
- package/dist/bundle/four-meme/types/bundle-ops.d.ts +166 -0
- package/dist/bundle/four-meme/types/bundle-ops.js +4 -0
- package/dist/bundle/four-meme/types/buy-first.d.ts +1 -1
- package/dist/bundle/four-meme/types/config.d.ts +95 -0
- package/dist/bundle/four-meme/types/config.js +1 -0
- package/dist/bundle/four-meme/types/core-flow.d.ts +2 -1
- package/dist/bundle/four-meme/types/index.d.ts +5 -611
- package/dist/bundle/four-meme/types/pancake-proxy-types.d.ts +118 -0
- package/dist/bundle/four-meme/types/pancake-proxy-types.js +3 -0
- package/dist/bundle/four-meme/types/swap-types.d.ts +103 -0
- package/dist/bundle/four-meme/types/swap-types.js +1 -0
- package/dist/bundle/four-meme/types/transfer-ops.d.ts +134 -0
- package/dist/bundle/four-meme/types/transfer-ops.js +1 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-multi-wallet.js +2 -2
- package/dist/chains/bsc/pancake/bundle-buy-first.js +2 -2
- package/dist/chains/bsc/pancake/hop-chain.d.ts +1 -18
- package/dist/chains/bsc/pancake/hop-chain.js +1 -229
- package/dist/chains/bsc/pancake/quote.d.ts +10 -2
- package/dist/chains/bsc/pancake/quote.js +14 -6
- package/dist/chains/bsc/pancake/quote.test.js +13 -1
- package/dist/chains/index.d.ts +3 -0
- package/dist/chains/index.js +4 -0
- package/dist/chains/robinhood/constants.d.ts +48 -0
- package/dist/chains/robinhood/constants.js +55 -0
- package/dist/chains/robinhood/index.d.ts +11 -0
- package/dist/chains/robinhood/index.js +9 -0
- package/dist/chains/robinhood/longetf/assets.d.ts +11 -0
- package/dist/chains/robinhood/longetf/assets.js +4 -0
- package/dist/chains/robinhood/longetf/encode.d.ts +41 -0
- package/dist/chains/robinhood/longetf/encode.js +116 -0
- package/dist/chains/robinhood/longetf/index.d.ts +3 -0
- package/dist/chains/robinhood/longetf/index.js +3 -0
- package/dist/chains/robinhood/longetf/launch.d.ts +49 -0
- package/dist/chains/robinhood/longetf/launch.js +64 -0
- package/dist/chains/robinhood/pons-v2/encode.d.ts +62 -0
- package/dist/chains/robinhood/pons-v2/encode.js +115 -0
- package/dist/chains/robinhood/pons-v2/index.d.ts +2 -0
- package/dist/chains/robinhood/pons-v2/index.js +2 -0
- package/dist/chains/robinhood/pons-v2/launch.d.ts +48 -0
- package/dist/chains/robinhood/pons-v2/launch.js +107 -0
- package/dist/chains/robinhood/robinhood.test.d.ts +1 -0
- package/dist/chains/robinhood/robinhood.test.js +103 -0
- package/dist/chains/robinhood/sign.d.ts +20 -0
- package/dist/chains/robinhood/sign.js +31 -0
- package/dist/chains/xlayer/eip7702/types-base.d.ts +44 -0
- package/dist/chains/xlayer/eip7702/types-base.js +4 -0
- package/dist/chains/xlayer/eip7702/types-bundle.d.ts +191 -0
- package/dist/chains/xlayer/eip7702/types-bundle.js +1 -0
- package/dist/chains/xlayer/eip7702/types-create.d.ts +222 -0
- package/dist/chains/xlayer/eip7702/types-create.js +1 -0
- package/dist/chains/xlayer/eip7702/types-transfer.d.ts +124 -0
- package/dist/chains/xlayer/eip7702/types-transfer.js +1 -0
- package/dist/chains/xlayer/eip7702/types.d.ts +4 -578
- package/dist/chains/xlayer/eip7702/types.js +0 -3
- package/dist/chains/xlayer/eoa/eoa-dex-types.d.ts +196 -0
- package/dist/chains/xlayer/eoa/eoa-dex-types.js +1 -0
- package/dist/chains/xlayer/eoa/eoa-swap-types.d.ts +283 -0
- package/dist/chains/xlayer/eoa/eoa-swap-types.js +1 -0
- package/dist/chains/xlayer/eoa/eoa-trade-types.d.ts +300 -0
- package/dist/chains/xlayer/eoa/eoa-trade-types.js +6 -0
- package/dist/chains/xlayer/eoa/eoa-types.d.ts +4 -774
- package/dist/chains/xlayer/eoa/eoa-types.js +0 -5
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +2 -13
- package/dist/chains/xlayer/eoa/hop-chain.d.ts +1 -1
- package/dist/chains/xlayer/eoa/hop-chain.js +4 -83
- package/dist/core/constants/addresses.d.ts +18 -0
- package/dist/core/constants/addresses.js +23 -0
- package/dist/core/constants/chains.d.ts +16 -0
- package/dist/core/constants/chains.js +20 -0
- package/dist/core/constants/gas.d.ts +8 -0
- package/dist/core/constants/gas.js +9 -0
- package/dist/core/constants/index.d.ts +2 -1
- package/dist/core/constants/index.js +2 -1
- package/dist/core/constants/slippage.d.ts +6 -0
- package/dist/core/constants/slippage.js +15 -0
- package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +2 -2
- package/dist/domains/flap/portal-bundle-merkle/pancake-proxy/helpers.d.ts +2 -43
- package/dist/domains/flap/portal-bundle-merkle/pancake-proxy/helpers.js +8 -208
- package/dist/domains/flap/portal-bundle-merkle/private/helpers.js +2 -2
- package/dist/domains/flap/portal-bundle-merkle/private/sell.js +2 -2
- package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +4 -24
- package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +12 -166
- package/dist/domains/flap/portal-bundle-merkle/types-bundle.d.ts +137 -0
- package/dist/domains/flap/portal-bundle-merkle/types-bundle.js +7 -0
- package/dist/domains/flap/portal-bundle-merkle/types-config.d.ts +118 -0
- package/dist/domains/flap/portal-bundle-merkle/types-config.js +4 -0
- package/dist/domains/flap/portal-bundle-merkle/types-pancake.d.ts +118 -0
- package/dist/domains/flap/portal-bundle-merkle/types-pancake.js +4 -0
- package/dist/domains/flap/portal-bundle-merkle/types-transfer.d.ts +70 -0
- package/dist/domains/flap/portal-bundle-merkle/types-transfer.js +1 -0
- package/dist/domains/flap/portal-bundle-merkle/types.d.ts +4 -441
- package/dist/domains/holders/internal/disperse.js +2 -18
- package/dist/domains/lp-inspect/inspect-helpers.d.ts +1 -0
- package/dist/domains/lp-inspect/inspect-helpers.js +3 -16
- package/dist/exports/root-foundations.d.ts +1 -1
- package/dist/exports/root-foundations.js +1 -1
- package/dist/exports/root-robinhood.d.ts +9 -0
- package/dist/exports/root-robinhood.js +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/utils/constants.d.ts +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/hop-chains.d.ts +0 -3
- package/dist/utils/hop-chains.js +4 -5
- package/dist/utils/pancake-router-tx.d.ts +41 -0
- package/dist/utils/pancake-router-tx.js +174 -0
- package/dist/utils/swap-helpers.d.ts +6 -2
- package/dist/utils/swap-helpers.js +24 -4
- package/dist/utils/wallet.js +12 -12
- package/package.json +1 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import type { HandleOpsResult, XLayerConfig } from './aa-types.js';
|
|
2
|
+
export type BuyFirstTradeType = 'FLAP' | 'V2';
|
|
3
|
+
/** ✅ Router 版本类型 */
|
|
4
|
+
export type RouterVersion = 'V2' | 'V3';
|
|
5
|
+
/** ✅ 授权目标类型 */
|
|
6
|
+
export type ApprovalTarget = 'FLAP_PORTAL' | 'V2_ROUTER' | 'V3_ROUTER';
|
|
7
|
+
export interface BuyFirstParams {
|
|
8
|
+
tradeType?: BuyFirstTradeType;
|
|
9
|
+
/** ✅ 新增:Router 版本(V2 或 V3,默认 V2) */
|
|
10
|
+
routerVersion?: RouterVersion;
|
|
11
|
+
/** DEX 标识(仅 V2 时使用,用于选择 Router) */
|
|
12
|
+
dexKey?: string;
|
|
13
|
+
/** 显式指定 Router 地址(仅 V2 时使用) */
|
|
14
|
+
routerAddress?: string;
|
|
15
|
+
/** DEX deadline 分钟数(仅 V2 时使用) */
|
|
16
|
+
deadlineMinutes?: number;
|
|
17
|
+
tokenAddress: string;
|
|
18
|
+
buyerPrivateKeys: string[];
|
|
19
|
+
sellerPrivateKeys: string[];
|
|
20
|
+
/** 本轮总买入资金(OKB 或 quoteToken) */
|
|
21
|
+
buyerFunds: string;
|
|
22
|
+
buyCount?: number;
|
|
23
|
+
sellCount?: number;
|
|
24
|
+
/** ✅ 新增:买入使用的代币地址(零地址或不传表示使用 OKB,非零地址表示使用 ERC20 如 USDT) */
|
|
25
|
+
quoteToken?: string;
|
|
26
|
+
/** ✅ 新增:quoteToken 的精度(默认 18,USDT 在 XLayer 上是 6 位) */
|
|
27
|
+
quoteTokenDecimals?: number;
|
|
28
|
+
/** 报价滑点(仅用于估算 sellAmount),默认 0 */
|
|
29
|
+
slippageBps?: number;
|
|
30
|
+
withdrawToOwner?: boolean;
|
|
31
|
+
withdrawReserve?: string;
|
|
32
|
+
config?: Partial<XLayerConfig>;
|
|
33
|
+
}
|
|
34
|
+
export interface BuyFirstResult {
|
|
35
|
+
buySellResult: HandleOpsResult;
|
|
36
|
+
withdrawResult?: HandleOpsResult;
|
|
37
|
+
finalSellerBalances?: Map<string, bigint>;
|
|
38
|
+
profit?: {
|
|
39
|
+
extractProfit: boolean;
|
|
40
|
+
profitBps: number;
|
|
41
|
+
profitRecipient: string;
|
|
42
|
+
totalProfitWei: string;
|
|
43
|
+
};
|
|
44
|
+
metadata: {
|
|
45
|
+
tradeType: BuyFirstTradeType;
|
|
46
|
+
tokenAddress: string;
|
|
47
|
+
buyerOwners: string[];
|
|
48
|
+
buyerSenders: string[];
|
|
49
|
+
sellerOwners: string[];
|
|
50
|
+
sellerSenders: string[];
|
|
51
|
+
buyAmountsWei: string[];
|
|
52
|
+
sellAmountsWei: string[];
|
|
53
|
+
totalBuyWei: string;
|
|
54
|
+
estimatedTokenOutWei: string;
|
|
55
|
+
slippageBps: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface BuyFirstVolumeParams extends Omit<BuyFirstParams, 'buyerFunds'> {
|
|
59
|
+
buyerFundsPerRound: string;
|
|
60
|
+
rounds: number;
|
|
61
|
+
intervalMs?: number;
|
|
62
|
+
}
|
|
63
|
+
export interface BuyFirstVolumeResult {
|
|
64
|
+
successRounds: number;
|
|
65
|
+
failedRounds: number;
|
|
66
|
+
roundResults: BuyFirstResult[];
|
|
67
|
+
/** 总交易量(OKB wei,按“买入资金*2”统计) */
|
|
68
|
+
totalVolume: bigint;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 外盘(PotatoSwap)交易参数
|
|
72
|
+
*/
|
|
73
|
+
export interface DexSwapParams {
|
|
74
|
+
/** 输入代币地址(零地址表示 OKB) */
|
|
75
|
+
inputToken: string;
|
|
76
|
+
/** 输出代币地址(零地址表示 OKB) */
|
|
77
|
+
outputToken: string;
|
|
78
|
+
/** 输入金额 */
|
|
79
|
+
inputAmount: bigint;
|
|
80
|
+
/** 最小输出金额 */
|
|
81
|
+
minOutputAmount: bigint;
|
|
82
|
+
/** 交易截止时间(默认 20 分钟) */
|
|
83
|
+
deadline?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 外盘交易结果
|
|
87
|
+
*/
|
|
88
|
+
export interface DexSwapResult {
|
|
89
|
+
txHash: string;
|
|
90
|
+
inputAmount: bigint;
|
|
91
|
+
outputAmount: bigint;
|
|
92
|
+
gasUsed: bigint;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 预授权参数
|
|
96
|
+
* 用于提前授权代币,避免在交易时等待授权确认
|
|
97
|
+
*/
|
|
98
|
+
export interface BundlePreApproveParams {
|
|
99
|
+
/** 代币地址 */
|
|
100
|
+
tokenAddress: string;
|
|
101
|
+
/** Owner 私钥列表 */
|
|
102
|
+
privateKeys: string[];
|
|
103
|
+
/** 授权目标(默认 FLAP_PORTAL,可传 Router 地址用于外盘交易) */
|
|
104
|
+
spender?: string;
|
|
105
|
+
/**
|
|
106
|
+
* 是否仅签名(不执行)
|
|
107
|
+
* - true: 返回签名后的 handleOps 交易,由前端发送到服务端广播
|
|
108
|
+
* - false(默认): 直接执行 handleOps
|
|
109
|
+
*/
|
|
110
|
+
signOnly?: boolean;
|
|
111
|
+
/** 配置覆盖 */
|
|
112
|
+
config?: Partial<XLayerConfig>;
|
|
113
|
+
/** Payer 私钥(signOnly=true 时必传,用于支付 gas) */
|
|
114
|
+
payerPrivateKey?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 预授权结果
|
|
118
|
+
*/
|
|
119
|
+
export interface BundlePreApproveResult {
|
|
120
|
+
/** 发送授权交易的数量 */
|
|
121
|
+
approvedCount: number;
|
|
122
|
+
/** 已经授权无需操作的数量 */
|
|
123
|
+
alreadyApprovedCount: number;
|
|
124
|
+
/** 授权交易结果(signOnly=false 时有值) */
|
|
125
|
+
approveResult?: HandleOpsResult;
|
|
126
|
+
/** 每个地址的授权状态详情 */
|
|
127
|
+
details: ApprovalStatusResult[];
|
|
128
|
+
/** signOnly=true 时:签名后的 handleOps 交易(raw signed tx) */
|
|
129
|
+
signedTransactions?: string[];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 授权状态检查结果
|
|
133
|
+
*/
|
|
134
|
+
export interface ApprovalStatusResult {
|
|
135
|
+
/** Owner EOA 地址 */
|
|
136
|
+
owner: string;
|
|
137
|
+
/** AA Sender 地址 */
|
|
138
|
+
sender: string;
|
|
139
|
+
/** 是否已授权(授权额度 >= 代币余额) */
|
|
140
|
+
isApproved: boolean;
|
|
141
|
+
/** 当前授权额度 */
|
|
142
|
+
currentAllowance: bigint;
|
|
143
|
+
/** 当前代币余额 */
|
|
144
|
+
tokenBalance: bigint;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 捆绑买到毕业签名参数
|
|
148
|
+
*/
|
|
149
|
+
export interface BundleGraduateBuyParams {
|
|
150
|
+
/** 代位地址 */
|
|
151
|
+
tokenAddress: string;
|
|
152
|
+
/** 买入钱包私钥数组 */
|
|
153
|
+
privateKeys: string[];
|
|
154
|
+
/** AA Payer 私钥 */
|
|
155
|
+
payerPrivateKey: string;
|
|
156
|
+
/** 分配模式 */
|
|
157
|
+
amountMode: 'average' | 'random' | 'custom';
|
|
158
|
+
/** 平均模式:总买入金额 */
|
|
159
|
+
totalBuyAmount?: number;
|
|
160
|
+
/** 随机模式:最小金额 / 最大金额 */
|
|
161
|
+
minAmount?: number;
|
|
162
|
+
maxAmount?: number;
|
|
163
|
+
/** 自定义模式:地址 -> 金额 */
|
|
164
|
+
walletAmounts?: Record<string, number>;
|
|
165
|
+
/** 是否启用外盘买入(默认 false) */
|
|
166
|
+
enableDexBuy?: boolean;
|
|
167
|
+
/** 内盘钱包地址列表(可选,传入则使用前端分组,不传则 SDK 自动分组) */
|
|
168
|
+
curveAddresses?: string[];
|
|
169
|
+
/** 外盘钱包地址列表(可选) */
|
|
170
|
+
dexAddresses?: string[];
|
|
171
|
+
/** 动态毕业阈值(可选,不传则使用默认 73.38 OKB) */
|
|
172
|
+
graduationAmount?: number;
|
|
173
|
+
/** 配置覆盖 */
|
|
174
|
+
config?: Partial<XLayerConfig>;
|
|
175
|
+
/** 扩展数据(传递给 swapExactInputV3,默认 0x) */
|
|
176
|
+
extensionData?: string;
|
|
177
|
+
/** Payer 起始 nonce */
|
|
178
|
+
payerStartNonce?: number;
|
|
179
|
+
/** beneficiary(默认 payer 地址) */
|
|
180
|
+
beneficiary?: string;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 捆绑买到毕业签名结果
|
|
184
|
+
*/
|
|
185
|
+
export interface BundleGraduateBuyResult {
|
|
186
|
+
/** raw signed tx 列表 */
|
|
187
|
+
signedTransactions: string[];
|
|
188
|
+
/** 元数据 */
|
|
189
|
+
metadata: {
|
|
190
|
+
curveCount: number;
|
|
191
|
+
dexCount: number;
|
|
192
|
+
curveTotalAmount: string;
|
|
193
|
+
dexTotalAmount: string;
|
|
194
|
+
tokenAddress: string;
|
|
195
|
+
};
|
|
196
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import type { HandleOpsResult, XLayerConfig } from './aa-types.js';
|
|
2
|
+
import type { BundleSwapParams } from './eoa-trade-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* 捆绑换手签名参数(仅签名 handleOps 交易;可选追加 route 尾交易)
|
|
5
|
+
* - 返回 raw signed tx,可按“BSC 捆绑”模式交给后端/Builder 提交
|
|
6
|
+
*/
|
|
7
|
+
export interface BundleSwapSignParams extends BundleSwapParams {
|
|
8
|
+
/** Payer 私钥(用于签 handleOps 交易);默认 sellerPrivateKey */
|
|
9
|
+
payerPrivateKey?: string;
|
|
10
|
+
/** beneficiary(默认 payer 地址) */
|
|
11
|
+
beneficiary?: string;
|
|
12
|
+
/** 可选:指定 payer 起始 nonce(不传则用 pending nonce) */
|
|
13
|
+
payerStartNonce?: number;
|
|
14
|
+
/** 可选:覆盖 handleOps gasLimit(不传则自动 estimate,失败回退) */
|
|
15
|
+
handleOpsGasLimit?: bigint;
|
|
16
|
+
/**
|
|
17
|
+
* 可选:routeAddress(如果你的后端要求“route 尾交易”,则传入)
|
|
18
|
+
* - SDK 会自动构造 nonce+1 的空转账 tailTx
|
|
19
|
+
*/
|
|
20
|
+
routeAddress?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 捆绑换手签名结果
|
|
24
|
+
*/
|
|
25
|
+
export interface BundleSwapSignResult {
|
|
26
|
+
/** raw signed tx 列表(handleOps 在前;如果有 routeAddress 则 tailTx 在后) */
|
|
27
|
+
signedTransactions: string[];
|
|
28
|
+
/** 元数据(便于前端显示) */
|
|
29
|
+
metadata: {
|
|
30
|
+
payer: string;
|
|
31
|
+
beneficiary: string;
|
|
32
|
+
sellerOwner: string;
|
|
33
|
+
sellerSender: string;
|
|
34
|
+
buyerOwner: string;
|
|
35
|
+
buyerSender: string;
|
|
36
|
+
sellAmountWei: string;
|
|
37
|
+
buyAmountWei: string;
|
|
38
|
+
hasApprove: boolean;
|
|
39
|
+
routeAddress?: string;
|
|
40
|
+
/** 是否提取利润 */
|
|
41
|
+
extractProfit?: boolean;
|
|
42
|
+
/** 利润比例 bps */
|
|
43
|
+
profitBps?: number;
|
|
44
|
+
/** 利润接收地址 */
|
|
45
|
+
profitRecipient?: string;
|
|
46
|
+
/** 预估利润(OKB wei) */
|
|
47
|
+
profitWei?: string;
|
|
48
|
+
/** 预估卖出输出(OKB wei) */
|
|
49
|
+
quotedSellOutWei?: string;
|
|
50
|
+
/** ✅ AA:转账多跳数(仅 xlayer AA 使用;不影响 BSC) */
|
|
51
|
+
disperseHopCount?: string;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 批量捆绑换手参数(一卖多买)
|
|
56
|
+
*/
|
|
57
|
+
export interface BundleBatchSwapParams {
|
|
58
|
+
/** 交易类型:FLAP (内盘), V2 (外盘 V2), V3 (外盘 V3) */
|
|
59
|
+
tradeType?: 'FLAP' | 'V2' | 'V3';
|
|
60
|
+
/** DEX 标识(用于选择正确的 Router) */
|
|
61
|
+
dexKey?: string;
|
|
62
|
+
/** 显式指定 Router 地址(若不传则由 SDK 根据 dexKey 自动决定) */
|
|
63
|
+
routerAddress?: string;
|
|
64
|
+
/** LP 费率档位 (V3 专用): 0=STANDARD (0.25%), 1=LOW (0.01%), 2=HIGH (1%) */
|
|
65
|
+
lpFeeProfile?: number;
|
|
66
|
+
/** 代币地址 */
|
|
67
|
+
tokenAddress: string;
|
|
68
|
+
/** 卖方 Owner 私钥 */
|
|
69
|
+
sellerPrivateKey: string;
|
|
70
|
+
/** 买方 Owner 私钥列表 */
|
|
71
|
+
buyerPrivateKeys: string[];
|
|
72
|
+
/** 每个买方的买入 OKB 数量(字符串,长度必须与 buyerPrivateKeys 一致) */
|
|
73
|
+
buyAmountsOkb: string[];
|
|
74
|
+
/** 卖出数量(人类可读字符串,按代币 decimals 解析);优先于 sellPercent */
|
|
75
|
+
sellAmount?: string;
|
|
76
|
+
/** 卖出比例(0-100,默认 100) */
|
|
77
|
+
sellPercent?: number;
|
|
78
|
+
/** ✅ ERC20 稳定币支持(对齐 BSC):输出代币地址(如 USDT/USDC/USDT0),不传则使用原生代币 OKB */
|
|
79
|
+
quoteToken?: string;
|
|
80
|
+
/** ✅ ERC20 稳定币精度(默认 6,XLayer USDT/USDC/USDT0 都是 6 位精度) */
|
|
81
|
+
quoteTokenDecimals?: number;
|
|
82
|
+
/**
|
|
83
|
+
* ✅ 资金利用率模式(对齐 BSC)
|
|
84
|
+
* - true(默认):卖出 → 分发 → 买入(资金来自卖出所得,对应 BSC flapQuickBatchSwapMerkle)
|
|
85
|
+
* - false:卖出 → 买入(买方自带资金,对应 BSC flapBatchSwapMerkle)
|
|
86
|
+
*/
|
|
87
|
+
capitalMode?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* ✅ 转账多跳数(AA 专用,仅 capitalMode=true 时生效)
|
|
90
|
+
*
|
|
91
|
+
* 用途:卖出所得 OKB 需要在同一笔 handleOps 内分发给多个买方 AA(Sender)。
|
|
92
|
+
* - 0:卖方 AA(Sender) 直接分发给所有买方 AA(Sender)
|
|
93
|
+
* - >0:按"多跳"方式分发(实现位于 xlayer/*,不会影响 BSC bundle/merkle)
|
|
94
|
+
*/
|
|
95
|
+
disperseHopCount?: number;
|
|
96
|
+
/**
|
|
97
|
+
* ✅ 前端传入的 gasPrice(Gwei)
|
|
98
|
+
* - 如果不传,SDK 会调用 getFeeData 获取当前 gas 价格
|
|
99
|
+
* - 建议:前端获取当前 gas 价格后传入,确保 prefund 计算一致
|
|
100
|
+
*/
|
|
101
|
+
gasPriceGwei?: number;
|
|
102
|
+
/**
|
|
103
|
+
* ✅ 买入操作的 callGasLimit
|
|
104
|
+
* - DEX 买入默认 650,000
|
|
105
|
+
* - Portal 买入默认 450,000
|
|
106
|
+
* - 前端可根据实际情况调整
|
|
107
|
+
*/
|
|
108
|
+
buyerCallGasLimit?: bigint;
|
|
109
|
+
/**
|
|
110
|
+
* ✅ 多跳转账的 callGasLimit
|
|
111
|
+
* - 默认 150,000
|
|
112
|
+
* - 前端可根据实际情况调整
|
|
113
|
+
*/
|
|
114
|
+
hopCallGasLimit?: bigint;
|
|
115
|
+
/**
|
|
116
|
+
* ✅ 买入模式(V3 交易专用)
|
|
117
|
+
* - 'exactInput'(默认):花费固定 OKB,买尽可能多的代币(保证交易成功,但代币数量不确定)
|
|
118
|
+
* - 'exactOutput':买固定数量代币,花尽可能少的 OKB(保证买到预期数量,但可能失败)
|
|
119
|
+
*
|
|
120
|
+
* 注意:
|
|
121
|
+
* - exactOutput 需要配合 buyAmountsToken 使用
|
|
122
|
+
* - 如果 OKB 不足以买到预期数量,交易会失败
|
|
123
|
+
* - V2 交易不支持 exactOutput,会自动回退到 exactInput
|
|
124
|
+
*/
|
|
125
|
+
buyMode?: 'exactInput' | 'exactOutput';
|
|
126
|
+
/**
|
|
127
|
+
* ✅ 每个买方要买入的代币数量(字符串,用于 exactOutput 模式)
|
|
128
|
+
* - 长度必须与 buyerPrivateKeys 一致
|
|
129
|
+
* - 仅在 buyMode = 'exactOutput' 时使用
|
|
130
|
+
* - 代币数量会按代币的 decimals 解析
|
|
131
|
+
*/
|
|
132
|
+
buyAmountsToken?: string[];
|
|
133
|
+
/** 配置覆盖 */
|
|
134
|
+
config?: Partial<XLayerConfig>;
|
|
135
|
+
}
|
|
136
|
+
export interface BundleBatchSwapResult {
|
|
137
|
+
swapResult: HandleOpsResult;
|
|
138
|
+
metadata: {
|
|
139
|
+
sellerOwner: string;
|
|
140
|
+
sellerSender: string;
|
|
141
|
+
buyerOwners: string[];
|
|
142
|
+
buyerSenders: string[];
|
|
143
|
+
sellAmountWei: string;
|
|
144
|
+
buyAmountsWei: string[];
|
|
145
|
+
hasApprove: boolean;
|
|
146
|
+
routeAddress?: string;
|
|
147
|
+
/** 是否提取利润 */
|
|
148
|
+
extractProfit?: boolean;
|
|
149
|
+
/** 利润比例 bps */
|
|
150
|
+
profitBps?: number;
|
|
151
|
+
/** 利润接收地址 */
|
|
152
|
+
profitRecipient?: string;
|
|
153
|
+
/** 预估利润(OKB wei) */
|
|
154
|
+
profitWei?: string;
|
|
155
|
+
/** 预估卖出输出(OKB wei) */
|
|
156
|
+
quotedSellOutWei?: string;
|
|
157
|
+
/** ✅ AA:转账多跳数(仅 xlayer AA 使用;不影响 BSC) */
|
|
158
|
+
disperseHopCount?: string;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export interface BundleBatchSwapSignParams extends BundleBatchSwapParams {
|
|
162
|
+
payerPrivateKey?: string;
|
|
163
|
+
beneficiary?: string;
|
|
164
|
+
payerStartNonce?: number;
|
|
165
|
+
handleOpsGasLimit?: bigint;
|
|
166
|
+
routeAddress?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface BundleBatchSwapSignResult {
|
|
169
|
+
signedTransactions: string[];
|
|
170
|
+
/** ✅ 多跳中转钱包列表(用作资金中转的买方钱包,交易失败时可找回资金) */
|
|
171
|
+
hopWallets?: Array<{
|
|
172
|
+
address: string;
|
|
173
|
+
privateKey: string;
|
|
174
|
+
}>;
|
|
175
|
+
metadata: {
|
|
176
|
+
payer: string;
|
|
177
|
+
beneficiary: string;
|
|
178
|
+
sellerOwner: string;
|
|
179
|
+
sellerSender: string;
|
|
180
|
+
buyerOwners: string[];
|
|
181
|
+
buyerSenders: string[];
|
|
182
|
+
sellAmountWei: string;
|
|
183
|
+
buyAmountsWei: string[];
|
|
184
|
+
hasApprove: boolean;
|
|
185
|
+
routeAddress?: string;
|
|
186
|
+
/** 是否提取利润 */
|
|
187
|
+
extractProfit?: boolean;
|
|
188
|
+
/** 利润比例 bps */
|
|
189
|
+
profitBps?: number;
|
|
190
|
+
/** 利润接收地址 */
|
|
191
|
+
profitRecipient?: string;
|
|
192
|
+
/** 预估利润(OKB wei) */
|
|
193
|
+
profitWei?: string;
|
|
194
|
+
/** 预估卖出输出(OKB wei) */
|
|
195
|
+
quotedSellOutWei?: string;
|
|
196
|
+
/** ✅ AA:转账多跳数(仅 xlayer AA 使用;不影响 BSC) */
|
|
197
|
+
disperseHopCount?: string;
|
|
198
|
+
/** ✅ 利润刮取模式:payer-eoa=由Payer EOA独立刮取,seller-aa=由Seller AA在分发中刮取 */
|
|
199
|
+
profitMode?: 'payer-eoa' | 'seller-aa';
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 刷量参数
|
|
204
|
+
*/
|
|
205
|
+
export interface VolumeParams {
|
|
206
|
+
/** 代币地址 */
|
|
207
|
+
tokenAddress: string;
|
|
208
|
+
/** Owner 私钥列表 */
|
|
209
|
+
privateKeys: string[];
|
|
210
|
+
/** 每轮买入金额(OKB) */
|
|
211
|
+
buyAmountPerRound: string;
|
|
212
|
+
/** 刷量轮数 */
|
|
213
|
+
rounds: number;
|
|
214
|
+
/** 每轮间隔时间(毫秒,默认 3000) */
|
|
215
|
+
intervalMs?: number;
|
|
216
|
+
/** 每轮是否立即卖出(默认 true) */
|
|
217
|
+
sellImmediately?: boolean;
|
|
218
|
+
/** 配置覆盖 */
|
|
219
|
+
config?: Partial<XLayerConfig>;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* 捆绑买入结果
|
|
223
|
+
*/
|
|
224
|
+
export interface BundleBuyResult {
|
|
225
|
+
/** 买入交易结果 */
|
|
226
|
+
buyResult: HandleOpsResult;
|
|
227
|
+
/** 转账交易结果(如果 transferBackToOwner) */
|
|
228
|
+
transferResult?: HandleOpsResult;
|
|
229
|
+
/** 各 sender 的代币余额 */
|
|
230
|
+
tokenBalances: Map<string, bigint>;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 捆绑卖出结果
|
|
234
|
+
*/
|
|
235
|
+
export interface BundleSellResult {
|
|
236
|
+
/** 卖出交易结果 */
|
|
237
|
+
sellResult: HandleOpsResult;
|
|
238
|
+
/** 归集交易结果(如果 withdrawToOwner) */
|
|
239
|
+
withdrawResult?: HandleOpsResult;
|
|
240
|
+
/**
|
|
241
|
+
* 利润汇总(如果 withdrawToOwner=true 且实际归集金额>0)
|
|
242
|
+
* - 注意:AA 的 handleOps tx.value 永远是 0;利润是“从 AA Sender 余额里拆分转走”的金额
|
|
243
|
+
*/
|
|
244
|
+
profit?: {
|
|
245
|
+
extractProfit: boolean;
|
|
246
|
+
profitBps: number;
|
|
247
|
+
profitRecipient: string;
|
|
248
|
+
totalProfitWei: string;
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 捆绑买卖结果
|
|
253
|
+
*/
|
|
254
|
+
export interface BundleBuySellResult {
|
|
255
|
+
/** 买入阶段结果 */
|
|
256
|
+
buyResult: HandleOpsResult;
|
|
257
|
+
/** 卖出阶段结果 */
|
|
258
|
+
sellResult: HandleOpsResult;
|
|
259
|
+
/** 归集阶段结果(如果 withdrawToOwner) */
|
|
260
|
+
withdrawResult?: HandleOpsResult;
|
|
261
|
+
/** 各 sender 的最终 OKB 余额 */
|
|
262
|
+
finalBalances: Map<string, bigint>;
|
|
263
|
+
/** 利润汇总(如果 withdrawToOwner=true 且实际归集金额>0) */
|
|
264
|
+
profit?: {
|
|
265
|
+
extractProfit: boolean;
|
|
266
|
+
profitBps: number;
|
|
267
|
+
profitRecipient: string;
|
|
268
|
+
totalProfitWei: string;
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* 刷量结果
|
|
273
|
+
*/
|
|
274
|
+
export interface VolumeResult {
|
|
275
|
+
/** 成功轮数 */
|
|
276
|
+
successRounds: number;
|
|
277
|
+
/** 失败轮数 */
|
|
278
|
+
failedRounds: number;
|
|
279
|
+
/** 每轮结果 */
|
|
280
|
+
roundResults: BundleBuySellResult[];
|
|
281
|
+
/** 总交易量(OKB) */
|
|
282
|
+
totalVolume: bigint;
|
|
283
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|