import { ChipiBrowserSDK } from "@chipi-stack/backend";
const browserClient = new ChipiBrowserSDK({
apiPublicKey: process.env.CHIPI_PUBLIC_KEY,
});
async function pollStatus(txHash: string) {
const terminal = ["ACCEPTED_ON_L1", "REJECTED", "REVERTED", "NOT_RECEIVED"];
const bearerToken = await getBearerToken();
const MAX_RETRIES = 60; // 60 retries * 3s = 3 minutes max
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
const { status, revertReason } = await browserClient.getTransactionStatus(
txHash,
bearerToken,
);
console.log(`Status: ${status} (attempt ${attempt + 1}/${MAX_RETRIES})`);
if (terminal.includes(status)) {
if (status === "REVERTED") console.error("Reverted:", revertReason);
return status;
}
await new Promise((r) => setTimeout(r, 3000));
}
throw new Error(`Transaction ${txHash} did not reach terminal status after ${MAX_RETRIES} attempts`);
}