Vault SDK
The ARKONIX Vault SDK (@arkonix.xyz/arkonix-vault-sdk) is a TypeScript library for integrating ERC-7540 vault operations into your application. It supports both React (hooks + provider) and standalone usage.
Install
npm install @arkonix.xyz/arkonix-vault-sdk
# or
pnpm add @arkonix.xyz/arkonix-vault-sdk
Peer dependencies: react >=18, viem ^2.43, @tanstack/react-query ^5
Quick start — React
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { VaultProvider } from '@arkonix.xyz/arkonix-vault-sdk';
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<VaultProvider config={{ chainId: 42161, rpcUrl: 'https://arb1.arbitrum.io/rpc' }}>
<VaultDashboard />
</VaultProvider>
</QueryClientProvider>
);
}
import { useVaultMetadata, useDeposit } from '@arkonix.xyz/arkonix-vault-sdk';
function VaultDashboard() {
const vault = '0x136771d3F55300F739d8FC50fa93b31401d8e1Bb';
const { data: metadata } = useVaultMetadata(vault);
const { deposit, txState } = useDeposit(vault, metadata?.asset, metadata?.assetDecimals, metadata?.vaultType);
return (
<div>
<p>TVL: {metadata?.totalAssets.toString()}</p>
<button onClick={() => deposit('1000')} disabled={txState !== 'idle'}>
Deposit 1000 USDC
</button>
<p>Status: {txState}</p>
</div>
);
}
Quick start — Standalone
import { createPublicClient, http } from 'viem';
import { arbitrum } from 'viem/chains';
import { VaultReader, VaultActions } from '@arkonix.xyz/arkonix-vault-sdk';
const client = createPublicClient({ chain: arbitrum, transport: http() });
const vault = '0x136771d3F55300F739d8FC50fa93b31401d8e1Bb';
// Read vault metadata
const metadata = await VaultReader.getMetadata(client, vault);
console.log(metadata.assetSymbol, metadata.vaultType);
// Read user state
const userState = await VaultReader.getUserState(
client, vault, userAddress, metadata.vaultType, metadata.assetDecimals
);
Supported chains
| Chain | ID | USDC |
|---|---|---|
| Arbitrum | 42161 | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Ethereum | 1 | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
Next steps
- React Hooks — Full hooks API reference
- Standalone Classes — VaultReader, VaultActions, VaultTxBuilder
- Wallet Adapters — Web and React Native integration