TypeScript SDK for seamless integration with Xirion protocol on Solana
npm install @xirion/sdk @solana/web3.jsyarn add @xirion/sdk @solana/web3.jsimport { XirionSDK } from '@xirion/sdk';
import { Connection, PublicKey } from '@solana/web3.js';
// Initialize connection
const connection = new Connection(
'https://api.mainnet-beta.solana.com',
'confirmed'
);
// Initialize SDK
const sdk = new XirionSDK({
connection,
wallet: yourWallet,
programId: new PublicKey('XirionProgramId...'),
});
console.log('SDK initialized successfully');// Create a new vault
const vault = await sdk.vault.create({
authority: wallet.publicKey,
signers: [signer1, signer2, signer3],
requiredSignatures: 2,
strategy: {
type: 'yield',
targetProtocols: ['marinade', 'solend'],
riskLevel: 3,
},
withdrawalDelay: 86400, // 24 hours
});
console.log('Vault created:', vault.address.toString());// Deposit tokens to vault
const depositTx = await sdk.vault.deposit({
vaultId: vault.address,
amount: 1000000000, // 1 SOL in lamports
tokenMint: NATIVE_MINT,
});
await depositTx.confirm();
console.log('Deposit successful');// Initiate withdrawal
const withdrawTx = await sdk.vault.withdraw({
vaultId: vault.address,
amount: 500000000, // 0.5 SOL
recipient: wallet.publicKey,
});
await withdrawTx.confirm();
console.log('Withdrawal initiated');// Execute swap with oracle pricing
const swapTx = await sdk.swap.execute({
fromMint: USDC_MINT,
toMint: SOL_MINT,
amount: 100000000, // 100 USDC
slippage: 0.5, // 0.5% slippage tolerance
oracleSource: 'pyth',
});
// Get swap quote before execution
const quote = await sdk.swap.getQuote({
fromMint: USDC_MINT,
toMint: SOL_MINT,
amount: 100000000,
});
console.log('Expected output:', quote.expectedOutput);
console.log('Price impact:', quote.priceImpact);
await swapTx.confirm();
console.log('Swap executed successfully');// Query best yield opportunities
const routes = await sdk.yield.getOptimalRoutes({
tokenMint: USDC_MINT,
amount: 1000000000, // 1000 USDC
riskLevel: 3,
});
routes.forEach(route => {
console.log(`Protocol: ${route.protocol}`);
console.log(`APY: ${route.apy}%`);
console.log(`TVL: $${route.tvl}`);
console.log(`Risk Score: ${route.riskScore}`);
});
// Execute yield deposit
const yieldTx = await sdk.yield.deposit({
protocol: routes[0].protocol,
amount: 1000000000,
tokenMint: USDC_MINT,
});
await yieldTx.confirm();// Get all positions for wallet
const positions = await sdk.positions.getAll(wallet.publicKey);
positions.forEach(position => {
console.log(`Protocol: ${position.protocol}`);
console.log(`Value: $${position.valueUsd}`);
console.log(`PnL: ${position.pnl > 0 ? '+' : ''}${position.pnl}%`);
console.log(`Entry Price: $${position.entryPrice}`);
console.log(`Current Price: $${position.currentPrice}`);
});
// Get position history
const history = await sdk.positions.getHistory({
walletAddress: wallet.publicKey,
startTime: Date.now() - 30 * 24 * 60 * 60 * 1000, // 30 days
endTime: Date.now(),
});
console.log('Total transactions:', history.length);// Get vault metrics
const metrics = await sdk.analytics.getVaultMetrics(vault.address);
console.log('Total Value Locked:', metrics.tvl);
console.log('APY:', metrics.apy);
console.log('Sharpe Ratio:', metrics.sharpeRatio);
console.log('Active Positions:', metrics.positions);
// Get protocol statistics
const stats = await sdk.analytics.getProtocolStats();
console.log('Total Users:', stats.totalUsers);
console.log('Total Volume:', stats.totalVolume);
console.log('Total Fees:', stats.totalFees);
// Get historical performance
const performance = await sdk.analytics.getPerformance({
vaultId: vault.address,
period: '30d',
});
performance.forEach(point => {
console.log(`Date: ${point.date}, Value: $${point.value}`);
});