@strigival/sdk
v1.2.2
Published
Official TypeScript/JavaScript SDK for STRIGIVAL Trading Strategies Marketplace
Maintainers
Readme
STRIGIVAL TypeScript SDK
Official TypeScript/JavaScript SDK for the STRIGIVAL Trading Strategies Marketplace.
Installation
npm install @strigival/sdk
# or
yarn add @strigival/sdk
# or
pnpm add @strigival/sdkQuick Start
import { StrigivalClient, Protocol, TradeAction } from '@strigival/sdk';
// Initialize client
const client = new StrigivalClient({
apiUrl: 'https://api.strigival.com',
privateKey: '0x...', // Your private key
chain: 'sepolia', // or 'arbitrum'
});
// List available strategies
const strategies = await client.listStrategies({ sortBy: 'sharpe', limit: 10 });
for (const strategy of strategies) {
console.log(`${strategy.name}: Sharpe ${strategy.sharpeRatio}`);
}
// Get a quote for a swap
const quote = await client.getQuote({
vaultAddress: '0x...',
tokenIn: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
tokenOut: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH
amount: 1000_000000n, // 1000 USDC (6 decimals)
protocol: Protocol.UNISWAP_V3,
slippageBps: 50, // 0.5%
});
console.log(`Quote: ${quote.amountOut} WETH`);
console.log(`Price impact: ${quote.priceImpactBps} bps`);
console.log(`Gas cost: $${quote.gasCostUsd}`);
// Execute the trade
const trade = await client.executeTrade(quote, '0x...');
console.log(`Trade executed: ${trade.txHash}`);Features
- TypeScript First: Full type safety with TypeScript
- Authentication: Web3 signature-based authentication
- Quotes: Get real-time quotes from multiple protocols
- Trading: Execute trades via your vault
- Analytics: Access institutional-grade KPIs
- History: Query trade history and performance
API Reference
StrigivalClient
const client = new StrigivalClient({
apiUrl: string, // API base URL
privateKey?: `0x${string}`, // Ethereum private key
address?: Address, // Ethereum address (if no privateKey)
chain?: 'sepolia' | 'arbitrum',
timeout?: number, // Request timeout (ms)
});Methods
Quotes
// Get a quote
const quote = await client.getQuote({
vaultAddress: Address,
tokenIn: string,
tokenOut: string,
amount: bigint,
protocol?: Protocol,
action?: TradeAction,
slippageBps?: number,
});
// List supported protocols
const protocols = await client.getProtocols();Trading
// Execute a trade
const trade = await client.executeTrade(quote, vaultAddress);
// Get trade history
const history = await client.getTradeHistory(vaultAddress, { limit: 50 });
// Get trade details
const trade = await client.getTrade(vaultAddress, txHash);Vault
// Get vault status
const status = await client.getVaultStatus(vaultAddress);
// Get authorized tokens
const tokens = await client.getAuthorizedTokens(vaultAddress);Analytics
// Get all KPIs
const kpis = await client.getKPIs(vaultAddress);
console.log(`Sharpe: ${kpis.sharpeRatio}`);
console.log(`Max DD: ${kpis.drawdown.maxDrawdown}`);
// Get Sharpe ratio
const sharpe = await client.getSharpeRatio(vaultAddress, 365);Types
Quote
interface Quote {
quoteId: string;
expiresAt: Date;
amountIn: bigint;
amountOut: bigint;
amountOutMin: bigint;
price: number;
priceImpactBps: number;
estimatedGas: number;
gasPriceGwei: number;
gasCostUsd: number;
protocol: string;
route: string[];
}Trade
interface Trade {
txHash: string;
success: boolean;
gasUsed?: number;
amountIn?: bigint;
amountOut?: bigint;
slippageActualBps?: number;
error?: string;
}KPIs
interface KPIs {
sharpeRatio: number;
sortinoRatio: number;
calmarRatio: number;
volatilityAnnual: number;
drawdown: DrawdownInfo;
winRate: WinRateInfo;
alpha: number;
beta: number;
}Error Handling
import {
StrigivalError,
AuthenticationError,
QuoteError,
TradeError,
RateLimitError,
} from '@strigival/sdk';
try {
const quote = await client.getQuote({ ... });
} catch (error) {
if (error instanceof RateLimitError) {
console.log(`Rate limited, retry after ${error.retryAfter}s`);
} else if (error instanceof QuoteError) {
console.log(`Quote failed: ${error.message}`);
} else if (error instanceof StrigivalError) {
console.log(`Error [${error.code}]: ${error.message}`);
}
}License
Proprietary License - see LICENSE file for details.
