mirror of
https://github.com/d0zingcat/solana-agent-kit.git
synced 2026-05-22 07:36:44 +00:00
flash open and close position
This commit is contained in:
@@ -776,13 +776,15 @@ export class SolanaGetWalletAddressTool extends Tool {
|
||||
|
||||
export class SolanaFlashOpenTrade extends Tool {
|
||||
name = "solana_flash_open_trade";
|
||||
description = `Opens a new leveraged trading position on Flash.Trade exchange.
|
||||
description = `This tool can be used to open a new leveraged trading position on Flash.Trade exchange.
|
||||
|
||||
Inputs (input is a JSON string):
|
||||
token: string, one of ["SOL", "BTC", "ETH"] (required)
|
||||
side: string, either "long" or "short" (required)
|
||||
collateralUsd: number, amount in USD for collateral eg 10 (required)
|
||||
leverage: number, eg 5 for 5 times the leverage on collateral amount (required)`;
|
||||
Inputs ( input is a JSON string ):
|
||||
token: string, eg "SOL", "BTC", "ETH" (required)
|
||||
type: string, eg "long", "short" (required)
|
||||
collateral: number, eg 10, 100, 1000 (required)
|
||||
leverage: number, eg 5, 10, 20 (required)
|
||||
|
||||
Example prompt is Open a 20x leveraged trade for SOL on long side using flash trade with 500 USD as collateral`;
|
||||
|
||||
constructor(private solanaKit: SolanaAgentKit) {
|
||||
super();
|
||||
@@ -792,29 +794,40 @@ export class SolanaFlashOpenTrade extends Tool {
|
||||
try {
|
||||
const parsedInput = JSON.parse(input);
|
||||
|
||||
console.log(parsedInput);
|
||||
|
||||
// Validate input parameters
|
||||
if (!parsedInput.token) {
|
||||
throw new Error("Token is required");
|
||||
throw new Error("Token is required, received: " + parsedInput.token);
|
||||
}
|
||||
if (!["SOL", "BTC", "ETH"].includes(parsedInput.token)) {
|
||||
throw new Error('Token must be one of ["SOL", "BTC", "ETH"]');
|
||||
if (!["SOL", "BTC", "ETH", "USDC"].includes(parsedInput.token)) {
|
||||
throw new Error(
|
||||
'Token must be one of ["SOL", "BTC", "ETH", "USDC"], received: ' +
|
||||
parsedInput.token,
|
||||
);
|
||||
}
|
||||
if (!["long", "short"].includes(parsedInput.side)) {
|
||||
throw new Error('Side must be either "long" or "short"');
|
||||
if (!["long", "short"].includes(parsedInput.type)) {
|
||||
throw new Error(
|
||||
'Type must be either "long" or "short", received: ' +
|
||||
parsedInput.type,
|
||||
);
|
||||
}
|
||||
if (!parsedInput.collateralUsd || parsedInput.collateralUsd <= 0) {
|
||||
throw new Error("Collateral USD amount must be positive");
|
||||
if (!parsedInput.collateral || parsedInput.collateral <= 0) {
|
||||
throw new Error(
|
||||
"Collateral amount must be positive, received: " +
|
||||
parsedInput.collateral,
|
||||
);
|
||||
}
|
||||
if (!parsedInput.leverage || parsedInput.leverage <= 0) {
|
||||
throw new Error("Leverage must be positive");
|
||||
throw new Error(
|
||||
"Leverage must be positive, received: " + parsedInput.leverage,
|
||||
);
|
||||
}
|
||||
|
||||
console.log(parsedInput);
|
||||
|
||||
const tx = await this.solanaKit.flashOpenTrade({
|
||||
token: parsedInput.token,
|
||||
side: parsedInput.side,
|
||||
collateralUsd: parsedInput.collateralUsd,
|
||||
side: parsedInput.type,
|
||||
collateralUsd: parsedInput.collateral,
|
||||
leverage: parsedInput.leverage,
|
||||
});
|
||||
|
||||
@@ -823,8 +836,8 @@ export class SolanaFlashOpenTrade extends Tool {
|
||||
message: "Flash trade position opened successfully",
|
||||
transaction: tx,
|
||||
token: parsedInput.token,
|
||||
side: parsedInput.side,
|
||||
collateralUsd: parsedInput.collateralUsd,
|
||||
side: parsedInput.type,
|
||||
collateral: parsedInput.collateral,
|
||||
leverage: parsedInput.leverage,
|
||||
});
|
||||
} catch (error: any) {
|
||||
@@ -839,17 +852,13 @@ export class SolanaFlashOpenTrade extends Tool {
|
||||
|
||||
export class SolanaFlashCloseTrade extends Tool {
|
||||
name = "solana_flash_close_trade";
|
||||
description = `Closes an existing leveraged trading position on Flash.Trade exchange.
|
||||
description = `Close an existing leveraged trading position on Flash.Trade exchange.
|
||||
|
||||
Inputs (input is a JSON string):
|
||||
token: string, one of ["SOL", "BTC", "ETH"] (required)
|
||||
side: string, either "long" or "short" (required)
|
||||
|
||||
Example:
|
||||
{
|
||||
"token": "SOL",
|
||||
"side": "long"
|
||||
}`;
|
||||
Inputs ( input is a JSON string ):
|
||||
token: string, eg "SOL", "BTC", "ETH" (required)
|
||||
side: string, eg "long", "short" (required)
|
||||
|
||||
Example prompt is Close a 20x leveraged trade for SOL on long side`;
|
||||
|
||||
constructor(private solanaKit: SolanaAgentKit) {
|
||||
super();
|
||||
|
||||
Reference in New Issue
Block a user