@debridge-finance/desdk
Version:
Send, track and claim arbitrary cross-chain messages over the deBridge protocol programmatically
79 lines • 3.07 kB
JavaScript
;
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