UNPKG

startale-aa-sdk

Version:

SDK for startale account integration with support for account abstraction, ERC-7579, ERC-4337.

74 lines 2.79 kB
import { http } from "viem"; import { createPaymasterClient } from "viem/account-abstraction"; import { scsTokenPaymasterActions } from "./decorators/tokenPaymaster/index.js"; export const scsSponsoredPaymasterContext = { // mode: "SPONSORED", // Note: This is fixed from the SCS Pm service backend // expiryDuration: 300, calculateGasLimits: true, // Review this has to be dynamic paymasterId: "pm_test" }; export const toSCSSponsoredPaymasterContext = (params) => { return { ...scsSponsoredPaymasterContext, ...params }; }; export const toSCSTokenPaymasterContext = (params) => { const { calculateGasLimits } = params; return { token: params.token, // Note: This is fixed from the SCS Pm service backend // expiryDuration: expiryDuration ?? 6000, calculateGasLimits: calculateGasLimits ?? true }; }; /** * Creates a SCS Paymaster Client. * * This function sets up a client for interacting with SCS's paymaster service. * It can be configured with a custom transport, a specific paymaster URL, or with a chain ID and API key. * * @param {SCSPaymasterClientConfig} parameters - Configuration options for the client. * @returns {PaymasterClient} A configured Paymaster Client instance. * * @example * // Create a client with a custom transport * const client1 = createSCSPaymasterClient({ transport: customTransport }) * * @example * // Create a client with a specific paymaster URL * const client2 = createSCSPaymasterClient({ paymasterUrl: 'https://example.com/paymaster' }) * * @example * // Create a client with chain ID and API key * const client3 = createSCSPaymasterClient({ chainId: 1, apiKey: 'your-api-key' }) * * @example * // Create a Token Paymaster Client * const tokenPaymasterClient = createSCSPaymasterClient({ * paymasterUrl: 'https://example.com/paymaster', * paymasterContext: { * mode: "ERC20", * tokenInfo: { * feeTokenAddress: "0x..." * } * }, * }) */ export const createSCSPaymasterClient = (parameters) => { const defaultedTransport = parameters.transport ? parameters.transport : parameters.paymasterUrl ? http(parameters.paymasterUrl) : http(`https://paymaster.biconomy.io/api/v2/${parameters.chainId}/${parameters.apiKey}`); // Todo: Update default to https://dev.paymaster.scs.startale.com/v1?apikey=scsadmin-paymaster (or prod) // Remove getPaymasterStubData from the client. const { getPaymasterStubData, ...paymasterClient } = createPaymasterClient({ ...parameters, transport: defaultedTransport }).extend(scsTokenPaymasterActions()); return paymasterClient; }; //# sourceMappingURL=createSCSPaymasterClient.js.map