eulith-web3js-core
Version:
Eulith core web3js SDK (code to access Eulith services via web3js)
98 lines • 11.2 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Shorts = void 0;
/**
* @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,
* });
* ~~~
*/
class Shorts {
/**
* Eulith.Shorts constructor
*/
constructor({ atomicTx }) {
this.provider_ = atomicTx.provider;
}
/**
* Eulith.Shorts.prototype.shortOn
*/
shortOn({ collateralToken, shortToken, collateralAmount }) {
return __awaiter(this, void 0, void 0, function* () {
const wireFormatParams = {
collateral_token: collateralToken.address,
short_token: shortToken.address,
collateral_amount: collateralAmount
};
const res = yield this.provider_.request({ method: "eulith_short_on", params: [wireFormatParams] });
return res === null || res === void 0 ? void 0 : res.leverage;
});
}
/**
* Eulith.Shorts.prototype.shortOff
*/
shortOff({ collateralToken, shortToken, repayShortAmount, trueForUnwindA }) {
return __awaiter(this, void 0, void 0, function* () {
const wireFormatParams = {
collateral_token: collateralToken.address,
short_token: shortToken.address,
repay_short_amount: repayShortAmount,
true_for_unwind_a: trueForUnwindA
};
const res = yield this.provider_.request({ method: "eulith_short_off", params: [wireFormatParams] });
return res === null || res === void 0 ? void 0 : res.released_collateral;
});
}
/**
* Eulith.Shorts.prototype.provider
*
* Not generally needed, but this is logically associated with a short object, so it can be accesssed.
*/
get provider() {
return this.provider_;
}
}
exports.Shorts = Shorts;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nob3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFhLE1BQU07SUFDZjs7T0FFRztJQUNILFlBQW1CLEVBQUUsUUFBUSxFQUE2QztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ1UsT0FBTyxDQUFDLEVBQ2pCLGVBQWUsRUFDZixVQUFVLEVBQ1YsZ0JBQWdCLEVBS25COztZQUNHLE1BQU0sZ0JBQWdCLEdBQUc7Z0JBQ3JCLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxPQUFPO2dCQUN6QyxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU87Z0JBQy9CLGlCQUFpQixFQUFFLGdCQUFnQjthQUN0QyxDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRyxPQUFPLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxRQUFRLENBQUM7UUFDekIsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDVSxRQUFRLENBQUMsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsY0FBYyxFQU1qQjs7WUFDRyxNQUFNLGdCQUFnQixHQUFHO2dCQUNyQixnQkFBZ0IsRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDekMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMvQixrQkFBa0IsRUFBRSxnQkFBZ0I7Z0JBQ3BDLGlCQUFpQixFQUFFLGNBQWM7YUFDcEMsQ0FBQztZQUNGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckcsT0FBTyxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsbUJBQW1CLENBQUM7UUFDcEMsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBR0o7QUEvREQsd0JBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRXVsaXRoIGZyb20gXCIuLi9zcmMvaW5kZXhcIjtcblxuLyoqXG4gKiBAdHlwZWRlZiBFdWxpdGguU2hvcnRzXG4gKlxuICogIE9wZW4gb3IgY2xvc2UgYSBsZXZlcmVkIHNob3J0IHBvc2l0aW9uIHRocm91Z2ggdGhlIFR5cGVzY3JpcHQgY2xpZW50XG4gKlxuICogIFdoYXQgaXMgYSBsZXZlcmVkIHNob3J0P1xuICpcbiAqICBJdCdzIGEgcGFydGlhbGx5IGNvbGxhdGVyYWxpemVkIHNob3J0LiBOb3JtYWxseSwgaWYgeW91IHRha2UgYSBsb2FuIGZyb20gQWF2ZSB5b3UgaGF2ZSB0byBPVkVSIGNvbGxhdGVyYWxpemUgdGhlIGxvYW4uXG4gKlxuICogIEZvciBleGFtcGxlLCBsZXQncyBzYXkgeW91IHdhbnQgdG8gc2hvcnQgJDEwIHdvcnRoIG9mIEVUSC5cbiAqICBBIGZ1bGx5IGNvbGxhdGVyYWxpemVkIHBvc2l0aW9uIHdvdWxkIHJlcXVpcmUgJDEwIHRvIHNob3J0ICQxMCB3b3J0aCBvZiBFVEguXG4gKiAgV2l0aCBhIGxldmVyZWQgc2hvcnQsIHlvdSBjYW4gc2hvcnQgJDEwIHdvcnRoIG9mIEVUSCBmb3IgbW9yZSBsaWtlICQyLlxuICpcbiAqICBOT1RFOiBUaGlzIGlzIGFsbCBGVUxMWSBub24tY3VzdG9kaWFsIChFdWxpdGggZG9lc24ndCBtYW5hZ2UgYW55IG9mIHRoZSBtb25leSkgYW5kIEZVTExZIG9uLWNoYWluXG4gKiAgKG1vbmV5IG9ubHkgY29tZXMgZnJvbSBwcm90b2NvbHMsIG5vIGNlbnRyYWxpemVkIGRhcmsgcG9vbCBtb25leSkuXG4gKlxuICogIFNob3J0cyB0YWtlIHBsYWNlIGluIGFuIGF0b21pYyB0eCAoc2VlIEV1bGl0aC5BdG9taWNUeCksIGFuZCBkb24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGF0IHRyYW5zYWN0aW9uXG4gKiAgaXMgY29tbWl0dGVkLlxuICpcbiAqICBFeGFtcGxlIFVzYWdlOlxuICogICAgICB+fn5cbiAqICAgICAgICAgIGNvbnN0IGNvbGxhdGVyYWxUb2tlbiA9IGF3YWl0IEV1bGl0aC5Ub2tlbnMuZ2V0VG9rZW5Db250cmFjdCh7cHJvdmlkZXI6IHByb3ZpZGVyLCBzeW1ib2w6IEV1bGl0aC5Ub2tlbnMuU3ltYm9scy5VU0RDLH0pO1xuICogICAgICAgICAgY29uc3Qgc2hvcnRUb2tlbiA9IGF3YWl0IEV1bGl0aC5Ub2tlbnMuZ2V0VG9rZW5Db250cmFjdCh7cHJvdmlkZXI6IHByb3ZpZGVyLHN5bWJvbDogRXVsaXRoLlRva2Vucy5TeW1ib2xzLldFVEgsfSk7XG4gKiAgICAgICAgICBjb25zdCBjb2xsYXRlcmFsQW1vdW50ID0gMTAwMDtcbiAqICAgICAgICAgIGNvbnN0IGF0b21pY1R4ID0gbmV3IEV1bGl0aC5BdG9taWNUeC5UcmFuc2FjdGlvbih7IHNpZ25lcjogYWNjdCB9KTtcbiAqICAgICAgICAgIC8vIEdldCBzaG9ydCBxdW90ZSAobGV2ZXJhZ2UpXG4gKiAgICAgICAgICBjb25zdCBldWxpdGhTaG9ydEFQSSA9IG5ldyBFdWxpdGguU2hvcnRzKHsgYXRvbWljVHg6IGF0b21pY1R4IH0pO1xuICogICAgICAgICAgY29uc3QgbGV2ZXJhZ2UgPSBhd2FpdCBldWxpdGhTaG9ydEFQSS5zaG9ydE9uKHtcbiAqICAgICAgICAgICAgICBjb2xsYXRlcmFsVG9rZW46IGNvbGxhdGVyYWxUb2tlbixcbiAqICAgICAgICAgICAgICBzaG9ydFRva2VuOiBzaG9ydFRva2VuLFxuICogICAgICAgICAgICAgIGNvbGxhdGVyYWxBbW91bnQ6IGNvbGxhdGVyYWxBbW91bnQsXG4gKiAgICAgICAgICB9KTtcbiAqICAgICAgICAgIC8vIENvbW1pdCwgc2lnbiwgYW5kIHNlbmQgdGhlIHNob3J0IG9uIHBvc2l0aW9uXG4gKiAgICAgICAgICBjb25zdCB0eFJlY2VpcHQgPSBhd2FpdCBhdG9taWNUeC5jb21taXRBbmRTZW5kQW5kV2FpdCh7XG4gKiAgICAgICAgICAgICAgZXh0cmFUWFBhcmFtczJNZXJnZTogeyBnYXM6IDEwMDAwMDAgfSwgLy8gb3ZlcnJpZGUgZ2FzIGhlcmVcbiAqICAgICAgICAgICAgICB0aW1lb3V0TVM6IDEwICogMTAwMCxcbiAqICAgICAgICAgIH0pO1xuICogICAgICB+fn5cbiAqL1xuZXhwb3J0IGNsYXNzIFNob3J0cyB7XG4gICAgLyoqXG4gICAgICogRXVsaXRoLlNob3J0cyBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcih7IGF0b21pY1R4IH06IHsgYXRvbWljVHg6IEV1bGl0aC5BdG9taWNUeC5UcmFuc2FjdGlvbiB9KSB7XG4gICAgICAgIHRoaXMucHJvdmlkZXJfID0gYXRvbWljVHgucHJvdmlkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXVsaXRoLlNob3J0cy5wcm90b3R5cGUuc2hvcnRPblxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzaG9ydE9uKHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuLFxuICAgICAgICBzaG9ydFRva2VuLFxuICAgICAgICBjb2xsYXRlcmFsQW1vdW50XG4gICAgfToge1xuICAgICAgICBjb2xsYXRlcmFsVG9rZW46IEV1bGl0aC5Db250cmFjdHMuRVJDMjBUb2tlbkNvbnRyYWN0O1xuICAgICAgICBzaG9ydFRva2VuOiBFdWxpdGguQ29udHJhY3RzLkVSQzIwVG9rZW5Db250cmFjdDtcbiAgICAgICAgY29sbGF0ZXJhbEFtb3VudDogbnVtYmVyO1xuICAgIH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB3aXJlRm9ybWF0UGFyYW1zID0ge1xuICAgICAgICAgICAgY29sbGF0ZXJhbF90b2tlbjogY29sbGF0ZXJhbFRva2VuLmFkZHJlc3MsXG4gICAgICAgICAgICBzaG9ydF90b2tlbjogc2hvcnRUb2tlbi5hZGRyZXNzLFxuICAgICAgICAgICAgY29sbGF0ZXJhbF9hbW91bnQ6IGNvbGxhdGVyYWxBbW91bnRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm92aWRlcl8ucmVxdWVzdCh7IG1ldGhvZDogXCJldWxpdGhfc2hvcnRfb25cIiwgcGFyYW1zOiBbd2lyZUZvcm1hdFBhcmFtc10gfSk7XG4gICAgICAgIHJldHVybiByZXM/LmxldmVyYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV1bGl0aC5TaG9ydHMucHJvdG90eXBlLnNob3J0T2ZmXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNob3J0T2ZmKHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuLFxuICAgICAgICBzaG9ydFRva2VuLFxuICAgICAgICByZXBheVNob3J0QW1vdW50LFxuICAgICAgICB0cnVlRm9yVW53aW5kQVxuICAgIH06IHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuOiBFdWxpdGguQ29udHJhY3RzLkVSQzIwVG9rZW5Db250cmFjdDtcbiAgICAgICAgc2hvcnRUb2tlbjogRXVsaXRoLkNvbnRyYWN0cy5FUkMyMFRva2VuQ29udHJhY3Q7XG4gICAgICAgIHJlcGF5U2hvcnRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdHJ1ZUZvclVud2luZEE/OiBib29sZWFuO1xuICAgIH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB3aXJlRm9ybWF0UGFyYW1zID0ge1xuICAgICAgICAgICAgY29sbGF0ZXJhbF90b2tlbjogY29sbGF0ZXJhbFRva2VuLmFkZHJlc3MsXG4gICAgICAgICAgICBzaG9ydF90b2tlbjogc2hvcnRUb2tlbi5hZGRyZXNzLFxuICAgICAgICAgICAgcmVwYXlfc2hvcnRfYW1vdW50OiByZXBheVNob3J0QW1vdW50LFxuICAgICAgICAgICAgdHJ1ZV9mb3JfdW53aW5kX2E6IHRydWVGb3JVbndpbmRBXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvdmlkZXJfLnJlcXVlc3QoeyBtZXRob2Q6IFwiZXVsaXRoX3Nob3J0X29mZlwiLCBwYXJhbXM6IFt3aXJlRm9ybWF0UGFyYW1zXSB9KTtcbiAgICAgICAgcmV0dXJuIHJlcz8ucmVsZWFzZWRfY29sbGF0ZXJhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdWxpdGguU2hvcnRzLnByb3RvdHlwZS5wcm92aWRlclxuICAgICAqXG4gICAgICogIE5vdCBnZW5lcmFsbHkgbmVlZGVkLCBidXQgdGhpcyBpcyBsb2dpY2FsbHkgYXNzb2NpYXRlZCB3aXRoIGEgc2hvcnQgb2JqZWN0LCBzbyBpdCBjYW4gYmUgYWNjZXNzc2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvdmlkZXIoKTogRXVsaXRoLlByb3ZpZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJfO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvdmlkZXJfOiBFdWxpdGguUHJvdmlkZXI7XG59XG4iXX0=