@catalabs/catalyst-sdk
Version:
Catalyst AMM SDK
48 lines • 2.14 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AllowanceTransfer = void 0;
const ethers_1 = require("ethers");
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
const constants_1 = require("../constants");
const constants_2 = require("../constants");
const utils_1 = require("../utils");
class AllowanceTransfer {
constructor() { }
static _isPermitSingle(permit) {
return !Array.isArray(permit.details);
}
static _validatePermitDetails(details) {
(0, tiny_invariant_1.default)(constants_2.MaxOrderedNonce >= details.nonce, 'NONCE_OUT_OF_RANGE');
(0, tiny_invariant_1.default)(constants_2.MaxAllowanceTransferAmount >= details.amount, 'AMOUNT_OUT_OF_RANGE');
(0, tiny_invariant_1.default)(constants_2.MaxAllowanceExpiration >= details.expiration, 'EXPIRATION_OUT_OF_RANGE');
}
static getPermitData(permit, permit2Address, chainId) {
(0, tiny_invariant_1.default)(constants_2.MaxSigDeadline >= permit.sigDeadline, 'SIG_DEADLINE_OUT_OF_RANGE');
const domain = (0, utils_1.getPermit2Domain)(permit2Address, chainId);
if (this._isPermitSingle(permit)) {
this._validatePermitDetails(permit.details);
return {
domain,
types: constants_1.PERMIT_TYPES,
values: permit,
};
}
else {
permit.details.forEach((permitDetails) => this._validatePermitDetails(permitDetails));
return {
domain,
types: constants_1.PERMIT_BATCH_TYPES,
values: permit,
};
}
}
static hash(permit, permit2Address, chainId) {
const { domain, types, values } = AllowanceTransfer.getPermitData(permit, permit2Address, chainId);
return ethers_1.TypedDataEncoder.hash(domain, types, values);
}
}
exports.AllowanceTransfer = AllowanceTransfer;
//# sourceMappingURL=AllowanceTransfer.lib.js.map