ABI Functions
Contract ABIs bundled with the Upshift SDK for vaults, tokens, loans, and reward distribution.
The Upshift SDK includes all necessary contract ABIs (Application Binary Interfaces) for interacting with Upshift vaults and related contracts. All ABIs are exported with the ABI_ prefix.
Typing support for TypeScript
The SDK provides a createContract utility function to create a strongly typed contract class from a given ABI object.
import { createContract, ABI_LENDING_POOL_V2 } from '@augustdigital/sdk';
const vaultContract = createContract({
address: '0x...',
abi: ABI_LENDING_POOL_V2,
provider,
});
// vaultContract is fully typed
vaultContract.maxSupply();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 the Upshift 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!');