@wormhole-foundation/sdk-connect
Version:
The core package for the Connect SDK, used in conjunction with 1 or more of the chain packages
39 lines • 1.73 kB
JavaScript
import axios from "axios";
import { retry } from "./tasks.js";
// Note: mostly ripped off from https://github.com/circlefin/cctp-sample-app/blob/master/src/services/attestationService.ts
export const CIRCLE_RETRY_INTERVAL = 2000;
export var CircleAttestationStatus;
(function (CircleAttestationStatus) {
CircleAttestationStatus["complete"] = "complete";
CircleAttestationStatus["pending_confirmations"] = "pending_confirmations";
})(CircleAttestationStatus || (CircleAttestationStatus = {}));
const mapCircleAttestation = (attestationResponse) => ({
message: attestationResponse.attestation,
status: attestationResponse.status,
});
export async function getCircleAttestation(circleApi, msgHash) {
const url = `${circleApi}/${msgHash}`;
try {
const response = await axios.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.isAxiosError(error) && error.response?.status === 404)
return null;
if ("status" in error && error.status === 404)
return null;
}
throw error;
}
}
export async function getCircleAttestationWithRetry(circleApi, msgHash, timeout) {
const task = () => getCircleAttestation(circleApi, msgHash);
return retry(task, CIRCLE_RETRY_INTERVAL, timeout, "Circle:GetAttestation");
}
//# sourceMappingURL=circle-api.js.map