@biconomy-devx/modules
Version:
This package provides different validation modules/plugins for ERC4337 compatible modular account
60 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ERC20SessionValidationModule = void 0;
const viem_1 = require("viem");
class ERC20SessionValidationModule {
constructor(moduleConfig) {
Object.defineProperty(this, "moduleAddress", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "version", {
enumerable: true,
configurable: true,
writable: true,
value: "V1_0_0"
});
if (!moduleConfig.moduleAddress) {
throw new Error("Module address is required");
}
this.moduleAddress = moduleConfig.moduleAddress;
}
static async create(moduleConfig) {
const module = new ERC20SessionValidationModule(moduleConfig);
return module;
}
async getSessionKeyData(sessionData) {
this._validateSessionKeyData(sessionData);
const sessionKeyData = (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("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