Skip to main content
Generate a link to MEE Scan explorer for a supertransaction.
import { getMeeScanLink } from "@biconomy/abstractjs";

const link = getMeeScanLink(hash);

Parameters

ParameterTypeRequiredDescription
hashHexYesSupertransaction hash

Returns

string - URL to MEE Scan

Example

const { hash } = await meeClient.executeQuote({ quote });
const link = getMeeScanLink(hash);

console.log("View transaction:", link);
// https://meescan.biconomy.io/tx/0x...

getMEEVersion

Get MEE version configuration for account setup.
import { getMEEVersion, MEEVersion } from "@biconomy/abstractjs";

const version = getMEEVersion(MEEVersion.V2_1_0);

MEEVersion Enum

enum MEEVersion {
  V2_1_0 = "2.1.0",
  V2_2_0 = "2.2.0"
}

Example

const account = await toMultichainNexusAccount({
  signer,
  chainConfigurations: [
    {
      chain: base,
      transport: http(),
      version: getMEEVersion(MEEVersion.V2_1_0)
    }
  ]
});

userOp

Reference a specific user operation for dependencies.
import { userOp } from "@biconomy/abstractjs";

const ref = userOp(2);  // Reference to 3rd instruction (0-indexed)

Usage

const quote = await meeClient.getQuote({
  instructions: [instruction1, instruction2, instruction3],
  cleanUps: [
    {
      chainId: 8453,
      tokenAddress: USDC,
      recipientAddress: userEOA,
      dependsOn: [userOp(2)]  // Wait for instruction3
    }
  ],
  feeToken
});

toFeeToken

Helper to create FeeTokenInfo from multichain token.
import { toFeeToken } from "@biconomy/abstractjs";

const feeToken = toFeeToken({
  mcToken: mcUSDC,
  chainId: 8453
});

Simulation Options

Configure simulation for gas estimation.
const quote = await meeClient.getFusionQuote({
  trigger,
  instructions,
  feeToken,
  simulation: {
    simulate: true,
    overrides: {
      tokenOverrides: [
        {
          tokenAddress: USDC,
          chainId: 8453,
          balance: parseUnits("1000", 6),
          accountAddress: account.addressOn(8453, true)
        }
      ]
    }
  }
});

SimulationOptions

PropertyTypeDescription
simulatebooleanEnable simulation
overridesOverridesState overrides

Overrides

PropertyTypeDescription
tokenOverridesTokenOverride[]Mock token balances
customOverridesCustomOverride[]Custom storage slots

Constants

Default URLs

import { 
  DEFAULT_PATHFINDER_URL,
  DEFAULT_MEE_TESTNET_SPONSORSHIP_PAYMASTER_ACCOUNT,
  DEFAULT_MEE_TESTNET_SPONSORSHIP_TOKEN_ADDRESS,
  DEFAULT_MEE_TESTNET_SPONSORSHIP_CHAIN_ID
} from "@biconomy/abstractjs";

Nexus Singleton

const NEXUS_V120_SINGLETON = "0x000000004F43C49e93C970E84001853a70923B03";

Type Exports

import type {
  MeeClient,
  MultichainSmartAccount,
  Instruction,
  FeeTokenInfo,
  Trigger,
  Quote,
  FusionQuote,
  Receipt,
  SessionDetails,
  Condition,
  RuntimeValue,
  CleanUp
} from "@biconomy/abstractjs";

Viem Re-exports

AbstractJS re-exports commonly used viem utilities:
import { 
  parseUnits,
  parseEther,
  formatUnits,
  encodeFunctionData,
  decodeFunctionResult,
  toFunctionSelector,
  getAbiItem,
  pad,
  toHex
} from "viem";

Error Handling

try {
  const { hash } = await meeClient.executeQuote({ quote });
  const receipt = await meeClient.waitForSupertransactionReceipt({ hash });
  
  if (receipt.transactionStatus === "MINED_SUCCESS") {
    console.log("Success!");
  } else if (receipt.transactionStatus === "MINED_FAILED") {
    console.error("Transaction failed on-chain");
    receipt.userOps.forEach(op => {
      console.log(`Chain ${op.chainId}: ${op.executionStatus}`);
    });
  }
} catch (error) {
  if (error.code === "INSUFFICIENT_FUNDS") {
    console.error("Not enough tokens for gas");
  } else if (error.code === "SIMULATION_FAILED") {
    console.error("Transaction would revert");
  } else {
    throw error;
  }
}