UNPKG

@lit-protocol/vincent-scaffold-sdk

Version:

Shared build configuration and utilities for Vincent abilities and policies

42 lines (41 loc) 2.16 kB
"use strict"; 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;