wido
Version:
JavaScript library for interacting with the Wido protocol which allows you to seamlessly move liquidity across vaults and chains.
45 lines (39 loc) • 1.44 kB
text/typescript
import { PaymasterApiRequest, PaymasterApiResponse } from "../../types"
import { CONFIG } from "../../config"
import { WidoError } from "../../WidoError"
import { UserOperation } from "@biconomy/core-types"
export async function getPaymasterAndData(
chainId: number,
userOp: UserOperation
): Promise<PaymasterApiResponse> {
const endpoint = "paymaster"
const request: PaymasterApiRequest = {
chainId: chainId,
sender: userOp.sender, // address
nonce: userOp.nonce.toString(), // uint256
initCode: userOp.initCode, // bytes
callData: userOp.callData, // bytes
callGasLimit: userOp.callGasLimit.toString(), // uint256
verificationGasLimit: userOp.verificationGasLimit.toString(), // uint256
preVerificationGas: userOp.preVerificationGas.toString(), // uint256
maxFeePerGas: userOp.maxFeePerGas.toString(), // uint256
maxPriorityFeePerGas: userOp.maxPriorityFeePerGas.toString(), // uint256
paymasterAndData: userOp.paymasterAndData, // bytes
signature: userOp.signature,
}
const url = `${CONFIG.WIDO_API_URL}/${endpoint}`
const res = await fetch(url, {
method: "POST",
mode: "cors",
headers: {
Accept: "*/*",
"Content-Type": "application/json",
},
body: JSON.stringify(request),
})
if (!res.ok) {
throw WidoError.from_api_response(await res.json())
}
const { paymasterAndData } = await res.json()
return { paymasterAndData }
}