Install
- pnpm
- npm
- yarn
Copy
pnpm add @blend-money/sdk-types
Copy
npm install @blend-money/sdk-types
Copy
yarn 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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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/sdks→packages/sdk-types - Readme:
packages/sdk-types/README.md