zksync-sso
Version:
ZKsync Smart Sign On SDK
64 lines • 2.91 kB
JavaScript
;
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