UNPKG

@devasher/kuru-sdk

Version:

Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)

86 lines 3.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MarginWithdraw = void 0; // ============ External Imports ============ const ethers_1 = require("ethers"); // ============ Internal Imports ============ const utils_1 = require("../utils"); // ============ Config Imports ============ const MarginAccount_json_1 = __importDefault(require("../../abi/MarginAccount.json")); const txConfig_1 = __importDefault(require("../utils/txConfig")); class MarginWithdraw { static async withdraw(providerOrSigner, marginAccountAddress, tokenAddress, amount, decimals, txOptions) { try { let signer; try { signer = (await providerOrSigner.getAddress()) ? providerOrSigner : await providerOrSigner.getSigner(); } catch (_a) { signer = await providerOrSigner.getSigner(); } const formattedAmount = (0, ethers_1.parseUnits)(amount.toString(), decimals); const tx = await MarginWithdraw.constructWithdrawTransaction(signer, marginAccountAddress, tokenAddress, formattedAmount.toString(), txOptions); const transaction = await signer.sendTransaction(tx); const receipt = await transaction.wait(); if (!receipt) { throw new Error('Transaction failed'); } return receipt; } catch (e) { if (!e.error) { throw e; } throw (0, utils_1.extractErrorMessage)(e); } } static async constructWithdrawTransaction(signer, marginAccountAddress, tokenAddress, amount, txOptions) { const address = await signer.getAddress(); const marginAccountInterface = new ethers_1.ethers.Interface(MarginAccount_json_1.default.abi); const data = marginAccountInterface.encodeFunctionData('withdraw', [amount, tokenAddress]); return (0, txConfig_1.default)({ to: marginAccountAddress, from: address, data, txOptions, signer, }); } static async batchClaimMaxTokens(providerOrSigner, marginAccountAddress, tokens, txOptions) { let signer; try { signer = (await providerOrSigner.getAddress()) ? providerOrSigner : await providerOrSigner.getSigner(); } catch (_a) { signer = await providerOrSigner.getSigner(); } const tx = await MarginWithdraw.constructBatchClaimMaxTokensTransaction(signer, marginAccountAddress, tokens, txOptions); const transaction = await signer.sendTransaction(tx); const receipt = await transaction.wait(); if (!receipt) { throw new Error('Transaction failed'); } return receipt; } static async constructBatchClaimMaxTokensTransaction(signer, marginAccountAddress, tokens, txOptions) { const address = await signer.getAddress(); const marginAccountInterface = new ethers_1.ethers.Interface(MarginAccount_json_1.default.abi); const data = marginAccountInterface.encodeFunctionData('batchClaimMaxTokens', [tokens]); return (0, txConfig_1.default)({ to: marginAccountAddress, from: address, data, txOptions, signer, }); } } exports.MarginWithdraw = MarginWithdraw; //# sourceMappingURL=withdraw.js.map