Skip to main content
Package: @blend-money/sdk-typesGitHub · npm · Monorepo: sdks

Install

  • pnpm
  • npm
  • yarn
pnpm add @blend-money/sdk-types

Highlights

  • Core primitives: Hex, ChainId, Txn, ActionPlan
  • Domain types: Token, TokenAmount, VaultConfig, YieldSummary, BalanceSummary
  • Integration types: Integrations, StrategyType, CrossChain
  • Zero runtime: ESM types only, no JavaScript code
  • Type-safe: Full TypeScript support across all SDK packages

Core Primitives

Basic Types

import type { Hex, ChainId, BlendClientConfig } from "@blend-money/sdk-types";

// Ethereum hex string
const address: Hex = "0x1234567890abcdef1234567890abcdef12345678";
const data: Hex = "0xdeadbeef";

// Chain identifier
const baseChainId: ChainId = 8453;

// Client configuration
const config: BlendClientConfig = {
  baseUrl: "https://api.blend.money",
  userAddress: "0x1234567890abcdef1234567890abcdef12345678",
  integratorId: "my-app",
  timeoutMs: 15000,
  retries: 3,
};

Transaction Types

import type { Txn, ActionPlan } from "@blend-money/sdk-types";

// Single transaction
const tx: Txn = {
  to: "0x1234567890abcdef1234567890abcdef12345678",
  data: "0xabcdef",
  value: 0n,
  chainId: 8453,
  account: "0x1234567890abcdef1234567890abcdef12345678",
  isDelegateCall: false,
};

// Action plan with multiple transactions
const plan: ActionPlan = {
  deployType: "multisend",
  requiredApprovals: [tx],
  requiredTxns: [tx],
  chainId: 8453,
};

Domain Types

Token and Amount Types

import type { Token, TokenAmount } from "@blend-money/sdk-types";

// Token definition
const usdc: Token = {
  address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  symbol: "USDC",
  decimals: 6,
  chainId: 1,
};

// Token amount with precision
const amount: TokenAmount = {
  token: usdc,
  amount: 1000000n, // 1 USDC in smallest units
  formatted: "1.00", // Human-readable format
};

Vault and Strategy Types

import type { VaultConfig, StrategyType, YieldSummary, BalanceSummary } from "@blend-money/sdk-types";

// Vault configuration
const vault: VaultConfig = {
  vaultId: "0x1234567890abcdef1234567890abcdef12345678",
  chainId: 8453,
  token: {
    address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    symbol: "USDC",
    decimals: 6,
    chainId: 8453,
  },
  name: "USDC Vault",
  symbol: "vUSDC",
};

// Strategy type
const strategy: StrategyType = {
  ...vault,
  // Additional strategy-specific properties
};

// Yield summary
const yieldSummary: YieldSummary = {
  totalYield: "0.05", // 5% APY
  yieldsByVault: {
    "0x1234...": "0.05",
  },
  currency: "USD",
};

// Balance summary
const balance: BalanceSummary = {
  balance: "1000.00",
  formattedBalance: "$1,000.00",
  currency: "USD",
  safeAddress: "0x1234567890abcdef1234567890abcdef12345678",
};

Integration Types

Available Integrations

import { Integrations } from "@blend-money/sdk-types";

// Use integration constants
const usxIntegration = Integrations.USX;
const botanixIntegration = Integrations.BOTANIX;

// Type-safe integration handling
function handleIntegration(integration: Integrations) {
  switch (integration) {
    case Integrations.USX:
      return "USX strategy";
    case Integrations.BOTANIX:
      return "Botanix strategy";
    default:
      return "Unknown integration";
  }
}

Cross-chain Types

import type { CrossChain } from "@blend-money/sdk-types";

// Cross-chain chain definition
const baseChain: CrossChain = {
  chainId: 8453,
  name: "Base",
};

const ethereumChain: CrossChain = {
  chainId: 1,
  name: "Ethereum",
};

Usage Examples

Type-safe API calls

import type { 
  BlendClientConfig, 
  Token, 
  VaultConfig, 
  ActionPlan,
  Integrations 
} from "@blend-money/sdk-types";

// Type-safe client configuration
const config: BlendClientConfig = {
  baseUrl: "https://api.blend.money",
  userAddress: "0x1234567890abcdef1234567890abcdef12345678",
  integratorId: "my-app",
};

// Type-safe token handling
const inputToken: Token = {
  address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  symbol: "USDC",
  decimals: 6,
  chainId: 8453,
};

// Type-safe vault configuration
const vault: VaultConfig = {
  vaultId: "0x1234567890abcdef1234567890abcdef12345678",
  chainId: 8453,
  token: inputToken,
  name: "USDC Vault",
  symbol: "vUSDC",
};

// Type-safe action plan
const plan: ActionPlan = {
  deployType: "direct",
  requiredApprovals: [],
  requiredTxns: [],
  chainId: 8453,
};

Integration with SDKs

import { BlendClient } from "@blend-money/sdk-core";
import { BlendClientWithActions } from "@blend-money/sdk-actions";
import type { 
  BlendClientConfig, 
  Integrations, 
  VaultConfig, 
  ActionPlan 
} from "@blend-money/sdk-types";

// All SDK packages use the same types
const coreClient = new BlendClient(config);
const actionsClient = new BlendClientWithActions(config, {});

// Type-safe method calls
const strategies = await coreClient.strategy.getAvailableStrategies(Integrations.USX);
const plan: ActionPlan = await actionsClient.actions.deposit(
  inputToken,
  strategies[0],
  1_000_000n,
  50
);

References

  • Repo: https://github.com/BlendMoney/sdkspackages/sdk-types
  • Readme: packages/sdk-types/README.md