๐ABI's
The August Digital SDK includes all necessary contract ABIs (Application Binary Interfaces) for interacting with August vaults and related contracts. All ABIs are exported with the `ABI_` prefix.
Vault ABIs
ABI_LENDING_POOL
Legacy lending pool contract ABI (vault v1.0).
import { ABI_LENDING_POOL } from '@augustdigital/sdk';
Main Functions:
deposit(uint256 assets, address receiver)
withdraw(uint256 assets, address receiver, address owner)
asset()
- Get underlying token addresstotalAssets()
- Get total vault assetsconvertToShares(uint256 assets)
- Convert assets to sharesconvertToAssets(uint256 shares)
- Convert shares to assets
ABI_LENDING_POOL_V2
Current lending pool contract ABI (vault v2.0) with separate receipt tokens.
import { ABI_LENDING_POOL_V2 } from '@augustdigital/sdk';
Main Functions:
deposit(uint256 assets, address receiver)
- Deposit assetsrequestRedeem(uint256 shares, address receiver, address owner)
- Request withdrawalredeem(uint256 year, uint256 month, uint256 day, uint256 receiverIndex, address receiver)
- Claim withdrawalasset()
- Get underlying tokentotalAssets()
- Get total vault TVLdecimals()
- Get vault decimalsmaxDeposit(address)
- Check deposit limitspreviewDeposit(uint256 assets)
- Preview depositpreviewRedeem(uint256 shares)
- Preview redemption
Example:
import { ethers } from 'ethers';
import { ABI_LENDING_POOL_V2 } from '@augustdigital/sdk';
const vaultContract = new ethers.Contract(
'0xVaultAddress...',
ABI_LENDING_POOL_V2,
provider
);
// Query vault data
const totalAssets = await vaultContract.totalAssets();
const assetAddress = await vaultContract.asset();
const decimals = await vaultContract.decimals();
console.log(`TVL: ${ethers.formatUnits(totalAssets, decimals)}`);
ABI_LENDING_POOL_V3
Next-generation lending pool contract ABI (vault v3.0).
import { ABI_LENDING_POOL_V3 } from '@augustdigital/sdk';
Similar interface to V2 with additional features and optimizations.
ABI_TOKENIZED_VAULT_V2
Tokenized vault V2 contract ABI.
import { ABI_TOKENIZED_VAULT_V2 } from '@augustdigital/sdk';
Main Functions:
deposit(uint256 assets, address receiver)
mint(uint256 shares, address receiver)
withdraw(uint256 assets, address receiver, address owner)
redeem(uint256 shares, address receiver, address owner)
ABI_TOKENIZED_VAULT_V2_RECEIPT
Receipt token contract for Tokenized Vault V2.
import { ABI_TOKENIZED_VAULT_V2_RECEIPT } from '@augustdigital/sdk';
Standard ERC20 interface for vault receipt tokens.
ABI_TOKENIZED_VAULT_V2_WHITELISTED_ASSETS
Whitelisted assets management for Tokenized Vault V2.
import { ABI_TOKENIZED_VAULT_V2_WHITELISTED_ASSETS } from '@augustdigital/sdk';
Token ABIs
ABI_ERC20
Standard ERC20 token contract ABI.
import { ABI_ERC20 } from '@augustdigital/sdk';
Main Functions:
balanceOf(address account)
- Get token balanceallowance(address owner, address spender)
- Check allowanceapprove(address spender, uint256 amount)
- Approve spendingtransfer(address to, uint256 amount)
- Transfer tokenstransferFrom(address from, address to, uint256 amount)
- Transfer fromtotalSupply()
- Get total supplydecimals()
- Get token decimalssymbol()
- Get token symbolname()
- Get token name
Example:
import { ethers } from 'ethers';
import { ABI_ERC20 } from '@augustdigital/sdk';
const tokenContract = new ethers.Contract(
'0xTokenAddress...',
ABI_ERC20,
provider
);
// Check balance
const balance = await tokenContract.balanceOf('0xWalletAddress...');
// Approve spending
const signer = provider.getSigner();
const tx = await tokenContract.connect(signer).approve(
'0xSpenderAddress...',
ethers.parseUnits('100', 18)
);
await tx.wait();
ABI_ERC4626
Standard ERC4626 tokenized vault ABI.
import { ABI_ERC4626 } from '@augustdigital/sdk';
Main Functions:
deposit(uint256 assets, address receiver)
mint(uint256 shares, address receiver)
withdraw(uint256 assets, address receiver, address owner)
redeem(uint256 shares, address receiver, address owner)
asset()
- Get underlying assettotalAssets()
- Get total managed assetsconvertToShares(uint256 assets)
convertToAssets(uint256 shares)
previewDeposit(uint256 assets)
previewMint(uint256 shares)
previewWithdraw(uint256 assets)
previewRedeem(uint256 shares)
ABI_ERC721
Standard ERC721 NFT contract ABI.
import { ABI_ERC721 } from '@augustdigital/sdk';
Main Functions:
balanceOf(address owner)
ownerOf(uint256 tokenId)
transferFrom(address from, address to, uint256 tokenId)
safeTransferFrom(address from, address to, uint256 tokenId)
approve(address to, uint256 tokenId)
getApproved(uint256 tokenId)
setApprovalForAll(address operator, bool approved)
Utility ABIs
ABI_LOAN
Loan contract ABI for August lending protocol.
import { ABI_LOAN } from '@augustdigital/sdk';
Main Functions:
principal()
- Get loan principalapr()
- Get annual percentage rateborrower()
- Get borrower addresslender()
- Get lender addresspaymentInterval()
- Get payment frequencymakePayment(uint256 amount)
- Make loan payment
ABI_REWARD_DISTRIBUTOR
Reward distribution contract ABI.
import { ABI_REWARD_DISTRIBUTOR } from '@augustdigital/sdk';
Main Functions:
claimRewards(address user)
- Claim pending rewardspendingRewards(address user)
- Check pending rewardsrewardToken()
- Get reward token address
Using ABIs
Creating Contract Instances
import { ethers } from 'ethers';
import { ABI_LENDING_POOL_V2, ABI_ERC20 } from '@augustdigital/sdk';
const provider = new ethers.JsonRpcProvider('https://...');
// Create vault contract
const vault = new ethers.Contract(
'0xVaultAddress...',
ABI_LENDING_POOL_V2,
provider
);
// Create token contract
const token = new ethers.Contract(
'0xTokenAddress...',
ABI_ERC20,
provider
);
Reading Contract Data
import { ABI_LENDING_POOL_V2 } from '@augustdigital/sdk';
const vault = new ethers.Contract(
'0xVault...',
ABI_LENDING_POOL_V2,
provider
);
// Query vault state
const [totalAssets, assetAddress, decimals] = await Promise.all([
vault.totalAssets(),
vault.asset(),
vault.decimals(),
]);
console.log('Total Assets:', ethers.formatUnits(totalAssets, decimals));
console.log('Asset Token:', assetAddress);
Writing to Contracts
import { ABI_LENDING_POOL_V2, ABI_ERC20 } from '@augustdigital/sdk';
const signer = await provider.getSigner();
// Approve vault to spend tokens
const token = new ethers.Contract(
assetAddress,
ABI_ERC20,
signer
);
const approveTx = await token.approve(
vaultAddress,
ethers.parseUnits('100', 18)
);
await approveTx.wait();
// Deposit into vault
const vault = new ethers.Contract(
vaultAddress,
ABI_LENDING_POOL_V2,
signer
);
const depositTx = await vault.deposit(
ethers.parseUnits('100', 18),
await signer.getAddress()
);
await depositTx.wait();
console.log('Deposit successful!');
Last updated