๐ฐVaults
This package contains read and write methods for all August Digital vaults, as featured on the Kelp DAO restaking app.
Introduction
The LendingPool
contract is a timelock-enabled ERC4626-compliant token vault designed to increase the utilisation of a liquid restaking token (LRT) through lending and borrowing activities. Users with LRT can become lenders by depositing their tokens in to the vault. The vault operator then lends the collected tokens or funds to borrowers through loan contracts. Lenders can withdraw from the scheme at any time, and the vault operator reserves the right to call the loans whenever necessary to ensure the required funds are available for returning to the lenders.
Using the SDK
You can use either the methods individually or by using the initialized AugustVaults
class. If you're using methods directly, you will be required to pass a the RPC URL so we recommend using a the class instead.
In these documentation examples, we will present the methods as if they're being used as a member of the exported AugustVaults
class (i.e. AugustVaults.<METHOD_NAME>
).
Installation
Install the package in your project directory with:
npm install @augustdigital/vaults
Available Methods
Fetching Vault Data
Get All Lending Vaults
Returns an array of of all August Digital vaults including all relevant on-chain details about the vault.
// @param options (optional) - base options provided to most getters
async getVaults(options?: { chainIds?: number[]; loans?: boolean; allocations?: boolean })
[
{
address: IAddress; // vault address
chainId: number;
name: string; // vault name
symbol: string; // vault symbol
description: string; // vault description
startDatetime: string; // vault start datetime
status: 'active' | 'closed' | 'testing'; // vault status
internalType?: 'lendingPool' | 'tokenizedVault';
publicType?: 'Lending' | 'Defi Yield' | 'Pre-deposit';
tags: string[]; // label displayed per vault
isFeatured: boolean; // if featured on upshift
isVisible: boolean; // if visible on upshift
reserveTarget: number; // reserve target
reserveTolerance: number; // reserve tolerance
decimals: number;
totalAssets: INormalizedNumber;
totalSupply: INormalizedNumber;
loansOperator: IAddress;
maxSupply: INormalizedNumber;
subaccounts: ITokenizedVaultSubaccount[];
underlying: {
// vault underlying token details
address: IAddress;
symbol: string;
decimals: number;
};
apy: number;
apyBreakdown: IVaultApy;
rewards: IVaultRewards;
strategists: IVaultStrategist[];
weeklyPerformanceFee: number;
platformFee: {
fee: number;
isWaived: boolean;
};
lagDuration: number;
// Optionals
loans?: IVaultLoan[];
allocations?: IVaultAllocations;
position?: IVaultPosition;
maxDailyDrawdown: number;
risk: string;
}
...
]
Get Lending Pool
Returns a single August Digital Vault including all the on-chain details about the pool.
// @param vault - vault contract address
// @param chainId (optional) - vault chain id
async getVault({ vault: IAddress; chainId?: number; options?: IVaultBaseOptions })
[
{
address: IAddress; // vault address
chainId: number;
name: string; // vault name
symbol: string; // vault symbol
description: string; // vault description
startDatetime: string; // vault start datetime
status: 'active' | 'closed' | 'testing'; // vault status
internalType?: 'lendingPool' | 'tokenizedVault';
publicType?: 'Lending' | 'Defi Yield' | 'Pre-deposit';
tags: string[]; // label displayed per vault
isFeatured: boolean; // if featured on upshift
isVisible: boolean; // if visible on upshift
reserveTarget: number; // reserve target
reserveTolerance: number; // reserve tolerance
decimals: number;
totalAssets: INormalizedNumber;
totalSupply: INormalizedNumber;
loansOperator: IAddress;
maxSupply: INormalizedNumber;
subaccounts: ITokenizedVaultSubaccount[];
underlying: {
// vault underlying token details
address: IAddress;
symbol: string;
decimals: number;
};
apy: number;
apyBreakdown: IVaultApy;
rewards: IVaultRewards;
strategists: IVaultStrategist[];
weeklyPerformanceFee: number;
platformFee: {
fee: number;
isWaived: boolean;
};
lagDuration: number;
// Optionals
loans?: IVaultLoan[];
allocations?: IVaultAllocations;
position?: IVaultPosition;
maxDailyDrawdown: number;
risk: string;
}
...
]
Get Available Redemptions
Returns a list of all available redemptions including the required parameters for a Vault.claim
contract write method.
// @param vault - vault contract address
// @param chainId (optional) - vault chain id
async getAvailableRedemptions({ vault: IAddress; chainId?: number; wallet?: IAddress })
[
{
id: string;
hash: string;
timestamp: number;
receiver: IAddress;
day: INormalizedNumber;
month: INormalizedNumber;
year: INormalizedNumber;
amount: INormalizedNumber;
date: Date;
vault: IAddress;
},
...
]
Get Positions Across All Vaults
Returns a list of all staked positions for a given wallet address across all Vaults for the given network in a way where the object contains all required parameters to pass to Vault.claim
.
// @param wallet - user wallet address
// @param vault (optional) - vault address
// @param chainId (optional) - chain id to fetch vault positions from
// @param showAllVaults (optional) - if wanting the IVault object to be included
async getPositions({
vault?: IAddress;
wallet: IAddress;
chainId?: IChainId;
showAllVaults?: boolean;
})
[
{
...vault?: IVault;
vault: IAddress;
status: string;
availableRedemptions: {
id: string;
hash: string;
timestamp: number;
receiver: IAddress;
day: INormalizedNumber;
month: INormalizedNumber;
year: INormalizedNumber;
amount: INormalizedNumber;
date: Date;
vault: IAddress;
}[];
pendingRedemptions: {
id: string;
hash: string;
timestamp: number;
receiver: IAddress;
day: INormalizedNumber;
month: INormalizedNumber;
year: INormalizedNumber;
amount: INormalizedNumber;
date: Date;
vault: IAddress;
}[];
redeemable: INormalizedNumber;
walletBalance: INormalizedNumber;
}
...
]
Last updated