Vault Operations
Manage vaults that store tokens for payment schedules.
Initialize Vault
Create a vault for your wallet. Each wallet can have one vault per token mint.
import { PublicKey } from "@solana/web3.js";
const USDC_MINT = new PublicKey("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
const signature = await client.initVault(USDC_MINT);
console.log("Vault created:", signature);Deposit Tokens
Deposit tokens from your wallet into the vault.
import { BN } from "@coral-xyz/anchor";
const amount = new BN(1_000_000); // 1 USDC (6 decimals)
const signature = await client.deposit(amount, USDC_MINT);
console.log("Deposited:", signature);Withdraw Tokens
Withdraw available, non-reserved tokens from the vault.
const amount = new BN(500_000); // 0.5 USDC
const signature = await client.withdraw(amount, USDC_MINT);
console.log("Withdrawn:", signature);You can only withdraw the available balance, not the reserved portion backing active schedules.
Get Vault State
const vault = await client.getVault(USDC_MINT);
if (vault) {
console.log("Available:", vault.available.toString());
console.log("Reserved:", vault.reserved.toString());
console.log("Token Mint:", vault.tokenMint.toString());
console.log("Employer:", vault.employer.toString());
}Returns: VaultAccount | null
VaultAccount fields:
employertokenMintavailablereservedvaultAtabump
Complete Vault Flow
import { PublicKey } from "@solana/web3.js";
import { BN } from "@coral-xyz/anchor";
const USDC = new PublicKey("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
await client.initVault(USDC);
await client.deposit(new BN(10_000_000), USDC);
const vault = await client.getVault(USDC);
console.log("Available:", vault?.available.toString());
await client.withdraw(new BN(5_000_000), USDC);