@devasher/kuru-sdk
Version:
Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)
86 lines • 3.65 kB
JavaScript
;
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