UNPKG

@debridge-finance/desdk

Version:

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

79 lines 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeBridgeApiSignatureStorage = exports.IPFSSignatureStorage = exports.SignersSignatureStorage = exports.FixedSignatureStorage = exports.DummySignatureStorage = exports.DeBridgeApiStatus = void 0; const ethers_1 = require("ethers"); const submission_1 = require("./submission"); class DeBridgeApiStatus { async getStatus(submissionId) { const url = [ `https://api.debridge.finance`, `/api/Transactions/GetFullSubmissionInfo?filter=${submissionId}`, ].join(""); const response = await fetch(url); const data = (await response.json()); if (data.send.isExecuted === true) return submission_1.SubmissionStatus.CLAIMED; else return submission_1.SubmissionStatus.WAITING_CLAIM; } } exports.DeBridgeApiStatus = DeBridgeApiStatus; class DummySignatureStorage { async getSignatures() { return ["0x1", "0x2", "0x3", "0x4", "0x5", "0x6", "0x7", "0x8"]; } } exports.DummySignatureStorage = DummySignatureStorage; class FixedSignatureStorage { constructor(_signatures) { this._signatures = _signatures; } async getSignatures() { return this._signatures; } } exports.FixedSignatureStorage = FixedSignatureStorage; class SignersSignatureStorage { constructor(_signers) { this._signers = _signers; } async getSignatures(submissionId) { const signatures = []; // see the note: https://docs.ethers.io/v5/api/signer/#Signer-signMessage // submissionId is a string (0x12[...]), but we must sign the bytes const bytesToSign = ethers_1.ethers.getBytes(submissionId); // Sort signers by their addresses to ensure consistent order const sortedSigners = await Promise.all(this._signers.map(async (signer) => ({ signer, address: await signer.getAddress(), }))); sortedSigners.sort((a, b) => BigInt(a.address) < BigInt(b.address) ? -1 : 1); // Collect signatures from sorted signers for (const { signer } of sortedSigners) { const signature = await signer.signMessage(bytesToSign); signatures.push(signature); } return signatures; } } exports.SignersSignatureStorage = SignersSignatureStorage; class IPFSSignatureStorage { async getSignatures() { throw new Error("IPFSSignatureStorage not implemented"); return []; } } exports.IPFSSignatureStorage = IPFSSignatureStorage; class DeBridgeApiSignatureStorage { async getSignatures(submissionId) { const url = [ `https://api.debridge.finance`, `/api/SubmissionConfirmations/getForSubmission?submissionId=${submissionId}`, ].join(""); const response = await fetch(url); const data = (await response.json()); return data.map((v) => v.signature); } } exports.DeBridgeApiSignatureStorage = DeBridgeApiSignatureStorage; //# sourceMappingURL=connectors.js.map