eulith-web3js-core
Version:
Eulith core web3js SDK (code to access Eulith services via web3js)
73 lines (72 loc) • 2.9 kB
TypeScript
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_;
}