Reference
Type Guards
Type guard helpers for working with discriminated unions
The SDK includes type guard helpers for working with the various discriminated unions returned by the API.
Route Guards
Distinguish between quotes and errors when processing route results.
import { routeGuards } from "@superbridge/sdk";
for (const route of routes.data) {
if (routeGuards.isRouteQuote(route.result)) {
// route.result is a quote with initiatingTransaction, fees, etc.
}
if (routeGuards.isRouteQuoteError(route.result)) {
// route.result is an error with a type field
}
if (routeGuards.isAmountTooLargeRouteError(route.result)) {
// route.result.maximum is available
}
if (routeGuards.isAmountTooSmallRouteError(route.result)) {
// route.result.minimum is available
}
}Transaction Guards
Narrow the initiatingTransaction on a route quote to a specific chain type.
import { txGuards } from "@superbridge/sdk";
const { initiatingTransaction } = quote;
if (txGuards.isEvmTx(initiatingTransaction)) {
// InitiatingTransactionEvmDto5 - has to, data, value, chainId
}
if (txGuards.isEvmGaslessTx(initiatingTransaction)) {
// InitiatingTransactionEvmGaslessDto5
}
if (txGuards.isSvmTx(initiatingTransaction)) {
// InitiatingTransactionSvmDto5
}
if (txGuards.isStarknetTx(initiatingTransaction)) {
// InitiatingTransactionStarkDto5
}Activity Step Guards
Narrow steps on a SteppedBridgeDto to their specific types and statuses.
import { activityStepGuards } from "@superbridge/sdk";
for (const step of bridge.steps) {
// Narrow by step kind
if (activityStepGuards.isTransactionStep(step)) {
// TransactionStepDoneDto | TransactionStepNotReadyDto | TransactionStepReadyDto | TransactionStepAutoDto
}
if (activityStepGuards.isWaitStep(step)) {
// WaitStepDoneDto | WaitStepInProgressDto | WaitStepNotStartedDto
}
if (activityStepGuards.isInfoStep(step)) {
// InfoStepDto
}
// Narrow transaction steps by status
if (activityStepGuards.isTransactionStepReady(step)) {
// TransactionStepReadyDto - has initiatingTransaction
}
if (activityStepGuards.isTransactionStepDone(step)) {
// TransactionStepDoneDto - has confirmation
}
if (activityStepGuards.isTransactionStepNotReady(step)) {
// TransactionStepNotReadyDto - has estimatedGas
}
if (activityStepGuards.isTransactionStepAuto(step)) {
// TransactionStepAutoDto - executed automatically
}
}Wait steps can also be narrowed:
import { activityStepGuards } from "@superbridge/sdk";
for (const step of bridge.steps) {
if (!activityStepGuards.isWaitStep(step)) continue;
if (activityStepGuards.isWaitStepNotStarted(step)) {
// WaitStepNotStartedDto
}
if (activityStepGuards.isWaitStepInProgress(step)) {
// WaitStepInProgressDto
}
if (activityStepGuards.isWaitStepDone(step)) {
// WaitStepDoneDto
}
}Confirmation Guards
Check the status of a ConfirmationDtoV2.
import { confirmationGuards } from "@superbridge/sdk";
if (confirmationGuards.isConfirmedSuccessTx(confirmation)) {
// Has a valid transactionHash and confirmed status
}
if (confirmationGuards.isConfirmedFailedTx(confirmation)) {
// Has a transactionHash but status is not confirmed
}