@biconomy/modules
Version:
This package provides different validation modules/plugins for ERC4337 compatible modular account
60 lines • 2.46 kB
JavaScript
;
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