feat(swap): add multi-swap command; fix(track): downgrade follow-wallet to normal auth

- Add POST /v1/trade/multi_swap support: new MultiSwapParams interface,
  multiSwap() method, and multi-swap CLI command with full options
  (accounts, input/output amounts, slippage, fees, condition-orders, etc.)
- Fix track follow-wallet: switch from criticalRequest to normalRequest;
  --wallet is now optional (API Key's bound user resolves the follow list)
- Update SKILL.md, cli-usage.md, Readme.md, Readme.zh.md to reflect both changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
David Lau
2026-04-13 20:43:32 +08:00
co-authored by Claude Sonnet 4.6
parent 6d09536349
commit 38bff1aecb
8 changed files with 280 additions and 39 deletions
+28 -1
View File
@@ -97,6 +97,29 @@ export interface StrategyConditionOrder {
drawdown_rate?: string;
}
export interface MultiSwapParams {
chain: string;
accounts: string[];
input_token: string;
output_token: string;
input_amount?: Record<string, string>;
input_amount_bps?: Record<string, string>;
output_amount?: Record<string, string>;
swap_mode?: string;
slippage?: number;
auto_slippage?: boolean;
is_anti_mev?: boolean;
priority_fee?: string;
tip_fee?: string;
auto_tip_fee?: boolean;
max_auto_fee?: string;
gas_price?: string;
max_fee_per_gas?: string;
max_priority_fee_per_gas?: string;
condition_orders?: StrategyConditionOrder[];
sell_ratio_type?: string;
}
export interface StrategyCreateParams {
chain: string;
from_address: string;
@@ -268,7 +291,7 @@ export class OpenApiClient {
}
async getFollowWallet(chain: string, extra: Record<string, string | number | string[]> = {}): Promise<unknown> {
return this.criticalRequest("GET", "/v1/trade/follow_wallet", { chain, ...extra }, null);
return this.normalRequest("GET", "/v1/trade/follow_wallet", { chain, ...extra });
}
async getKol(chain?: string, limit?: number): Promise<unknown> {
@@ -303,6 +326,10 @@ export class OpenApiClient {
return this.criticalRequest("POST", "/v1/trade/swap", {}, params);
}
async multiSwap(params: MultiSwapParams): Promise<unknown> {
return this.criticalRequest("POST", "/v1/trade/multi_swap", {}, params);
}
async queryOrder(orderId: string, chain: string): Promise<unknown> {
return this.criticalRequest("GET", "/v1/trade/query_order", { order_id: orderId, chain }, null);
}