Documentation Index
Fetch the complete documentation index at: https://docs.biconomy.io/llms.txt
Use this file to discover all available pages before exploring further.
createMeeClient
Creates a client connected to the Modular Execution Environment for gasless, cross-chain execution.
const meeClient = await createMeeClient(options);
Parameters
| Parameter | Type | Required | Description |
|---|
account | MultichainSmartAccount | Yes | The multichain account |
apiKey | string | No | API key for sponsorship |
url | string | No | Custom MEE node URL |
isDebugMode | boolean | No | When true, enables extra logging for HTTP calls, receipt polling, permit checks and etc. |
Returns
MeeClient
Example
import { createMeeClient, toMultichainNexusAccount } from "@biconomy/abstractjs";
const account = await toMultichainNexusAccount({ /* ... */ });
const meeClient = await createMeeClient({ account });
// With API key for sponsorship
const meeClient = await createMeeClient({
account,
apiKey: "your-api-key"
});
MeeClient Methods
getQuote
Get a quote for executing instructions. Returns cost estimates and payloads to sign.
const quote = await meeClient.getQuote(options);
Parameters
| Parameter | Type | Required | Description |
|---|
instructions | Instruction[] | Yes | Array of instructions |
feeToken | FeeTokenInfo | Yes* | Token to pay gas with |
sponsorship | boolean | No | Enable gas sponsorship |
delegate | boolean | No | Enable EIP-7702 mode |
authorization | Authorization | No | EIP-7702 authorization |
lowerBoundTimestamp | number | No | Earliest execution time |
upperBoundTimestamp | number | No | Latest execution time |
cleanUps | CleanUp[] | No | Cleanup instructions |
*Not required if sponsorship: true
Returns
type Quote = {
hash: Hex;
paymentInfo: {
tokenAmount: string;
tokenAddress: Address;
chainId: number;
};
userOps: UserOp[];
// ... signing payloads
};
Example
const quote = await meeClient.getQuote({
instructions: [instruction1, instruction2],
feeToken: {
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
chainId: 8453
}
});
console.log("Fee:", quote.paymentInfo.tokenAmount);
getFusionQuote
Get a quote for Fusion mode (external wallets like MetaMask).
const fusionQuote = await meeClient.getFusionQuote(options);
Parameters
| Parameter | Type | Required | Description |
|---|
trigger | Trigger | Yes | Token pull trigger |
instructions | Instruction[] | Yes | Array of instructions |
feeToken | FeeTokenInfo | Yes* | Token to pay gas with |
sponsorship | boolean | No | Enable gas sponsorship |
cleanUps | CleanUp[] | No | Cleanup instructions |
upperBoundTimestamp | number | No | Latest execution time |
simulation | SimulationOptions | No | Simulation config |
Example
const fusionQuote = await meeClient.getFusionQuote({
trigger: {
chainId: 8453,
tokenAddress: USDC,
amount: parseUnits("100", 6)
},
instructions: [swap, deposit],
feeToken: { address: USDC, chainId: 8453 }
});
executeQuote
Execute a quote by signing and submitting it.
const { hash } = await meeClient.executeQuote({ quote });
Parameters
| Parameter | Type | Required | Description |
|---|
quote | Quote | Yes | Quote from getQuote |
Returns
executeFusionQuote
Execute a Fusion quote.
const { hash } = await meeClient.executeFusionQuote({ fusionQuote });
Parameters
| Parameter | Type | Required | Description |
|---|
fusionQuote | FusionQuote | Yes | Quote from getFusionQuote |
Session quote flow
Use these methods for the Smart Sessions flow: prepare or use a permission by getting a session quote, then sign and execute.
getSessionQuote
Get a quote for preparing (deploy, fund, install module, enable session) or using a session.
const quote = await meeClient.getSessionQuote(params);
Parameters
| Parameter | Type | Required | Description |
|---|
mode | "PREPARE" | "USE" | Yes | PREPARE to enable a session; USE to run instructions with an existing session |
enableSession | EnableSession | No | Required when mode === "PREPARE". Redeemer, actions (SessionAction[]), optional batchActions, maxPaymentAmount |
sessionDetails | SessionDetail[] | No | Required when mode === "USE". From a previous prepare/enable flow |
instructions | Instruction[] | No | Instructions to execute (use case or prepare with extra setup) |
trigger | Trigger | No | Funding trigger (prepare with Fusion) |
feeToken | FeeTokenInfo | Yes* | Token to pay gas with |
sponsorship | boolean | No | Enable gas sponsorship |
delegate | boolean | No | Enable EIP-7702 mode |
authorization | Authorization | No | EIP-7702 authorization |
simulation | SimulationOptions | No | Simulation config |
lowerBoundTimestamp | number | No | Earliest execution time |
upperBoundTimestamp | number | No | Latest execution time |
cleanUps | CleanUp[] | No | Cleanup instructions |
*Not required if sponsorship: true
Returns
{ quoteType, quote, sessionDetails? } or undefined when there is nothing to do (e.g. no enable, no instructions).
See Smart Sessions for full parameter details and examples.
signSessionQuote
Sign the payload returned from getSessionQuote. Dispatches by quoteType to the appropriate signer (e.g. signQuote for simple, signFusionQuote for fusion).
const signed = await meeClient.signSessionQuote(params);
Parameters
| Parameter | Type | Required | Description |
|---|
params | GetSessionQuoteResponse | Yes | The object returned from getSessionQuote |
Typically you use executeSessionQuote, which signs and executes in one step.
executeSessionQuote
Sign and execute a session quote. Handles both simple and fusion quote types and trigger execution.
const { hash } = await meeClient.executeSessionQuote(params);
Parameters
| Parameter | Type | Required | Description |
|---|
params | GetSessionQuoteResponse | Yes | The object returned from getSessionQuote |
See Smart Sessions for full parameter details and examples.
waitForSupertransactionReceipt
Wait for a supertransaction to complete.
const receipt = await meeClient.waitForSupertransactionReceipt(options);
Parameters
| Parameter | Type | Required | Description |
|---|
hash | Hex | Yes | Supertransaction hash |
mode | "default" | "fast-block" | No | Confirmation mode |
confirmations | number | No | Confirmations to wait for |
Returns
type Receipt = {
transactionStatus: "PENDING" | "MINED_SUCCESS" | "MINED_FAILED" | "EXPIRED";
userOps: UserOpReceipt[];
explorerLinks: string[];
};
Example
const { hash } = await meeClient.executeQuote({ quote });
const receipt = await meeClient.waitForSupertransactionReceipt({
hash,
mode: "default"
});
if (receipt.transactionStatus === "MINED_SUCCESS") {
console.log("Success!");
}
getSupertransactionReceipt
Get current status without waiting.
const receipt = await meeClient.getSupertransactionReceipt(options);
Parameters
| Parameter | Type | Required | Description |
|---|
hash | Hex | Yes | Supertransaction hash |
waitForReceipts | boolean | No | Wait for on-chain receipts |
mode | "default" | "fast-block" | No | Confirmation mode |
Example
// Poll for status
const receipt = await meeClient.getSupertransactionReceipt({ hash });
if (receipt.transactionStatus === "PENDING") {
console.log("Still processing...");
}
Cleanup Instructions
Return leftover tokens after execution.
const quote = await meeClient.getQuote({
instructions: [...],
feeToken: {...},
cleanUps: [
{
chainId: 8453,
tokenAddress: USDC,
recipientAddress: userEOA,
dependsOn: [userOp(2)] // Optional: wait for specific instruction
}
]
});
CleanUp Parameters
| Parameter | Type | Required | Description |
|---|
chainId | number | Yes | Chain to cleanup on |
tokenAddress | Address | Yes | Token to return |
recipientAddress | Address | Yes | Where to send tokens |
dependsOn | UserOpRef[] | No | Instructions to wait for |
amount | bigint | No | Specific amount (default: full balance) |