UNPKG

0xtrails

Version:

SDK for Trails

46 lines (41 loc) 1.35 kB
import type { IntentPrecondition } from "@0xsequence/trails-api" import type { Relayer } from "@0xsequence/wallet-core" import type { Hex } from "viem" import type { MetaTxn } from "./metaTxnMonitor.js" import { logger } from "./logger.js" export async function relayerSendMetaTx( relayer: Relayer.Standard.Rpc.RpcRelayer, metaTx: MetaTxn, preconditions: IntentPrecondition[], feeQuote?: Relayer.FeeQuote, ): Promise<Hex> { const { opHash } = await relayer.sendMetaTxn( metaTx.walletAddress as `0x${string}`, metaTx.contract as `0x${string}`, metaTx.input as Hex, Number(metaTx.chainId), feeQuote, preconditions, ) return opHash } export async function getMetaTxnReceipt( relayer: Relayer.Standard.Rpc.RpcRelayer, metaTxId: string, chainId: number, ): Promise<{ receipt: { status: "confirmed" | "failed" | "pending" } }> { try { const status = await relayer.status(metaTxId as `0x${string}`, chainId) switch (status.status) { case "confirmed": return { receipt: { status: "confirmed" } } case "failed": return { receipt: { status: "failed" } } default: return { receipt: { status: "pending" } } } } catch (error) { logger.console.error("Error getting meta transaction receipt:", error) return { receipt: { status: "pending" } } } }