Skip to main content

API Reference

Complete reference for the 7N7D SDK.

Coming Soon

The SDK is currently in development. This documentation describes the planned API.

Client

Constructor

import { SevenNSevenD } from '@7n7d/sdk';

const client = new SevenNSevenD(config: SevenNSevenDConfig);

SevenNSevenDConfig

PropertyTypeRequiredDescription
rpcUrlstringYesArbitrum RPC endpoint
privateKeystringNo*Private key for signing
signerethers.SignerNo*External signer
network'mainnet' | 'testnet'NoNetwork (default: mainnet)
timeoutnumberNoRequest timeout in ms
retriesnumberNoNumber of retries

*Either privateKey or signer required for transactions.

Client Methods

// Get connected address
client.getAddress(): Promise<string>

// Get USDC balance in wallet
client.getUSDCBalance(): Promise<string>

// Get all balances
client.getAllBalances(): Promise<AllBalances>

// Get network info
client.getNetwork(): Promise<NetworkInfo>

Vault Module

Access via client.vault

Deposit Methods

// Deposit USDC
vault.deposit(
amount: string,
options?: DepositOptions
): Promise<DepositResult>

// Deposit max USDC balance
vault.depositMax(
options?: DepositOptions
): Promise<DepositResult>

// Deposit with automatic approval
vault.depositWithApproval(
amount: string,
options?: DepositOptions
): Promise<DepositWithApprovalResult>

// Estimate deposit
vault.estimateDeposit(
amount: string
): Promise<DepositEstimate>

Withdraw Methods

// Withdraw USDC amount
vault.withdraw(
amount: string,
options?: WithdrawOptions
): Promise<WithdrawResult>

// Withdraw specific shares
vault.withdrawShares(
shares: string,
options?: WithdrawOptions
): Promise<WithdrawResult>

// Withdraw all
vault.withdrawAll(
options?: WithdrawOptions
): Promise<WithdrawResult>

// Emergency withdrawal
vault.emergencyWithdraw(): Promise<WithdrawResult>

// Estimate withdrawal
vault.estimateWithdraw(
amount: string
): Promise<WithdrawEstimate>

vault.estimateWithdrawShares(
shares: string
): Promise<WithdrawEstimate>

Approval Methods

// Approve USDC spending
vault.approve(
amount: string
): Promise<TransactionResult>

// Approve unlimited
vault.approveMax(): Promise<TransactionResult>

// Check current allowance
vault.getAllowance(): Promise<string>

// Check if approval needed
vault.needsApproval(
amount: string
): Promise<boolean>

Balance Methods

// Get your balance
vault.getBalance(): Promise<VaultBalance>

// Get your earnings
vault.getEarnings(): Promise<VaultEarnings>

// Get performance history
vault.getPerformanceHistory(
options: HistoryOptions
): Promise<PerformanceHistory>

Stats Methods

// Get vault statistics
vault.getStats(): Promise<VaultStats>

// Get current share price
vault.getSharePrice(): Promise<string>

// Get total value locked
vault.getTVL(): Promise<string>

// Get current APY
vault.getAPY(): Promise<string>

Subscription Methods

// Subscribe to balance updates
vault.subscribeToBalance(
callback: (balance: VaultBalance) => void
): () => void // Returns unsubscribe function

// Subscribe to stats updates
vault.subscribeToStats(
callback: (stats: VaultStats) => void
): () => void

Type Definitions

Options Types

interface DepositOptions {
gasLimit?: number;
maxFeePerGas?: string;
maxPriorityFeePerGas?: string;
minShares?: string;
deadline?: number;
}

interface WithdrawOptions {
gasLimit?: number;
maxFeePerGas?: string;
maxPriorityFeePerGas?: string;
minAmount?: string;
deadline?: number;
}

interface HistoryOptions {
period: '7d' | '30d' | '90d' | '1y' | 'all';
interval: 'hourly' | 'daily' | 'weekly' | 'monthly';
startDate?: string;
endDate?: string;
}

Result Types

interface DepositResult {
hash: string;
blockNumber: number;
usdcAmount: string;
shares: string;
sharePrice: string;
gasUsed: string;
gasCost: string;
}

interface WithdrawResult {
hash: string;
blockNumber: number;
usdcAmount: string;
sharesBurned: string;
sharePrice: string;
feeAmount: string;
netAmount: string;
gasUsed: string;
gasCost: string;
}

