Skip to main content

Usage

const bearerToken = await getBearerToken();
const status = await browserClient.getTransactionStatus("0x...", bearerToken);

Parameters

  • hash (string): Transaction hash (0x...)
  • bearerToken (string): Bearer token for authentication

Return Value

Returns a Promise<TransactionStatusResponse> with:
  • transactionHash (string): Transaction hash
  • status (OnChainTxStatus): RECEIVED, PENDING, ACCEPTED_ON_L2, ACCEPTED_ON_L1, REJECTED, REVERTED, or NOT_RECEIVED
  • blockNumber (number, optional): Block number if included in a block
  • revertReason (string, optional): Reason if REVERTED

Example Implementation

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`);
}