UNPKG

@debridge-finance/desdk

Version:

Send, track and claim arbitrary cross-chain messages over the deBridge protocol programmatically

93 lines 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Submission = exports.SubmissionStatus = void 0; const ethers_1 = require("ethers"); const claim_1 = require("./claim"); const context_1 = require("./context"); const structs_1 = require("./structs"); const typechain_1 = require("./typechain"); var SubmissionStatus; (function (SubmissionStatus) { SubmissionStatus[SubmissionStatus["WAITING_CONFIRMATION"] = 0] = "WAITING_CONFIRMATION"; SubmissionStatus[SubmissionStatus["WAITING_CLAIM"] = 1] = "WAITING_CLAIM"; SubmissionStatus[SubmissionStatus["CLAIMED"] = 2] = "CLAIMED"; })(SubmissionStatus || (exports.SubmissionStatus = SubmissionStatus = {})); class Submission { static async findAll(txHash, ctx) { const events = await getSentEvents(txHash, ctx); const originChainId = Number((await (0, context_1.getProvider)(ctx).getNetwork()).chainId); return events.map((sentEvent) => new Submission({ submissionId: sentEvent.args.submissionId.toString(), debridgeId: sentEvent.args.debridgeId.toString(), amount: sentEvent.args.amount.toString(), receiver: sentEvent.args.receiver.toString(), nonce: sentEvent.args.nonce.toString(), chainIdTo: sentEvent.args.chainIdTo.toString(), referralCode: sentEvent.args.referralCode, feeParams: sentEvent.args.feeParams, autoParams: sentEvent.args.autoParams === "0x" ? undefined : structs_1.SendAutoParams.decode(sentEvent.args.autoParams), nativeSender: sentEvent.args.nativeSender.toString(), originChainId, sentEvent, }, ctx)); } static async find(txHash, submissionId, ctx) { const submissions = await Submission.findAll(txHash, ctx); return submissions.find((s) => s.submissionId === submissionId); } constructor(args, ctx) { this.ctx = ctx; Object.assign(this, args); } async hasRequiredBlockConfirmations(overrideBlockConfirmations) { const requiredConfirmations = overrideBlockConfirmations === undefined ? await this._getRequiredConfirmations() : overrideBlockConfirmations; const currentBlockNumber = await (0, context_1.getProvider)(this.ctx).getBlockNumber(); const submissionBlockNumber = this.sentEvent.blockNumber; if (submissionBlockNumber + requiredConfirmations <= currentBlockNumber) { return true; } return false; } async _getRequiredConfirmations() { const { chainId } = await (0, context_1.getProvider)(this.ctx).getNetwork(); if (chainId === 137n) return 256; else return 12; } async toEVMClaim(destinationCtx) { if (!destinationCtx.signatureStorage) destinationCtx.signatureStorage = this.ctx.signatureStorage; return new claim_1.Claim({ submissionId: this.submissionId, debridgeId: this.debridgeId, amount: this.amount, chainIdFrom: this.originChainId, receiver: this.receiver, nonce: this.nonce, autoParams: this.autoParams ? this.autoParams.toClaimAutoParams(this) : undefined, }, destinationCtx); } } exports.Submission = Submission; async function getSentEvents(txHash, opts) { const provider = (0, context_1.getProvider)(opts); const txReceipt = await provider.getTransactionReceipt(txHash); if (!txReceipt) return []; const contract = typechain_1.DeBridgeGate__factory.connect((0, context_1.getDeBridgeGateAddress)(opts), provider); return txReceipt.logs .map((log) => { const logDescription = contract.interface.parseLog(log); if (logDescription?.name === "Sent") return new ethers_1.EventLog(log, contract.interface, logDescription.fragment); }) .filter((log) => log !== undefined); } //# sourceMappingURL=submission.js.map