UNPKG

@biconomy/modules

Version:

This package provides different validation modules/plugins for ERC4337 compatible modular account

60 lines 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ERC20SessionValidationModule = void 0; const utils_1 = require("ethers/lib/utils"); /** * Session validation module for ERC20 token transfers. * It encodes session data into a sessionKeyData bytes to be verified by ERC20SessionValidationModule on chain. * * @author Sachin Tomar <sachin.tomar@biconomy.io> */ class ERC20SessionValidationModule { /** * This constructor is private. Use the static create method to instantiate ERC20SessionValidationModule * @param moduleConfig The configuration for the module * @returns An instance of ERC20SessionValidationModule */ constructor(moduleConfig) { this.version = "V1_0_0"; if (!moduleConfig.moduleAddress) { throw new Error("Module address is required"); } this.moduleAddress = moduleConfig.moduleAddress; } /** * Asynchronously creates and initializes an instance of ERC20SessionValidationModule * @param moduleConfig The configuration for the module * @returns A Promise that resolves to an instance of ERC20SessionValidationModule */ static async create(moduleConfig) { const module = new ERC20SessionValidationModule(moduleConfig); return module; } async getSessionKeyData(sessionData) { this._validateSessionKeyData(sessionData); const sessionKeyData = utils_1.defaultAbiCoder.encode(["address", "address", "address", "uint256"], [sessionData.sessionKey, sessionData.token, sessionData.recipient, sessionData.maxAmount]); return sessionKeyData; } _validateSessionKeyData(sessionData) { if (!sessionData) { throw new Error("Session data is required"); } if (!sessionData.sessionKey) { throw new Error("Session key is required in sessionData"); } if (!sessionData.token) { throw new Error("Token address is required in sessionData"); } if (!sessionData.recipient) { throw new Error("Recipient address is required in sessionData"); } if (!sessionData.maxAmount) { throw new Error("MaxAmount is required in sessionData"); } } getAddress() { return this.moduleAddress; } } exports.ERC20SessionValidationModule = ERC20SessionValidationModule; //# sourceMappingURL=ERC20SessionValidationModule.js.map