Loading...
Loading...
Build applications with the Yo Protocol SDK (`@yo-protocol/core`) — an ERC-4626 yield vault protocol supporting Ethereum (1), Base (8453), and Arbitrum (42161). Use when writing code that interacts with Yo Protocol vaults: preparing deposit/redeem transactions, checking positions, querying vault snapshots/yield/TVL, or claiming Merkl rewards. Triggers on mentions of Yo Protocol, yoETH, yoUSD, yoBTC, yoEUR, yoGOLD, yoUSDT, yo-protocol/core, YoClient, createYoClient, PreparedTransaction, or ERC-4626 vault interactions via the Yo gateway.
npx skill4agent add yoprotocol/yo-protocol-skills yo-protocol-sdk@yo-protocol/corepartnerId9999partnerIdcreateYoClient({ chainId, partnerId: YOUR_ID })getVaults()getVaultSnapshot(vault)getVaultState(vault)isPaused(vault)getVaultYieldHistory(vault)getVaultTvlHistory(vault)getIdleBalance(vault)getUserPosition(vault, account)getUserPerformance(vault, account)getUserHistory(vault, account)getPendingRedemptions(vault, account)partnerIdVAULTS[id].underlying.address[chainId]parseTokenAmount('100', decimals)prepareDepositWithApproval()client.prepareDepositWithApproval({ vault, token, owner, recipient, amount, slippageBps })PreparedTransaction[]prepareApprove()prepareDeposit()partnerIdgetShareBalance(vault, account)prepareRedeemWithApproval()client.prepareRedeemWithApproval({ vault, shares, owner, recipient })PreparedTransaction[]waitForRedeemReceipt(hash)receipt.instantinstant === trueassetsOrRequestIdinstant === falseassetsOrRequestIdprepareApprove()prepareRedeem()getClaimableRewards(account)getMerklRewardshasMerklClaimableRewards(rewards)getMerklTotalClaimable(rewards)prepareClaimMerklRewards(account, rewards)PreparedTransaction@yo-protocol/corepackage.jsonviemnpm install @yo-protocol/coreimport { createYoClient } from '@yo-protocol/core'
// Read-only (no wallet needed)
const client = createYoClient({ chainId: 1 })
// With custom RPC
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
const publicClient = createPublicClient({ chain: mainnet, transport: http('https://...') })
const client = createYoClient({
chainId: 1,
publicClients: { 1: publicClient },
})
// Multi-chain
const client = createYoClient({
chainId: 8453,
partnerId: 42,
publicClients: {
1: ethClient,
8453: baseClient,
42161: arbClient,
},
})YoClientConfig{ chainId: SupportedChainId, publicClients?: Partial<Record<SupportedChainId, PublicClient>>, partnerId?: number }walletClientpartnerIdpartnerId9999partnerIdpartnerId// Default: partnerId = 9999 (unattributed)
const client = createYoClient({ chainId: 1 })
// With your assigned partner ID
const client = createYoClient({ chainId: 1, partnerId: 42 })PreparedTransaction { to, data, value }sendTransactionwalletClient.sendTransactionsigner.sendTransactionprepareDepositWithApproval()prepareRedeemWithApproval()VAULTS[vaultId].underlying.address[chainId]slippageBpsRedeemReceipt.instantfalseassetsOrRequestIdYO_GATEWAY_ADDRESSownerrecipientgetClaimableRewardsgetMerklRewardspartnerId9999