UNPKG

@abstraxn/paymaster

Version:

Abstraxn Paymaster to interact with Paymaster Services that interacts with ( veriying and token ) paymasters

55 lines (38 loc) 2.15 kB
# **Paymaster** ERC-4337, also known as Account Abstraction, introduces the innovative concept of Paymasters. These entities are specialized actors that hold a crucial role in transforming the conventional gas payment mechanism within Ethereum Virtual Machine (EVM) transactions. Paymasters act as intermediaries, empowered to cover gas fees on behalf of an account, subject to predefined conditions being met. This paradigm shift offers a significant advancement in the Ethereum ecosystem, fostering greater flexibility and efficiency in transaction processing. ## Installation Using `npm` package manager ```bash npm i @abstraxn/paymaster ``` OR Using `yarn` package manager ```bash yarn add @abstraxn/paymaster ``` **Usage** ```typescript // This is how you create paymaster instance in your dapp's import { IPaymaster, AbstraxnPaymaster } from "@abstraxn/paymaster"; const paymaster = new AbstraxnPaymaster({ paymasterUrl: "", // you can get this value from abstraxn dashboard. }); ``` **paymasterUrl** you can get this value from abstraxn dashboard. Following are the methods that can be called on paymaster instance ```typescript export interface IHybridPaymaster<T> extends IPaymaster { getPaymasterAndData(userOp: Partial<UserOperation>, paymasterServiceData?: T): Promise<PaymasterAndDataResponse>; buildTokenApprovalTransaction(tokenPaymasterRequest: AbstraxnTokenPaymasterRequest, provider: Provider): Promise<Transaction>; getPaymasterFeeQuotesOrData(userOp: Partial<UserOperation>, paymasterServiceData: FeeQuotesOrDataDto): Promise<FeeQuotesOrDataResponse>; } ``` One can also build their own Paymaster API class and submit a PR or just provide instance of it in the account package / use standalone to generate paymasterAndData It should follow below Interface. ```typescript export interface IPaymaster { // Implementing class may add extra parameter (for example paymasterServiceData with it's own type) in below function signature getPaymasterAndData(userOp: Partial<UserOperation>): Promise<PaymasterAndDataResponse>; getDummyPaymasterAndData(userOp: Partial<UserOperation>): Promise<string>; } ```