interface VaultBalance {
shares: string;
usdcValue: string;
earnings: string;
earningsPercent: string;
deposited: string;
withdrawn: string;
netDeposited: string;
sharePrice: string;
costBasis: string;
}

interface VaultEarnings {
total: string;
totalPercent: string;
today: string;
todayPercent: string;
thisWeek: string;
thisWeekPercent: string;
thisMonth: string;
thisMonthPercent: string;
allTime: string;
allTimePercent: string;
feesPaid: string;
}

interface VaultStats {
tvl: string;
totalShares: string;
depositors: number;
sharePrice: string;
sharePrice24hAgo: string;
sharePriceChange: string;
apy: string;
return24h: string;
return7d: string;
return30d: string;
returnAllTime: string;
maxDrawdown: string;
sharpeRatio: string;
}

Estimate Types

interface DepositEstimate {
usdcAmount: string;
shares: string;
sharePrice: string;
gasEstimate: string;
}

interface WithdrawEstimate {
shares: string;
usdcAmount: string;
sharePrice: string;
gasEstimate: string;
}

Error Handling

SDKError

import { SDKError } from '@7n7d/sdk';

try {
await client.vault.deposit('1000');
} catch (error) {
if (error instanceof SDKError) {
console.log(error.code); // Error code
console.log(error.message); // Human-readable message
console.log(error.details); // Additional details
}
}

Error Codes

CodeDescription
INSUFFICIENT_BALANCENot enough USDC in wallet
INSUFFICIENT_SHARESNot enough vault shares
INSUFFICIENT_ALLOWANCEUSDC approval needed
MIN_SHARES_NOT_METReceived fewer shares than minimum
MIN_AMOUNT_NOT_METReceived less USDC than minimum
DEADLINE_EXCEEDEDTransaction deadline passed
TRANSACTION_REVERTEDTransaction failed on-chain
WITHDRAWAL_PAUSEDWithdrawals temporarily disabled
NO_SIGNERNo signer configured
NETWORK_ERRORRPC connection issue
INVALID_AMOUNTInvalid amount format

Utilities

Formatting

import { utils } from '@7n7d/sdk';

// Format USDC for display
utils.formatUSDC('1000000000'); // '1,000.00'
utils.formatUSDC('1000000000', 4); // '1,000.0000'

// Parse USDC string to wei
utils.parseUSDC('1000'); // '1000000000'
utils.parseUSDC('1,000.50'); // '1000500000'

// Format shares
utils.formatShares('1000000000000000000'); // '1.00'

// Format percentage
utils.formatPercent('0.0523'); // '5.23%'

Gas Estimation

import { utils } from '@7n7d/sdk';

// Estimate gas for deposit
const depositGas = await utils.estimateGas(client, 'deposit', '1000');
console.log(`Estimated: ${depositGas.gasLimit}`);
console.log(`Cost: ~$${depositGas.estimatedCostUSD}`);

// Estimate gas for withdrawal
const withdrawGas = await utils.estimateGas(client, 'withdraw', '500');

Contract Addresses

Mainnet (Arbitrum)

import { addresses } from '@7n7d/sdk';

console.log(addresses.mainnet.vault); // TradingVault
console.log(addresses.mainnet.token); // 7N7DToken
console.log(addresses.mainnet.profitDistributor); // ProfitDistributor
console.log(addresses.mainnet.governance); // GovernanceDAO
console.log(addresses.mainnet.usdc); // USDC

Testnet (Arbitrum Sepolia)

console.log(addresses.testnet.vault);
console.log(addresses.testnet.token);
// ... etc

React Hooks

useSevenNSevenD

import { useSevenNSevenD } from '@7n7d/sdk/react';

function Component() {
const { client, isConnected, address } = useSevenNSevenD();
// ...
}

useVaultBalance

import { useVaultBalance } from '@7n7d/sdk/react';

function Component() {
const { balance, isLoading, error, refetch } = useVaultBalance();
// ...
}

useVaultStats

import { useVaultStats } from '@7n7d/sdk/react';

function Component() {
const { stats, isLoading, error } = useVaultStats();
// ...
}

useDeposit

import { useDeposit } from '@7n7d/sdk/react';

function Component() {
const { deposit, isLoading, error, result } = useDeposit();

const handleDeposit = async () => {
await deposit('1000');
};
// ...
}

useWithdraw

import { useWithdraw } from '@7n7d/sdk/react';

function Component() {
const { withdraw, withdrawAll, isLoading } = useWithdraw();
// ...
}

Need Help?

For issues, visit the GitHub repository or contact support.