UNPKG

zksync-sso

Version:
64 lines 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPeriodIdsForTransaction = exports.SessionStatus = exports.ConstraintCondition = exports.LimitZero = exports.LimitUnlimited = exports.LimitType = void 0; const viem_1 = require("viem"); var LimitType; (function (LimitType) { LimitType[LimitType["Unlimited"] = 0] = "Unlimited"; LimitType[LimitType["Lifetime"] = 1] = "Lifetime"; LimitType[LimitType["Allowance"] = 2] = "Allowance"; })(LimitType || (exports.LimitType = LimitType = {})); exports.LimitUnlimited = { limitType: LimitType.Unlimited, limit: 0n, period: 0n, }; exports.LimitZero = { limitType: LimitType.Lifetime, limit: 0n, period: 0n, }; var ConstraintCondition; (function (ConstraintCondition) { ConstraintCondition[ConstraintCondition["Unconstrained"] = 0] = "Unconstrained"; ConstraintCondition[ConstraintCondition["Equal"] = 1] = "Equal"; ConstraintCondition[ConstraintCondition["Greater"] = 2] = "Greater"; ConstraintCondition[ConstraintCondition["Less"] = 3] = "Less"; ConstraintCondition[ConstraintCondition["GreaterEqual"] = 4] = "GreaterEqual"; ConstraintCondition[ConstraintCondition["LessEqual"] = 5] = "LessEqual"; ConstraintCondition[ConstraintCondition["NotEqual"] = 6] = "NotEqual"; })(ConstraintCondition || (exports.ConstraintCondition = ConstraintCondition = {})); var SessionStatus; (function (SessionStatus) { SessionStatus[SessionStatus["NotInitialized"] = 0] = "NotInitialized"; SessionStatus[SessionStatus["Active"] = 1] = "Active"; SessionStatus[SessionStatus["Closed"] = 2] = "Closed"; })(SessionStatus || (exports.SessionStatus = SessionStatus = {})); const getPeriodIdsForTransaction = (args) => { const timestamp = args.timestamp || BigInt(Math.floor(Date.now() / 1000)); const target = (0, viem_1.getAddress)(args.target.toLowerCase()); const getId = (limit) => { if (limit.limitType === LimitType.Allowance) { return timestamp / limit.period; } return 0n; }; const findTransferPolicy = () => { return args.sessionConfig.transferPolicies.find((policy) => policy.target === target); }; const findCallPolicy = () => { return args.sessionConfig.callPolicies.find((policy) => policy.target === target && policy.selector == args.selector); }; const isContractCall = !!args.selector; const policy = isContractCall ? findCallPolicy() : findTransferPolicy(); if (!policy) throw new Error("Transaction does not fit any policy"); const periodIds = [ getId(args.sessionConfig.feeLimit), getId(policy.valueLimit), ...(isContractCall ? policy.constraints.map((constraint) => getId(constraint.limit)) : []), ]; return periodIds; }; exports.getPeriodIdsForTransaction = getPeriodIdsForTransaction; //# sourceMappingURL=session.js.map