0xtrails
Version:
SDK for Trails
46 lines (41 loc) • 1.35 kB
text/typescript
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" } }
}
}