@wormhole-foundation/sdk-connect
Version:
The core package for the Connect SDK, used in conjunction with 1 or more of the chain packages
47 lines • 2.29 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCircleAttestationWithRetry = exports.getCircleAttestation = exports.CircleAttestationStatus = exports.CIRCLE_RETRY_INTERVAL = void 0;
const axios_1 = __importDefault(require("axios"));
const tasks_js_1 = require("./tasks.js");
// Note: mostly ripped off from https://github.com/circlefin/cctp-sample-app/blob/master/src/services/attestationService.ts
exports.CIRCLE_RETRY_INTERVAL = 2000;
var CircleAttestationStatus;
(function (CircleAttestationStatus) {
CircleAttestationStatus["complete"] = "complete";
CircleAttestationStatus["pending_confirmations"] = "pending_confirmations";
})(CircleAttestationStatus || (exports.CircleAttestationStatus = CircleAttestationStatus = {}));
const mapCircleAttestation = (attestationResponse) => ({
message: attestationResponse.attestation,
status: attestationResponse.status,
});
async function getCircleAttestation(circleApi, msgHash) {
const url = `${circleApi}/${msgHash}`;
try {
const response = await axios_1.default.get(url);
const attestation = mapCircleAttestation(response?.data);
return attestation.message === "PENDING" ? null : attestation.message;
}
catch (error) {
if (!error)
return null;
if (typeof error === "object") {
// A 404 error means the VAA is not yet available
// since its not available yet, we return null signaling it can be tried again
if (axios_1.default.isAxiosError(error) && error.response?.status === 404)
return null;
if ("status" in error && error.status === 404)
return null;
}
throw error;
}
}
exports.getCircleAttestation = getCircleAttestation;
async function getCircleAttestationWithRetry(circleApi, msgHash, timeout) {
const task = () => getCircleAttestation(circleApi, msgHash);
return (0, tasks_js_1.retry)(task, exports.CIRCLE_RETRY_INTERVAL, timeout, "Circle:GetAttestation");
}
exports.getCircleAttestationWithRetry = getCircleAttestationWithRetry;
//# sourceMappingURL=circle-api.js.map
;