前提条件
- LaserSell APIキー(こちらで取得)。
- Solanaキーペアファイル(バイトのJSON配列)。
- Node.js 18+(TypeScript例の場合)または好みの言語のランタイム。
AIを使ってコーディングしていますか? エディタにLaserSell MCPサーバーを追加すると、AIアシスタントがリアルタイムでLaserSellドキュメントを検索できます。Claude Code、Claude Desktop、Cursor、Windsurfで動作します。
例1: 売却トランザクションの構築、署名、送信
この例では、LaserSell APIを呼び出して未署名の売却トランザクションを構築し、ローカルで署名して、Helius Senderを通じて送信します。
import { readFile } from "node:fs/promises";
import { Keypair } from "@solana/web3.js";
import {
ExitApiClient,
sendTransaction,
sendTargetHeliusSender,
signUnsignedTx,
type BuildSellTxRequest,
} from "@lasersell/lasersell-sdk";
const apiKey = process.env.LASERSELL_API_KEY!;
const keypairPath = "./keypair.json";
// Load keypair
const raw = await readFile(keypairPath, "utf8");
const keypair = Keypair.fromSecretKey(
Uint8Array.from(JSON.parse(raw))
);
// Build unsigned tx
const client = ExitApiClient.withApiKey(apiKey);
const request: BuildSellTxRequest = {
mint: "So11111111111111111111111111111111111111112",
user_pubkey: keypair.publicKey.toBase58(),
amount_tokens: 1_000_000,
slippage_bps: 2_000,
output: "SOL",
};
const unsignedTxB64 = await client.buildSellTxB64(request);
// Sign locally
const signedTx = signUnsignedTx(unsignedTxB64, keypair);
// Submit
const signature = await sendTransaction(
sendTargetHeliusSender(),
signedTx
);
console.log("Signature:", signature);
例2: Exit Intelligence Streamによる自動売却
Exit Intelligence Streamに接続してウォレットを監視し、戦略の閾値に達したときに自動的にエグジットを実行します。
購入前にストリームを接続してください。 ストリームはオンチェーンのトークン到着を監視してポジションを検出します。ストリームが接続・設定される前に/v1/buyを呼び出すと、ポジションは追跡されず、エグジットシグナルは生成されません。常にストリームを先に開始し、その後購入トランザクションを送信してください。
import { readFile } from "node:fs/promises";
import { Keypair } from "@solana/web3.js";
import {
StreamClient,
StreamSession,
sendTransaction,
sendTargetHeliusSender,
signUnsignedTx,
} from "@lasersell/lasersell-sdk";
const apiKey = process.env.LASERSELL_API_KEY!;
const raw = await readFile("./keypair.json", "utf8");
const signer = Keypair.fromSecretKey(Uint8Array.from(JSON.parse(raw)));
const client = new StreamClient(apiKey);
const session = await StreamSession.connect(client, {
wallet_pubkeys: [signer.publicKey.toBase58()],
strategy: {
target_profit_pct: 5,
stop_loss_pct: 1.5,
},
deadline_timeout_sec: 45,
send_mode: "helius_sender",
tip_lamports: 1000,
});
while (true) {
const event = await session.recv();
if (event === null) break;
if (event.type === "exit_signal_with_tx") {
const signed = signUnsignedTx(event.message.unsigned_tx_b64, signer);
const sig = await sendTransaction(sendTargetHeliusSender(), signed);
console.log("Exit submitted:", sig);
}
}
次のステップ