@metamask/delegation-toolkit
Version:
The Delegation Toolkit built on top of Viem - a library for interacting with DeleGator Smart Accounts
299 lines (263 loc) • 8.65 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
var _chunk5GYFPRIZcjs = require('./chunk-5GYFPRIZ.cjs');
// src/DelegationFramework/ERC20PeriodTransferEnforcer/index.ts
var ERC20PeriodTransferEnforcer_exports = {};
_chunk5GYFPRIZcjs.__export.call(void 0, ERC20PeriodTransferEnforcer_exports, {
read: () => read_exports
});
// src/DelegationFramework/ERC20PeriodTransferEnforcer/read.ts
var read_exports = {};
_chunk5GYFPRIZcjs.__export.call(void 0, read_exports, {
getAvailableAmount: () => read
});
// src/DelegationFramework/ERC20PeriodTransferEnforcer/methods/getAvailableAmount.ts
var _delegationabis = require('@metamask/delegation-abis');
var _actions = require('viem/actions');
var read = async ({
client,
contractAddress,
delegationHash,
delegationManager,
terms
}) => {
const [availableAmount, isNewPeriod, currentPeriod] = await _actions.readContract.call(void 0,
client,
{
address: contractAddress,
abi: _delegationabis.ERC20PeriodTransferEnforcer.abi,
functionName: "getAvailableAmount",
args: [delegationHash, delegationManager, terms]
}
);
return {
availableAmount,
isNewPeriod,
currentPeriod
};
};
// src/DelegationFramework/ERC20StreamingEnforcer/index.ts
var ERC20StreamingEnforcer_exports = {};
_chunk5GYFPRIZcjs.__export.call(void 0, ERC20StreamingEnforcer_exports, {
read: () => read_exports2
});
// src/DelegationFramework/ERC20StreamingEnforcer/read.ts
var read_exports2 = {};
_chunk5GYFPRIZcjs.__export.call(void 0, read_exports2, {
getAvailableAmount: () => read2
});
// src/DelegationFramework/ERC20StreamingEnforcer/methods/getAvailableAmount.ts
var read2 = async ({
client,
contractAddress,
delegationManager,
delegationHash,
terms
}) => {
const currentBlock = await _actions.getBlock.call(void 0, client);
const currentTimestamp = currentBlock.timestamp;
const allowanceState = await _actions.readContract.call(void 0, client, {
address: contractAddress,
abi: _delegationabis.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 _actions.readContract.call(void 0, client, {
address: contractAddress,
abi: _delegationabis.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 = {};
_chunk5GYFPRIZcjs.__export.call(void 0, MultiTokenPeriodEnforcer_exports, {
read: () => read_exports3
});
// src/DelegationFramework/MultiTokenPeriodEnforcer/read.ts
var read_exports3 = {};
_chunk5GYFPRIZcjs.__export.call(void 0, read_exports3, {
getAvailableAmount: () => read3
});
// src/DelegationFramework/MultiTokenPeriodEnforcer/methods/getAvailableAmount.ts
var read3 = async ({
client,
contractAddress,
delegationHash,
delegationManager,
terms,
args
}) => {
const [availableAmount, isNewPeriod, currentPeriod] = await _actions.readContract.call(void 0,
client,
{
address: contractAddress,
abi: _delegationabis.MultiTokenPeriodEnforcer.abi,
functionName: "getAvailableAmount",
args: [delegationHash, delegationManager, terms, args]
}
);
return {
availableAmount,
isNewPeriod,
currentPeriod
};
};
// src/DelegationFramework/NativeTokenPeriodTransferEnforcer/index.ts
var NativeTokenPeriodTransferEnforcer_exports = {};
_chunk5GYFPRIZcjs.__export.call(void 0, NativeTokenPeriodTransferEnforcer_exports, {
read: () => read_exports4
});
// src/DelegationFramework/NativeTokenPeriodTransferEnforcer/read.ts
var read_exports4 = {};
_chunk5GYFPRIZcjs.__export.call(void 0, read_exports4, {
getAvailableAmount: () => read4
});
// src/DelegationFramework/NativeTokenPeriodTransferEnforcer/methods/getAvailableAmount.ts
var read4 = async ({
client,
contractAddress,
delegationHash,
delegationManager,
terms
}) => {
const [availableAmount, isNewPeriod, currentPeriod] = await _actions.readContract.call(void 0,
client,
{
address: contractAddress,
abi: _delegationabis.NativeTokenPeriodTransferEnforcer.abi,
functionName: "getAvailableAmount",
args: [delegationHash, delegationManager, terms]
}
);
return {
availableAmount,
isNewPeriod,
currentPeriod
};
};
// src/DelegationFramework/NativeTokenStreamingEnforcer/index.ts
var NativeTokenStreamingEnforcer_exports = {};
_chunk5GYFPRIZcjs.__export.call(void 0, NativeTokenStreamingEnforcer_exports, {
read: () => read_exports5
});
// src/DelegationFramework/NativeTokenStreamingEnforcer/read.ts
var read_exports5 = {};
_chunk5GYFPRIZcjs.__export.call(void 0, read_exports5, {
getAvailableAmount: () => read5
});
// src/DelegationFramework/NativeTokenStreamingEnforcer/methods/getAvailableAmount.ts
var read5 = async ({
client,
contractAddress,
delegationManager,
delegationHash,
terms
}) => {
const currentBlock = await _actions.getBlock.call(void 0, client);
const currentTimestamp = currentBlock.timestamp;
const allowanceState = await _actions.readContract.call(void 0, client, {
address: contractAddress,
abi: _delegationabis.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 _actions.readContract.call(void 0, client, {
address: contractAddress,
abi: _delegationabis.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;
}
exports.read_exports = read_exports; exports.ERC20PeriodTransferEnforcer_exports = ERC20PeriodTransferEnforcer_exports; exports.read_exports2 = read_exports2; exports.ERC20StreamingEnforcer_exports = ERC20StreamingEnforcer_exports; exports.read_exports3 = read_exports3; exports.MultiTokenPeriodEnforcer_exports = MultiTokenPeriodEnforcer_exports; exports.read_exports4 = read_exports4; exports.NativeTokenPeriodTransferEnforcer_exports = NativeTokenPeriodTransferEnforcer_exports; exports.read_exports5 = read_exports5; exports.NativeTokenStreamingEnforcer_exports = NativeTokenStreamingEnforcer_exports;
//# sourceMappingURL=chunk-JN5LSN7D.cjs.map