@debridge-finance/desdk
Version:
Send, track and claim arbitrary cross-chain messages over the deBridge protocol programmatically
42 lines • 1.53 kB
JavaScript
import { getDeBridgeGate, getSignatureStorage, } from "./context";
export class Claim {
constructor(args, ctx) {
this.ctx = ctx;
Object.assign(this, args);
}
// TODO reasonable to introduce per-chain caching here
async getRequiredSignaturesCount() {
const contract = getDeBridgeGate(this.ctx);
const excessConfirmations = await getDeBridgeGate(this.ctx).excessConfirmations();
return Number(excessConfirmations);
}
async isSigned() {
const signatures = await this.getSignatures();
const minRequiredSignatures = await this.getRequiredSignaturesCount();
return signatures.length >= minRequiredSignatures;
}
async isExecuted() {
return this.isClaimed();
}
async isClaimed() {
const contract = getDeBridgeGate(this.ctx);
return contract.isSubmissionUsed(this.submissionId);
}
async getSignatures() {
const storage = getSignatureStorage(this.ctx);
return storage.getSignatures(this.submissionId);
}
async getEncodedArgs() {
const signatures = await this.getSignatures();
return [
this.debridgeId.toString(),
this.amount.toString(),
this.chainIdFrom.toString(),
this.receiver.toString(),
this.nonce.toString(),
"0x" + signatures.map((s) => s.replace(/^0x/, "")).join(""),
this.autoParams ? this.autoParams.encode() : "0x",
];
}
}
//# sourceMappingURL=claim.js.map