UNPKG

@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
"use strict"; 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