UNPKG

@bombearn/sdk

Version:

Interaction framework for the yearn protocol

216 lines (215 loc) 8.78 kB
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; }