@lit-protocol/vincent-scaffold-sdk
Version:
Shared build configuration and utilities for Vincent abilities and policies
42 lines (41 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mintCapacityCredits = void 0;
const ethers_1 = require("ethers");
const contracts_sdk_1 = require("@lit-protocol/contracts-sdk");
const constants_1 = require("@lit-protocol/constants");
async function _mintCapacityCredit(litContracts, { requestsPerKilosecond = 10, daysUntilUTCMidnightExpiration = 1, } = {}) {
// Calculate expiration timestamp at UTC midnight
const now = new Date();
const expirationDate = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + daysUntilUTCMidnightExpiration, 0, 0, 0, 0 // Set to midnight UTC
));
const expiresAt = Math.floor(expirationDate.getTime() / 1000); // Convert to Unix timestamp
const mintCost = await litContracts.rateLimitNftContract.read.calculateCost(requestsPerKilosecond, expiresAt);
if (mintCost.gt(await litContracts.signer.getBalance())) {
throw new Error(`${await litContracts.signer.getAddress()} has insufficient balance to mint capacity credit: ${ethers_1.ethers.utils.formatEther(await litContracts.signer.getBalance())} < ${ethers_1.ethers.utils.formatEther(mintCost)}`);
}
const capacityCreditInfo = await litContracts.mintCapacityCreditsNFT({
requestsPerKilosecond,
daysUntilUTCMidnightExpiration,
});
return {
capacityTokenIdStr: capacityCreditInfo.capacityTokenIdStr,
capacityTokenId: capacityCreditInfo.capacityTokenId,
requestsPerKilosecond,
daysUntilUTCMidnightExpiration,
mintedAtUtc: new Date().toISOString(),
};
}
const mintCapacityCredits = async (delegateeEthersWallet, network) => {
const litContractClient = new contracts_sdk_1.LitContracts({
signer: delegateeEthersWallet,
network: constants_1.LIT_NETWORK[network] || constants_1.LIT_NETWORK.Datil,
});
await litContractClient.connect();
const capacityCreditInfo = await _mintCapacityCredit(litContractClient, {
requestsPerKilosecond: 160,
daysUntilUTCMidnightExpiration: 5,
});
return capacityCreditInfo;
};
exports.mintCapacityCredits = mintCapacityCredits;