Standalone Classes
Use these classes directly with a viem PublicClient — no React required.
VaultReader
Read-only operations. All methods are static.
import { createPublicClient, http } from 'viem';
import { arbitrum } from 'viem/chains';
import { VaultReader } from '@arkonix.xyz/arkonix-vault-sdk';
const client = createPublicClient({ chain: arbitrum, transport: http() });
getMetadata
const metadata = await VaultReader.getMetadata(client, vaultAddress);
// { asset, share, assetDecimals, shareDecimals, vaultType, totalAssets, ... }
getUserState
const state = await VaultReader.getUserState(client, vault, user, vaultType, decimals);
// { shareBalance, hasPending, hasClaimable, positionValueFormatted, ... }
Other read methods
await VaultReader.getAllowance(client, token, owner, spender);
await VaultReader.getBalance(client, token, account);
await VaultReader.getMaxDeposit(client, vault, receiver);
await VaultReader.getMaxRedeem(client, vault, owner);
await VaultReader.convertToAssets(client, vault, shares);
await VaultReader.convertToShares(client, vault, assets);
VaultActions
Orchestrated transaction flows. Handles approvals and multi-step operations.
import { VaultActions } from '@arkonix.xyz/arkonix-vault-sdk';
// sendTx is your wallet's transaction sender: (tx: TransactionRequest) => Promise<Hash>
await VaultActions.deposit(client, sendTx, vault, amount, user, asset, decimals, vaultType);
await VaultActions.claimDeposit(client, sendTx, vault, assets, user);
await VaultActions.requestRedeem(client, sendTx, vault, shares, user, decimals);
await VaultActions.claimRedeem(client, sendTx, vault, shares, user);
await VaultActions.cancelRedeem(client, sendTx, vault, user);
await VaultActions.claimCancelRedeem(client, sendTx, vault, user);
VaultTxBuilder
Low-level calldata builders. Returns TransactionRequest objects without executing.
import { VaultTxBuilder } from '@arkonix.xyz/arkonix-vault-sdk';
const tx = VaultTxBuilder.buildDepositTx(vault, assets, receiver, vaultType);
// { to, data, value }
const approveTx = VaultTxBuilder.buildApproveTx(token, spender, amount);
const redeemTx = VaultTxBuilder.buildRequestRedeemTx(vault, shares, controller, owner);
const claimTx = VaultTxBuilder.buildClaimRedeemTx(vault, shares, receiver, controller);
const cancelTx = VaultTxBuilder.buildCancelRedeemTx(vault, controller);
Use VaultTxBuilder when you need full control over transaction submission — for example, with batched transactions or custom gas strategies.