/** * @file rToken * @desc These methods facilitate interactions with the rToken smart * contracts. */ import { BigNumber } from "@ethersproject/bignumber/lib/bignumber"; import { CallOptions, TrxResponse } from "./types"; /** * Supplies the user's Ethereum asset to the Rifi 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 * ERC-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 rifi = new Rifi(window.ethereum); * * // Ethers.js overrides are an optional 3rd parameter for `supply` * // const trxOptions = { gasLimit: 250000, mantissa: false }; * * (async function() { * * console.log('Supplying ETH to the Rifi Protocol...'); * const trx = await rifi.supply(Rifi.ETH, 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; /** * Redeems the user's Ethereum asset from the Rifi Protocol. * * @param {string} asset A string of the asset to redeem, or its rToken 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 * rTokens 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 rifi = new Rifi(window.ethereum); * * (async function() { * * console.log('Redeeming ETH...'); * const trx = await rifi.redeem(Rifi.ETH, 1); // also accepts rToken args * console.log('Ethers.js transaction object', trx); * * })().catch(console.error); * ``` */ export declare function redeem(asset: string, amount: string | number | BigNumber, options?: CallOptions): Promise; /** * Borrows an Ethereum asset from the Rifi 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 rifi = new Rifi(window.ethereum); * * (async function() { * * const daiScaledUp = '32000000000000000000'; * const trxOptions = { mantissa: true }; * * console.log('Borrowing 32 Dai...'); * const trx = await rifi.borrow(Rifi.DAI, daiScaledUp, trxOptions); * * console.log('Ethers.js transaction object', trx); * * })().catch(console.error); * ``` */ export declare function borrow(asset: string, amount: string | number | BigNumber, options?: CallOptions): Promise; /** * Repays a borrowed Ethereum asset for the user or on behalf of another * Ethereum 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 Ethereum 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 rifi = new Rifi(window.ethereum); * * (async function() { * * console.log('Repaying Dai borrow...'); * const address = null; // set this to any address to repayBorrowBehalf * const trx = await rifi.repayBorrow(Rifi.DAI, 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; /** * Supplies the user's Ethereum asset to the Rifi 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 * ERC-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 rifi = new Rifi(window.ethereum); * * // Ethers.js overrides are an optional 3rd parameter for `supply` * // const trxOptions = { gasLimit: 250000, mantissa: false }; * * (async function() { * * console.log('Supplying ETH to the Rifi Protocol...'); * const trx = await rifi.supply(Rifi.ETH, 1); * console.log('Ethers.js transaction object', trx); * * })().catch(console.error); * ``` */ export declare function tokenRead(func: string, rTokenName: string, parameters?: any[], options?: CallOptions): Promise; export declare function getBalanceOf(rTokenName: string, accountAddr: string, options?: CallOptions): Promise; export declare function getBorrowBalanceOf(rTokenName: string, accountAddr: string, options?: CallOptions): Promise; export declare function liquidateBorrow(borrower: string, amount: string | number | BigNumber, tokenRepay: string, tokenCollateral: string, options?: CallOptions): Promise;