@swipewallet/venus-js
Version:
A JavaScript SDK for Ethereum and the Venus Protocol.
149 lines (148 loc) • 6.03 kB
TypeScript
/**
* @file vToken
* @desc These methods facilitate interactions with the vToken smart
* contracts.
*/
import { BigNumber } from '@ethersproject/bignumber/lib/bignumber';
import { CallOptions, TrxResponse } from './types';
/**
* Supplies the user's Binance Smart Chain asset to the Venus Protocol.
*
* @param {string} asset A string of the asset to supply.
* @param {number | string | BigNumber} amount A string, number, or BigNumber
* object of the amount of an asset to supply. Use the `mantissa` boolean in
* the `options` parameter to indicate if this value is scaled up (so there
* are no decimals) or in its natural scale.
* @param {boolean} noApprove Explicitly prevent this method from attempting an
* BEP-20 `approve` transaction prior to sending the `mint` transaction.
* @param {CallOptions} [options] Call options and Ethers.js overrides for the
* transaction. A passed `gasLimit` will be used in both the `approve` (if
* not supressed) and `mint` transactions.
*
* @returns {object} Returns an Ethers.js transaction object of the supply
* transaction.
*
* @example
*
* ```
* const venus = new Venus(window.ethereum);
*
* // Ethers.js overrides are an optional 3rd parameter for `supply`
* // const trxOptions = { gasLimit: 250000, mantissa: false };
*
* (async function() {
*
* console.log('Supplying SXP to the Venus Protocol...');
* const trx = await venus.supply(Venus.SXP, 1);
* console.log('Ethers.js transaction object', trx);
*
* })().catch(console.error);
* ```
*/
export declare function supply(asset: string, amount: string | number | BigNumber, noApprove?: boolean, options?: CallOptions): Promise<TrxResponse>;
/**
* Redeems the user's Binance Smart Chain asset from the Venus Protocol.
*
* @param {string} asset A string of the asset to redeem, or its vToken name.
* @param {number | string | BigNumber} amount A string, number, or BigNumber
* object of the amount of an asset to redeem. Use the `mantissa` boolean in
* the `options` parameter to indicate if this value is scaled up (so there
* are no decimals) or in its natural scale. This can be an amount of
* vTokens or underlying asset (use the `asset` parameter to specify).
* @param {CallOptions} [options] Call options and Ethers.js overrides for the
* transaction.
*
* @returns {object} Returns an Ethers.js transaction object of the redeem
* transaction.
*
* @example
*
* ```
* const venus = new Venus(window.ethereum);
*
* (async function() {
*
* console.log('Redeeming SXP...');
* const trx = await venus.redeem(Venus.SXP, 1); // also accepts vToken args
* console.log('Ethers.js transaction object', trx);
*
* })().catch(console.error);
* ```
*/
export declare function redeem(asset: string, amount: string | number | BigNumber, options?: CallOptions): Promise<TrxResponse>;
/**
* Borrows an Binance Smart Chain asset from the Venus Protocol for the user.
* The user's address must first have supplied collateral and entered a
* corresponding market.
*
* @param {string} asset A string of the asset to borrow (must be a supported
* underlying asset).
* @param {number | string | BigNumber} amount A string, number, or BigNumber
* object of the amount of an asset to borrow. Use the `mantissa` boolean in
* the `options` parameter to indicate if this value is scaled up (so there
* are no decimals) or in its natural scale.
* @param {CallOptions} [options] Call options and Ethers.js overrides for the
* transaction.
*
* @returns {object} Returns an Ethers.js transaction object of the borrow
* transaction.
*
* @example
*
* ```
* const venus = new Venus(window.ethereum);
*
* (async function() {
*
* const sxpScaledUp = '32000000000000000000';
* const trxOptions = { mantissa: true };
*
* console.log('Borrowing 32 SXP...');
* const trx = await venus.borrow(Venus.SXP, sxpScaledUp, trxOptions);
*
* console.log('Ethers.js transaction object', trx);
*
* })().catch(console.error);
* ```
*/
export declare function borrow(asset: string, amount: string | number | BigNumber, options?: CallOptions): Promise<TrxResponse>;
/**
* Repays a borrowed Binance Smart Chain asset for the user or on behalf of
* another Binance Smart Chain address.
*
* @param {string} asset A string of the asset that was borrowed (must be a
* supported underlying asset).
* @param {number | string | BigNumber} amount A string, number, or BigNumber
* object of the amount of an asset to borrow. Use the `mantissa` boolean in
* the `options` parameter to indicate if this value is scaled up (so there
* are no decimals) or in its natural scale.
* @param {string | null} [borrower] The Binance Smart Chain address of the borrower
* to repay an open borrow for. Set this to `null` if the user is repaying
* their own borrow.
* @param {boolean} noApprove Explicitly prevent this method from attempting an
* ERC-20 `approve` transaction prior to sending the subsequent repayment
* transaction.
* @param {CallOptions} [options] Call options and Ethers.js overrides for the
* transaction. A passed `gasLimit` will be used in both the `approve` (if
* not supressed) and `repayBorrow` or `repayBorrowBehalf` transactions.
*
* @returns {object} Returns an Ethers.js transaction object of the repayBorrow
* or repayBorrowBehalf transaction.
*
* @example
*
* ```
* const venus = new Venus(window.ethereum);
*
* (async function() {
*
* console.log('Repaying SXP borrow...');
* const address = null; // set this to any address to repayBorrowBehalf
* const trx = await venus.repayBorrow(Venus.SXP, 32, address);
*
* console.log('Ethers.js transaction object', trx);
*
* })().catch(console.error);
* ```
*/
export declare function repayBorrow(asset: string, amount: string | number | BigNumber, borrower: string, noApprove?: boolean, options?: CallOptions): Promise<TrxResponse>;