UNPKG

eulith-web3js-core

Version:

Eulith core web3js SDK (code to access Eulith services via web3js)

73 lines (72 loc) 2.9 kB
import * as Eulith from "../src/index"; /** * @typedef Eulith.Shorts * * Open or close a levered short position through the Typescript client * * What is a levered short? * * It's a partially collateralized short. Normally, if you take a loan from Aave you have to OVER collateralize the loan. * * For example, let's say you want to short $10 worth of ETH. * A fully collateralized position would require $10 to short $10 worth of ETH. * With a levered short, you can short $10 worth of ETH for more like $2. * * NOTE: This is all FULLY non-custodial (Eulith doesn't manage any of the money) and FULLY on-chain * (money only comes from protocols, no centralized dark pool money). * * Shorts take place in an atomic tx (see Eulith.AtomicTx), and don't take effect until that transaction * is committed. * * Example Usage: * ~~~ * const collateralToken = await Eulith.Tokens.getTokenContract({provider: provider, symbol: Eulith.Tokens.Symbols.USDC,}); * const shortToken = await Eulith.Tokens.getTokenContract({provider: provider,symbol: Eulith.Tokens.Symbols.WETH,}); * const collateralAmount = 1000; * const atomicTx = new Eulith.AtomicTx.Transaction({ signer: acct }); * // Get short quote (leverage) * const eulithShortAPI = new Eulith.Shorts({ atomicTx: atomicTx }); * const leverage = await eulithShortAPI.shortOn({ * collateralToken: collateralToken, * shortToken: shortToken, * collateralAmount: collateralAmount, * }); * // Commit, sign, and send the short on position * const txReceipt = await atomicTx.commitAndSendAndWait({ * extraTXParams2Merge: { gas: 1000000 }, // override gas here * timeoutMS: 10 * 1000, * }); * ~~~ */ export declare class Shorts { /** * Eulith.Shorts constructor */ constructor({ atomicTx }: { atomicTx: Eulith.AtomicTx.Transaction; }); /** * Eulith.Shorts.prototype.shortOn */ shortOn({ collateralToken, shortToken, collateralAmount }: { collateralToken: Eulith.Contracts.ERC20TokenContract; shortToken: Eulith.Contracts.ERC20TokenContract; collateralAmount: number; }): Promise<number>; /** * Eulith.Shorts.prototype.shortOff */ shortOff({ collateralToken, shortToken, repayShortAmount, trueForUnwindA }: { collateralToken: Eulith.Contracts.ERC20TokenContract; shortToken: Eulith.Contracts.ERC20TokenContract; repayShortAmount: number; trueForUnwindA?: boolean; }): Promise<number>; /** * Eulith.Shorts.prototype.provider * * Not generally needed, but this is logically associated with a short object, so it can be accesssed. */ get provider(): Eulith.Provider; private provider_; }