Skip to main content

What is RebelFi SDK?

The RebelFi SDK is a TypeScript library that enables applications to offer yield on stablecoin balances. It provides a simple interface for:
  • Discovering yield venues and strategies
  • Planning supply and unwind operations
  • Tracking allocations and earnings
  • Managing transaction submission
Your users maintain full custody of their funds throughout the entire process.

Key Concepts

Venues

A venue represents a DeFi protocol that offers yield opportunities. Examples include Kamino, Drift, and other lending/yield protocols.
const { venues } = await client.venues.list();

// Example venue
{
  id: 1,
  name: 'Kamino',
  protocol: 'kamino',
  blockchain: 'solana',
  status: 'active',
  strategies: [...]
}

Strategies

A strategy is a specific yield opportunity within a venue. Each strategy has:
  • A supported token (e.g., USDC)
  • Current APY
  • Minimum/maximum deposit limits
// Strategies are nested within venues
const strategy = venues[0].strategies[0];

// Example strategy
{
  strategyId: 1,
  name: 'USDC Vault',
  token: 'USDC',
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  apy: 0.085,  // 8.5%
  status: 'active'
}

Allocations

An allocation represents a user’s position in a strategy. It tracks:
  • Principal (original amount deposited)
  • Current value (including accrued yield)
  • Total yield earned
const { allocations } = await client.allocations.list({
  walletAddress: userWallet
});

// Example allocation
{
  strategyId: 1,
  strategyName: 'USDC Vault',
  venueName: 'Kamino',
  walletAddress: 'So11...abc',
  principal: '1000000000',      // 1000 USDC deposited
  currentValue: '1008500000',   // 1008.50 USDC current value
  yieldEarned: '8500000',       // 8.50 USDC earned
  apy: 0.085
}

Operations

An operation is a business action like supplying funds to a strategy or unwinding a position. Operations contain one or more transactions that need to be signed.
const operation = await client.operations.supply({
  walletAddress: userWallet,
  strategyId: 1,
  amount: '1000000000',
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
});

// Example operation response
{
  operationId: 123,
  type: 'supply',
  status: 'awaiting_signature',
  transactions: [{
    id: 456,
    status: 'unsigned',
    unsignedTransaction: 'base64...',
    description: 'Supply USDC to Kamino'
  }],
  expiresAt: '2024-01-15T12:30:00Z'
}

Transactions

A transaction is a blockchain transaction within an operation. Transactions go through these states:
unsigned → pending → confirmed
                  ↘ failed
  • unsigned: Transaction built, waiting for user signature
  • pending: Signed and broadcast, waiting for confirmation
  • confirmed: Successfully confirmed on-chain
  • failed: Transaction failed (reverted, timeout, etc.)

SDK vs Direct API

The SDK is a thin wrapper around the REST API with added benefits:
FeatureSDKDirect API
Type safetyFull TypeScript typesNone
Error handlingRebelfiError classRaw HTTP errors
AuthenticationAutomatic header injectionManual
Response parsingAutomaticManual
Use the SDK for TypeScript/JavaScript applications. Use the API directly for other languages or when you need maximum control.

Supported Blockchains

BlockchainStatusTokens
SolanaAvailableUSDC
PolygonComing Soon-
EthereumPlanned-

Next Steps