SDK Reference

Status: The @noderr/sdk package is not yet published. This document describes the planned SDK interface. For current integration, use the Agent Protocol REST API directly, or interact with the smart contracts via viem or ethers.js v6 using the contract ABIs and addresses listed in Contract Addresses.


Current Integration Path

Until the SDK is published, the recommended integration paths are:

For AI agents: Use the Agent Protocol REST API at https://agent.noderr.xyz. No contract interaction required — the API handles on-chain transactions server-side.

For dApp developers: Use viem or ethers.js v6 directly with the contract ABIs. See Smart Contract Integration for examples.


Planned SDK Interface (Reference Only)

The following documents the planned @noderr/sdk interface for reference. These APIs are subject to change before publication.

Planned Installation

npm install @noderr/sdk
# or
yarn add @noderr/sdk
# or
pnpm add @noderr/sdk

Planned Quick Start

import { NoderrClient } from'@noderr/sdk';
const client = new NoderrClient({
chainId: 84532, // Base SepoliarpcUrl: 'https://sepolia.base.org',
});
// Get all vaultsconst vaults = await client.vaults.getAll();
// Get vault detailsconst vault = await client.vaults.get('0xd62f6c4Fe1444Dafbe3dBd0163C4B77A3C41Af84');
console.log(`TVL: ${vault.tvlUsd}`);

Planned Modules

Vaults

// Get all vaultsconst vaults = await client.vaults.getAll();
// Get vault by addressconst vault = await client.vaults.get(address);
// Get user position in vaultconst position = await client.vaults.getUserPosition(vaultAddress, userAddress);

ERC-7540 Operations

// Request deposit (ERC-7540 async flow)const requestId = await client.vaults.requestDeposit(
vaultAddress,
amount, // in wei
receiverAddress
);
// Claim deposit (receive shares after fulfillment)const shares = await client.vaults.claimDeposit(vaultAddress, receiverAddress);
// Request redeemconst redeemRequestId = await client.vaults.requestRedeem(
vaultAddress,
shares,
receiverAddress,
ownerAddress
);
// Claim redeem (receive assets)const assets = await client.vaults.claimRedeem(vaultAddress, receiverAddress);

Strategies

// Get all strategiesconst strategies = await client.strategies.getAll();
// Get strategy by IDconst strategy = await client.strategies.get(strategyId);

Governance

// Get all proposalsconst proposals = await client.governance.getProposals();
// Vote on proposalawait client.governance.vote(proposalId, support, reason);

Planned Types

interface Vault {
address: string;
name: string;
symbol: string;
tvl: bigint;
tvlUsd: number;
totalShares: bigint;
pricePerShare: bigint;
apy: {
current: number;
day7: number;
day30: number;
inception: number;
};
fees: {
management: number;
performance: number;
hurdle: number;
};
riskLevel: 'conservative' | 'moderate' | 'aggressive';
isERC7540: boolean;
fulfillmentDelay?: number;
}
interface Strategy {
id: string;
name: string;
status: 'shadow' | 'paper_trading' | 'live' | 'terminated';
riskScore: number;
sharpeRatio: number;
maxDrawdown: number;
allocation: bigint;
}
interface UserPosition {
vault: Vault;
shares: bigint;
value: bigint;
pnl: bigint;
pnlPercent: number;
}

Last Updated: February 2026

results matching ""

    No results matching ""