@bombearn/sdk
Version:
Interaction framework for the yearn protocol
216 lines (215 loc) • 8.78 kB
TypeScript
import { CallOverrides, PopulatedTransaction } from "@ethersproject/contracts";
import { TransactionRequest, TransactionResponse } from "@ethersproject/providers";
import { ChainId } from "../chain";
import { ServiceInterface } from "../common";
import { Address, Balance, DepositOptions, Integer, Token, TokenAllowance, TransactionOutcome, VaultDynamic, VaultInfo, VaultMetadataOverrides, VaultStatic, VaultsUserSummary, VaultUserMetadata, WithdrawOptions } from "../types";
import { Position, Vault } from "../types";
export declare class VaultInterface<T extends ChainId> extends ServiceInterface<T> {
private cachedFetcherGet;
private cachedFetcherGetDynamic;
private cachedFetcherTokens;
/**
* Get all yearn vaults.
* @param addresses filter, if not provided all positions are returned
* @param overrides
* @returns
*/
get(addresses?: Address[], overrides?: CallOverrides): Promise<Vault[]>;
/**
* Get static part of yearn vaults.
* @param addresses filter, if not provided all positions are returned
* @param overrides
* @returns
*/
getStatic(addresses?: Address[], overrides?: CallOverrides): Promise<VaultStatic[]>;
/**
* Get dynamic part of yearn vaults.
* @param addresses filter, if not provided all positions are returned
* @param overrides
* @returns
*/
getDynamic(addresses?: Address[], vaultMetadataOverrides?: VaultMetadataOverrides[], overrides?: CallOverrides): Promise<VaultDynamic[]>;
/**
* Get yearn vault positions for a particular address.
* @param address
* @param addresses filter, if not provided all positions are returned
* @param overrides
* @returns
*/
positionsOf(address: Address, addresses?: Address[], overrides?: CallOverrides): Promise<Position[]>;
/**
* Get the Vaults User Summary for a particular address.
* @param address
* @returns
*/
summaryOf(address: Address): Promise<VaultsUserSummary>;
/**
* Get the Vault User Metadata for a particular address.
* @param address
* @param addresses filter, if provided only those addresses' Vault User Metadata are returned
* @returns
*/
metadataOf(address: Address, addresses?: Address[]): Promise<VaultUserMetadata[]>;
/**
* Get all yearn vault's underlying token balances for a particular address.
* @param address
* @param overrides
* @returns
*/
balances(address: Address, overrides?: CallOverrides): Promise<Balance[]>;
/**
* Get all yearn vault's underlying tokens.
* @param overrides
* @returns
*/
tokens(overrides?: CallOverrides): Promise<Token[]>;
/**
* Fetch the token amount that has been allowed to be used for deposits
* @param accountAddress
* @param vaultAddress
* @param tokenAddress
* @param gasless
* @returns TokenAllowance
*/
getDepositAllowance(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, gasless?: boolean): Promise<TokenAllowance>;
/**
* Fetch the token amount that has been allowed to be used for withdraw
* @param accountAddress
* @param vaultAddress
* @param tokenAddress
* @param gasless
* @returns TokenAllowance
*/
getWithdrawAllowance(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, gasless?: boolean): Promise<TokenAllowance>;
populateApproveDeposit(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, amount?: Integer, gasless?: boolean, overrides?: CallOverrides): Promise<PopulatedTransaction>;
/**
* Approve the token amount to allow to be used for deposits
* @param accountAddress
* @param vaultAddress
* @param tokenAddress
* @param amount
* @param gasless
* @param overrides
* @returns TransactionResponse
*/
approveDeposit(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, amount?: Integer, gasless?: boolean, overrides?: CallOverrides): Promise<TransactionResponse>;
populateApproveWithdraw(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, amount?: Integer, gasless?: boolean, overrides?: CallOverrides): Promise<PopulatedTransaction>;
/**
* Approve the token amount to allow to be used for withdraw
* @param accountAddress
* @param vaultAddress
* @param tokenAddress
* @param amount
* @param gasless
* @param overrides
* @returns TransactionResponse
*/
approveWithdraw(accountAddress: Address, vaultAddress: Address, tokenAddress: Address, amount?: Integer, gasless?: boolean, overrides?: CallOverrides): Promise<TransactionResponse>;
private getDepositContractAddress;
private getWithdrawContractAddress;
isUnderlyingToken(vaultAddress: Address, tokenAddress: Address): Promise<boolean>;
/**
* Get the expected outcome of a transaction
* @param transactionType
* @param sourceTokenAddress
* @param targetTokenAddress
* @param amount
* @param accountAddress
* @param slippageTolerance
* @param gasless
* @returns TransactionOutcome
*/
getExpectedTransactionOutcome({ transactionType, sourceTokenAddress, targetTokenAddress, sourceTokenAmount, accountAddress, slippageTolerance, gasless, }: {
transactionType: "DEPOSIT" | "WITHDRAW";
sourceTokenAddress: Address;
targetTokenAddress: Address;
sourceTokenAmount: Integer;
accountAddress: Address;
slippageTolerance?: number;
gasless?: boolean;
}): Promise<TransactionOutcome>;
/**
* Deposit into a yearn vault
* @param vault
* @param token
* @param amount
* @param account
* @param overrides
* @returns transaction
*/
deposit(vault: Address, token: Address, amount: Integer, account: Address, options?: DepositOptions, overrides?: CallOverrides): Promise<TransactionResponse>;
/**
* Gasless Deposit into a yearn vault
* @param vaultAddress
* @param tokenAddress
* @param tokenAmount
* @param vaultAmount
* @param feeAmount
* @param accountAddress
* @returns orderId
*/
gaslessDeposit({ vaultAddress, tokenAddress, tokenAmount, vaultAmount, feeAmount, accountAddress, }: {
vaultAddress: Address;
tokenAddress: Address;
tokenAmount: Integer;
vaultAmount: Integer;
feeAmount: Integer;
accountAddress: Address;
}): Promise<string>;
/**
* Withdraw from a yearn vault.
* @param vault
* @param token
* @param amount
* @param account
* @param overrides
* @returns transaction
*/
withdraw(vault: Address, token: Address, amount: Integer, account: Address, options?: WithdrawOptions, overrides?: CallOverrides): Promise<TransactionResponse>;
/**
* Gasless Withdraw into a yearn vault
* @param vaultAddress
* @param tokenAddress
* @param vaultAmount
* @param tokenAmount
* @param feeAmount
* @param accountAddress
* @returns orderId
*/
gaslessWithdraw({ vaultAddress, tokenAddress, vaultAmount, tokenAmount, feeAmount, accountAddress, }: {
vaultAddress: Address;
tokenAddress: Address;
vaultAmount: Integer;
tokenAmount: Integer;
feeAmount: Integer;
accountAddress: Address;
}): Promise<string>;
/**
* Fetches information a vault in a single call
* @param vaultAddress the vault to query's address
* @returns a `VaultInfo` object which includes various information about a vault, for example, its name and total assets
*/
getInfo(vaultAddress: Address): Promise<VaultInfo>;
private zapIn;
private fillTokenMetadataOverrides;
private fillMetadataOverrides;
private shouldUsePartnerService;
private makeEmptyApy;
populateDepositTransaction({ vault, token, amount, account, options, overrides, }: {
vault: Address;
token: Address;
amount: Integer;
account: Address;
options: DepositOptions;
overrides: CallOverrides;
}): Promise<TransactionRequest>;
populateWithdrawTransaction({ vault, token, amount, account, options, overrides, }: {
vault: Address;
token: Address;
amount: Integer;
account: Address;
options: WithdrawOptions;
overrides: CallOverrides;
}): Promise<TransactionRequest>;
private isZappingIntoPickleJar;
}