UNPKG

@metamask/delegation-toolkit

Version:

The Delegation Toolkit built on top of Viem - a library for interacting with DeleGator Smart Accounts

299 lines (283 loc) 8.21 kB
import { __export } from "./chunk-ONC4XUYQ.mjs"; // src/DelegationFramework/ERC20PeriodTransferEnforcer/index.ts var ERC20PeriodTransferEnforcer_exports = {}; __export(ERC20PeriodTransferEnforcer_exports, { read: () => read_exports }); // src/DelegationFramework/ERC20PeriodTransferEnforcer/read.ts var read_exports = {}; __export(read_exports, { getAvailableAmount: () => read }); // src/DelegationFramework/ERC20PeriodTransferEnforcer/methods/getAvailableAmount.ts import { ERC20PeriodTransferEnforcer } from "@metamask/delegation-abis"; import { readContract } from "viem/actions"; var read = async ({ client, contractAddress, delegationHash, delegationManager, terms }) => { const [availableAmount, isNewPeriod, currentPeriod] = await readContract( client, { address: contractAddress, abi: ERC20PeriodTransferEnforcer.abi, functionName: "getAvailableAmount", args: [delegationHash, delegationManager, terms] } ); return { availableAmount, isNewPeriod, currentPeriod }; }; // src/DelegationFramework/ERC20StreamingEnforcer/index.ts var ERC20StreamingEnforcer_exports = {}; __export(ERC20StreamingEnforcer_exports, { read: () => read_exports2 }); // src/DelegationFramework/ERC20StreamingEnforcer/read.ts var read_exports2 = {}; __export(read_exports2, { getAvailableAmount: () => read2 }); // src/DelegationFramework/ERC20StreamingEnforcer/methods/getAvailableAmount.ts import { ERC20StreamingEnforcer } from "@metamask/delegation-abis"; import { readContract as readContract2, getBlock } from "viem/actions"; var read2 = async ({ client, contractAddress, delegationManager, delegationHash, terms }) => { const currentBlock = await getBlock(client); const currentTimestamp = currentBlock.timestamp; const allowanceState = await readContract2(client, { address: contractAddress, abi: ERC20StreamingEnforcer.abi, functionName: "streamingAllowances", args: [delegationManager, delegationHash] }); const [initialAmount, maxAmount, amountPerSecond, startTime, spent] = allowanceState; if (startTime !== 0n) { const availableAmount2 = getAvailableAmount({ initialAmount, maxAmount, amountPerSecond, startTime, spent, currentTimestamp }); return { availableAmount: availableAmount2 }; } const decodedTerms = await readContract2(client, { address: contractAddress, abi: ERC20StreamingEnforcer.abi, functionName: "getTermsInfo", args: [terms] }); const [ , decodedInitialAmount, decodedMaxAmount, decodedAmountPerSecond, decodedStartTime ] = decodedTerms; const availableAmount = getAvailableAmount({ initialAmount: decodedInitialAmount, maxAmount: decodedMaxAmount, amountPerSecond: decodedAmountPerSecond, startTime: decodedStartTime, spent: 0n, currentTimestamp }); return { availableAmount }; }; function getAvailableAmount(allowance) { if (allowance.currentTimestamp < allowance.startTime) { return 0n; } const elapsed = allowance.currentTimestamp - allowance.startTime; let unlocked = allowance.initialAmount + allowance.amountPerSecond * elapsed; if (unlocked > allowance.maxAmount) { unlocked = allowance.maxAmount; } if (allowance.spent >= unlocked) { return 0n; } return unlocked - allowance.spent; } // src/DelegationFramework/MultiTokenPeriodEnforcer/index.ts var MultiTokenPeriodEnforcer_exports = {}; __export(MultiTokenPeriodEnforcer_exports, { read: () => read_exports3 }); // src/DelegationFramework/MultiTokenPeriodEnforcer/read.ts var read_exports3 = {}; __export(read_exports3, { getAvailableAmount: () => read3 }); // src/DelegationFramework/MultiTokenPeriodEnforcer/methods/getAvailableAmount.ts import { MultiTokenPeriodEnforcer } from "@metamask/delegation-abis"; import { readContract as readContract3 } from "viem/actions"; var read3 = async ({ client, contractAddress, delegationHash, delegationManager, terms, args }) => { const [availableAmount, isNewPeriod, currentPeriod] = await readContract3( client, { address: contractAddress, abi: MultiTokenPeriodEnforcer.abi, functionName: "getAvailableAmount", args: [delegationHash, delegationManager, terms, args] } ); return { availableAmount, isNewPeriod, currentPeriod }; }; // src/DelegationFramework/NativeTokenPeriodTransferEnforcer/index.ts var NativeTokenPeriodTransferEnforcer_exports = {}; __export(NativeTokenPeriodTransferEnforcer_exports, { read: () => read_exports4 }); // src/DelegationFramework/NativeTokenPeriodTransferEnforcer/read.ts var read_exports4 = {}; __export(read_exports4, { getAvailableAmount: () => read4 }); // src/DelegationFramework/NativeTokenPeriodTransferEnforcer/methods/getAvailableAmount.ts import { NativeTokenPeriodTransferEnforcer } from "@metamask/delegation-abis"; import { readContract as readContract4 } from "viem/actions"; var read4 = async ({ client, contractAddress, delegationHash, delegationManager, terms }) => { const [availableAmount, isNewPeriod, currentPeriod] = await readContract4( client, { address: contractAddress, abi: NativeTokenPeriodTransferEnforcer.abi, functionName: "getAvailableAmount", args: [delegationHash, delegationManager, terms] } ); return { availableAmount, isNewPeriod, currentPeriod }; }; // src/DelegationFramework/NativeTokenStreamingEnforcer/index.ts var NativeTokenStreamingEnforcer_exports = {}; __export(NativeTokenStreamingEnforcer_exports, { read: () => read_exports5 }); // src/DelegationFramework/NativeTokenStreamingEnforcer/read.ts var read_exports5 = {}; __export(read_exports5, { getAvailableAmount: () => read5 }); // src/DelegationFramework/NativeTokenStreamingEnforcer/methods/getAvailableAmount.ts import { NativeTokenStreamingEnforcer } from "@metamask/delegation-abis"; import { readContract as readContract5, getBlock as getBlock2 } from "viem/actions"; var read5 = async ({ client, contractAddress, delegationManager, delegationHash, terms }) => { const currentBlock = await getBlock2(client); const currentTimestamp = currentBlock.timestamp; const allowanceState = await readContract5(client, { address: contractAddress, abi: NativeTokenStreamingEnforcer.abi, functionName: "streamingAllowances", args: [delegationManager, delegationHash] }); const [initialAmount, maxAmount, amountPerSecond, startTime, spent] = allowanceState; if (startTime !== 0n) { const availableAmount2 = getAvailableAmount2({ initialAmount, maxAmount, amountPerSecond, startTime, spent, currentTimestamp }); return { availableAmount: availableAmount2 }; } const decodedTerms = await readContract5(client, { address: contractAddress, abi: NativeTokenStreamingEnforcer.abi, functionName: "getTermsInfo", args: [terms] }); const [ decodedInitialAmount, decodedMaxAmount, decodedAmountPerSecond, decodedStartTime ] = decodedTerms; const availableAmount = getAvailableAmount2({ initialAmount: decodedInitialAmount, maxAmount: decodedMaxAmount, amountPerSecond: decodedAmountPerSecond, startTime: decodedStartTime, spent: 0n, currentTimestamp }); return { availableAmount }; }; function getAvailableAmount2(allowance) { if (allowance.currentTimestamp < allowance.startTime) { return 0n; } const elapsed = allowance.currentTimestamp - allowance.startTime; let unlocked = allowance.initialAmount + allowance.amountPerSecond * elapsed; if (unlocked > allowance.maxAmount) { unlocked = allowance.maxAmount; } if (allowance.spent >= unlocked) { return 0n; } return unlocked - allowance.spent; } export { read_exports, ERC20PeriodTransferEnforcer_exports, read_exports2, ERC20StreamingEnforcer_exports, read_exports3, MultiTokenPeriodEnforcer_exports, read_exports4, NativeTokenPeriodTransferEnforcer_exports, read_exports5, NativeTokenStreamingEnforcer_exports }; //# sourceMappingURL=chunk-H6FRBM25.mjs.map