UNPKG

@augustdigital/sdk

Version:

JS SDK powering the August Digital ecosystem.

202 lines (149 loc) 5.49 kB
# August Digital SDK TypeScript SDK for interacting with August Digital vaults across EVM and Solana chains. ## Installation ```bash npm install @augustdigital/sdk ethers # or pnpm add @augustdigital/sdk ethers # or yarn add @augustdigital/sdk ethers ``` ### Wagmi/Viem Support The SDK supports both ethers and wagmi/viem signers. If you're using wagmi in your React app, also install viem: ```bash npm install viem ``` The SDK will automatically detect and convert viem WalletClient to ethers-compatible signers. ## Quick Start ```typescript import { AugustSDK } from '@augustdigital/sdk'; // Initialize with RPC providers const sdk = new AugustSDK({ providers: { 1: 'https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY', 42161: 'https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY', -1: 'https://api.mainnet-beta.solana.com', // Solana }, keys: { august: 'YOUR_API_KEY', // Optional }, monitoring: { env: 'DEV', // Optional: 'DEV' enables console logging (defaults to 'PROD') }, }); // Fetch all vaults const vaults = await sdk.getVaults(); // Fetch specific vault with loans and allocations const vault = await sdk.getVault({ vault: '0x...', options: { loans: true, allocations: true } }); // Get user positions const positions = await sdk.getVaultPositions({ wallet: '0x...', showAllVaults: true, }); ``` ## Architecture ``` src.ts/ ├── main.ts # Main SDK class (AugustSDK) ├── core/ # Base utilities │ ├── base.class.ts # Base SDK functionality │ ├── fetcher.ts # API client with retry logic │ └── web3.helpers.ts # Blockchain utilities ├── adapters/ # Chain-specific implementations │ ├── evm/ # EVM vault adapters (v1, v2) │ └── solana/ # Solana program adapters ├── modules/ # Feature modules │ └── vaults/ # Vault operations │ ├── main.ts # AugustVaults class │ ├── getters.ts # Data fetching functions │ └── utils.ts # Helper utilities ├── services/ # External service integrations │ ├── debank/ # DeFi allocation data │ ├── coingecko/ # Token pricing │ └── subgraph/ # Historical transaction data └── types/ # TypeScript interfaces ``` ## Key Concepts ### Multi-Chain Support - **EVM Chains**: Ethereum, Arbitrum, Base, BSC, Avalanche - **Solana**: Native Solana program support - Unified interface across all chains ### Vault Versions - `evm-0/evm-1`: Legacy vault contracts - `evm-2`: Current EVM vault architecture (separate receipt tokens) - `sol-0`: Solana program-based vaults ### Data Enrichment All vault queries support optional enrichment: - `loans`: Include active loan data - `allocations`: DeFi/CeFi/OTC position breakdowns - `wallet`: User-specific position data ## Code Conventions ### Naming Patterns - **Interfaces**: Prefixed with `I` (e.g., `IVault`, `IVaultLoan`) - **ABIs**: Prefixed with `ABI_` (e.g., `ABI_LENDING_POOL_V2`) - **Types**: Descriptive names (e.g., `IAddress`, `IChainId`) ### Important Tags Search codebase for these comments to find areas needing attention: - `@todo`: Planned improvements or missing features - `@hardcoded`: Hardcoded values that may need configuration - `@solana`: Solana-specific logic or notes ### Error Handling - Automatic retry logic for network errors with exponential backoff - 90-second request timeout (configurable via `REQUEST_TIMEOUT_MS`) - Correlation IDs logged for debugging failed requests - Write actions throw errors instead of silent failures ### Environment Configuration ```typescript // Development mode (enables console logging) const devSdk = new AugustSDK({ providers: { /* ... */ }, monitoring: { env: 'DEV', }, }); // Production mode (default - no console logs) const prodSdk = new AugustSDK({ providers: { /* ... */ }, // monitoring is optional - defaults to PROD }); ``` - `env: 'DEV'` - Enables console logging for debugging - `env: 'PROD'` or omitted - Disables console, uses custom logger only (safer default) ## API Reference ### Main Methods #### Vault Queries - `getVaults(options?)`: Fetch all vaults across chains - `getVault({ vault, chainId?, options? })`: Get single vault details - `getVaultLoans({ vault, chainId })`: Fetch active loans - `getVaultAllocations({ vault, chainId })`: Get allocation breakdown - `getVaultApy({ vault, historical? })`: Current/historical APY - `getVaultTvl({ vault, historical? })`: Current/historical TVL #### User Positions - `getVaultPositions({ wallet?, vault?, chainId? })`: User vault positions - `getVaultAvailableRedemptions({ vault, wallet?, chainId })`: Claimable redemptions - `getVaultUserHistory({ wallet, vault?, chainId? })`: Transaction history - `getVaultStakingPositions({ wallet, chainId })`: Staking positions #### Utilities - `getPrice(symbol)`: Get token price in USD - `switchNetwork(chainId)`: Change active chain - `updateWallet(address)`: Set active wallet for tracking ## Development ### Running Tests ```bash pnpm test ``` ### Building ```bash pnpm build ``` ### Type Checking All exports are fully typed. Use TypeScript for best developer experience. ## Support For issues or questions, refer to the [main repository](https://github.com/fractal-protocol/js-sdk) or contact the August Digital team.