用于类型Script/JavaScript的 Bluefin Pro SDK
TypeScript/JavaScript SDK用于与Bluefin Pro交换API和Sui区块链合同的互动.
安装
使用 npm 或纱线安装 SDK :
npm install @bluefin-exchange/pro-sdk
# or
yarn add @bluefin-exchange/pro-sdk
同伴依赖关系
SDK 需要以下对等关系:
npm install @mysten/sui
快速启动
1. 初始化SDK
import {
BluefinProSdk,
BluefinRequestSigner,
makeSigner,
} from "@bluefin-exchange/pro-sdk";
import { SuiGrpcClient } from "@mysten/sui/grpc";
import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
import { hexToBytes } from "@noble/hashes/utils.js";
// Create wallet from private key
const wallet = Ed25519Keypair.fromSecretKey(
hexToBytes("YOUR_PRIVATE_KEY_HEX")
);
// Or create wallet from mnemonic
// const wallet = Ed25519Keypair.deriveKeypair("your mnemonic phrase here");
// Create request signer
const signer = new BluefinRequestSigner(makeSigner(wallet, false));
// Initialize SDK client
const client = new BluefinProSdk(
signer,
"mainnet", // or "testnet" for staging, "devnet" for development
new SuiGrpcClient({ network: "mainnet", baseUrl: "https://fullnode.mainnet.sui.io:443" })
);
// Initialize the SDK (authenticates and loads exchange configuration)
await client.initialize();
SDK接受任何一个
@mysten/sui客户端执行 Core API 。 使用SuiGrpcClient——Sui的JSON-RPC接口被贬值. 如果你正在升级 从SuiJsonRpcClient,交换客户端是唯一需要更改的.
2. 获取市场数据
// Get exchange information and available markets
const exchangeInfo = await client.exchangeDataApi.getExchangeInfo();
console.log("Available markets:", exchangeInfo.data.markets);
// Get market ticker
const ticker = await client.exchangeDataApi.getMarketTicker("BTC-PERP");
console.log("BTC-PERP ticker:", ticker.data);
// Get orderbook depth
const orderbook = await client.exchangeDataApi.getOrderbookDepth("BTC-PERP");
console.log("Orderbook:", orderbook.data);
// Get recent trades
const trades = await client.exchangeDataApi.getRecentTrades("BTC-PERP");
console.log("Recent trades:", trades.data);
3. 发布命令
import { OrderType, OrderSide, OrderTimeInForce } from "@bluefin-exchange/pro-sdk";
const orderParams = {
clientOrderId: "unique-order-id-123",
type: OrderType.Limit,
symbol: "BTC-PERP",
priceE9: "45000000000000", // Price in E9 format (45000 * 1e9)
quantityE9: "100000000", // Quantity in E9 format (0.1 BTC * 1e9)
side: OrderSide.Long,
leverageE9: "2000000000", // 2x leverage
isIsolated: false,
expiresAtMillis: Date.now() + 24 * 60 * 60 * 1000, // 24 hours
postOnly: false,
reduceOnly: false,
timeInForce: OrderTimeInForce.Gtt,
};
const result = await client.createOrder(orderParams);
console.log("Order created:", result.data);
4. 获取账户信息
import { TradeType } from "@bluefin-exchange/pro-sdk";
// Get account details
const accountDetails = await client.accountDataApi.getAccountDetails(
wallet.getPublicKey().toSuiAddress()
);
console.log("Account details:", accountDetails.data);
// Get account trade history
const tradeHistory = await client.accountDataApi.getAccountTrades(
"BTC-PERP",
Date.now() - 7 * 24 * 60 * 60 * 1000, // Last 7 days
Date.now(),
100,
TradeType.Order,
1
);
console.log("Trade history:", tradeHistory.data);
WebSocket 流线
市场数据流
订阅实时市场数据更新 :
import { MarketDataStreamName } from "@bluefin-exchange/pro-sdk";
// Create market data stream listener
const marketListener = await client.createMarketDataStreamListener(
async (msg) => {
console.log("Market update:", msg);
}
);
// Subscribe to market data streams
await marketListener.send(
JSON.stringify({
method: "Subscribe",
dataStreams: [
{
symbol: "BTC-PERP",
streams: [
MarketDataStreamName.Ticker,
MarketDataStreamName.RecentTrade,
MarketDataStreamName.PartialDepth5,
],
},
],
})
);
账户数据流
订阅账户更新 :
import { AccountDataStream } from "@bluefin-exchange/pro-sdk";
// Create account data stream listener
const accountListener = await client.createAccountDataStreamListener(
async (msg) => {
console.log("Account update:", msg);
}
);
// Subscribe to account data streams
await accountListener.send(
JSON.stringify({
method: "Subscribe",
dataStreams: [
AccountDataStream.AccountOrderUpdate,
AccountDataStream.AccountPositionUpdate,
AccountDataStream.AccountTradeUpdate,
AccountDataStream.AccountTransactionUpdate,
AccountDataStream.AccountUpdate,
],
})
);
高级特性
交存和撤回
// Deposit USDC to exchange (amount in base units)
await client.deposit("1000000000"); // 1 USDC (1 * 1e9)
// Withdraw USDC from exchange
await client.withdraw("USDC", "500000000"); // 0.5 USDC (0.5 * 1e9)
更新杠杆
// Update leverage for a specific market
await client.updateLeverage("BTC-PERP", "5000000000"); // 5x leverage
调整隔离边距
// Add margin to isolated position
await client.adjustIsolatedMargin("BTC-PERP", "100000000000", true); // Add 100 USDC
批量索赔奖励
// Get available rewards
const rewards = await client.rewardsDataApi.getCampaignRewards(
"TRADE_AND_EARN",
wallet.getPublicKey().toSuiAddress()
);
// Claim rewards (see docs/batch-claim-rewards-guide.md for detailed guide)
const claimPayloads = /* transform rewards to BatchClaimParams */;
const txResult = await client.batchClaimRewards(claimPayloads);
见 文件/批次-索偿-奖励-指南.md 为索取报酬的完整指南.
API 参考
SDK提供下列API类别的访问:
- 交换数据Api:市场数据、计票机、订货簿、蜡烛、供资率
- 账户数据Api: 账户细节、职位、订单、贸易历史、交易
- 贸易Api: 排序、取消、杠杆更新
- 奥特阿皮: 认证和会话管理
- 奖励:运动奖励和索赔
关于详细的API文档,请参见: 标准文件/文件 目录.
环境配置
SDK支持三种环境:
- 主网生产环境
- 测试网:用于测试的固定环境
- 脱网发展环境
每个环境都有不同的API端点自动配置.
见 实例.ts 用于完整的示例代码.