diff --git a/packages/contracts/Makefile b/packages/contracts/Makefile
index a9ad5f3a0..93ba6d5f0 100755
--- a/packages/contracts/Makefile
+++ b/packages/contracts/Makefile
@@ -31,6 +31,12 @@ deploy-plumeTestnet:
resume-plumeTestnet:
$(MAKE) deploy RPC_URL=plumeTestnet EXTRA_FLAGS="--verify --verifier blockscout --verifier-url https://test-explorer.plumenetwork.xyz/api\? --legacy --skip-simulation --slow --resume"
+deploy-plume:
+ $(MAKE) deploy RPC_URL=plume EXTRA_FLAGS="--verify --verifier blockscout --verifier-url https://phoenix-explorer.plumenetwork.xyz/api\? --legacy --skip-simulation --slow"
+
+resume-plume:
+ $(MAKE) deploy RPC_URL=plume EXTRA_FLAGS="--verify --verifier blockscout --verifier-url https://phoenix-explorer.plumenetwork.xyz/api\? --legacy --skip-simulation --slow --resume"
+
deploy-arbitrum:
$(MAKE) deploy RPC_URL=arbitrum EXTRA_FLAGS="--verify --slow"
diff --git a/packages/contracts/foundry.toml b/packages/contracts/foundry.toml
index fb7ca54ec..6dfafc3b2 100755
--- a/packages/contracts/foundry.toml
+++ b/packages/contracts/foundry.toml
@@ -22,6 +22,7 @@ polygon = "https://polygon-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}"
polygonMumbai = "https://polygon-mumbai.g.alchemy.com/v2/${ALCHEMY_API_KEY}"
bitlayer = "https://rpc.bitlayer.org"
bitlayerTestnet = "https://testnet-rpc.bitlayer.org"
+plume = "https://phoenix-rpc.plumenetwork.xyz/${PLUME_API_KEY}"
plumeDevnet = "https://devnet-rpc.plumenetwork.xyz"
plumeTestnet_old = "https://testnet-rpc.plumenetwork.xyz"
plumeTestnet= "https://test-rpc.plumenetwork.xyz"
@@ -35,6 +36,7 @@ arbitrum = { key = "${ARB_ETHERSCAN_API_KEY}", url = "https://api.arbiscan.io/ap
arbitrumSepolia = { key = "${ARB_SEPOLIA_ETHERSCAN_API_KEY}", url = "https://api-sepolia.arbiscan.io/api", chain=421614 }
bitlayer = { key = "bitlayer", url="https://rpc.bitlayer.org" }
bitlayerTestnet = { key = "bitlayerTestnet", url="https://testnet-scan.bitlayer.org" }
+plume = { key = "plume", url = 'https://phoenix-explorer.plumenetwork.xyz/api\?', chain=98865 }
plumeDevnet = { key = "plumeDevnet", url = 'https://devnet-explorer.plumenetwork.xyz/api\?', chain=18230 }
plumeTestnet_old = { key = "plumeTestnet_old", url = 'https://testnet-explorer.plumenetwork.xyz/api\?', chain=161221135 }
plumeTestnet = { key = "plumeTestnet", url = 'https://test-explorer.plumenetwork.xyz/api\?', chain=98864 }
diff --git a/packages/contracts/resource/plumeMainnet.toml b/packages/contracts/resource/plumeMainnet.toml
new file mode 100644
index 000000000..72d00d12c
--- /dev/null
+++ b/packages/contracts/resource/plumeMainnet.toml
@@ -0,0 +1,41 @@
+##
+# The Application Configuration for the Plume Mainnet Environment.
+##
+
+[evm]
+# blockchain id, e.g. plumeMainnet=98865, plumeTestnet=98864, plumeTestnet_old=161221135, plumeDevnet=18230
+chain_id = 98865
+deploy_mocks = false
+
+
+[evm.address]
+# credbull.cb.id admin/owner (#1)
+owner = "0x0fEcd2f7B3EC4BeE8001B4F73df32e7917d8fdE3"
+# credbulloper.cb.id operator (#2)
+operator = "0xf589233a140F037976f2786C8A4Fba4920EB687b"
+# credbullupgrader.cb.id upgrader (#4)
+upgrader = "0x3E449960Ba36cB00B728A370F991c658e7cca459"
+# credbullassetmgr.cb.id asset manager (#7)
+asset_manager = "0x97BE1b79AA9dB55e7235a9dd5E686cc4A26A7959"
+
+# USDC.e token address (Fiat Proxy
+usdc_token="0x0F3B6CC558A714ecf4Cc9ec8caFF0b57ECf65890"
+# Liquid Continuous Multi Token Vault Proxy
+liquid_vault_proxy="0xb89846b74f3B190F6e00fc35B3aFfCDF5d4BB9f9"
+# Liquid Continuous Multi Token Vault Impl
+liquid_vault_impl="0x8f87E1258d645d948F270221C34202Be0583F29b"
+
+
+[evm.contracts.liquid_continuous_multi_token_vault]
+# rate in basis points, e.g. 10% = 1000 bps
+full_rate_bps = 10_00
+# rate in basis points, e.g. 5.5% = 550 bps
+reduced_rate_bps = 5_50
+# January 1, 2025 2:00:00 PM UTC = 1735740000
+vault_start_timestamp = 1735740000
+
+[services.supabase]
+url = ""
+
+# Save the contract deployment details to the database.
+update_contract_addresses = false
\ No newline at end of file
diff --git a/packages/contracts/resource/plumeTestnet.toml b/packages/contracts/resource/plumeTestnet.toml
index 950e7ac3f..c602e602a 100644
--- a/packages/contracts/resource/plumeTestnet.toml
+++ b/packages/contracts/resource/plumeTestnet.toml
@@ -5,7 +5,7 @@
[evm]
# blockchain id, e.g. plumeTestnet=98864, plumeTestnet_old=161221135, plumeDevnet=18230
chain_id = 98864
-deploy_mocks = true
+deploy_mocks = false
[evm.address]
# credbull-devops wallets. wallet numbers are 1-based (as opposed to 0-based in anvil)
@@ -19,12 +19,24 @@ custodian = "0x8561845F6a9511cD8e2daCae77A961e718A77cF6"
upgrader = "0xaD3C004eE1f942BFDA2DA0D2DAaC94d6aC012F75"
# devops asset manager (wallet 7) - public address, okay to share
asset_manager = "0xd097E901FB9B75C2d2f97E142d73fA79C31FcAb3"
+# CBL token address - Plume Testnet
+cbl_token="0x931Cf9ab674bAbfa7De712EE635b75b5636b4D29"
+# USDC.e token address - Plume Testnet
+usdc_token="0x401eCb1D350407f13ba348573E5630B83638E30D"
+# Liquid Continuous Multi Token Vault Proxy - Plume Testnet
+liquid_vault_proxy="0x4B1fC984F324D2A0fDD5cD83925124b61175f5C6"
+# Liquid Continuous Multi Token Vault Impl - Plume Testnet
+liquid_vault_impl="0x9Db9df1D91c5cdE0c92cf02B9992d42f47028b4A"
+
[evm.contracts.liquid_continuous_multi_token_vault]
# rate in basis points, e.g. 10% = 1000 bps
full_rate_bps = 10_00
# rate in basis points, e.g. 5.5% = 550 bps
reduced_rate_bps = 5_50
+# January 1, 2024 2:00:00 PM UTC = 1704117600
+vault_start_timestamp = 1704117600
+
[evm.contracts.upside_vault]
# 2 decimal place percentage (meaining value divided by 100) as integer.
diff --git a/packages/contracts/resource/testnetArbSepolia.toml b/packages/contracts/resource/testnetArbSepolia.toml
new file mode 100644
index 000000000..e7b476e41
--- /dev/null
+++ b/packages/contracts/resource/testnetArbSepolia.toml
@@ -0,0 +1,50 @@
+##
+# The Application Configuration for the TestNet Environment.
+##
+
+[evm]
+# blockchain id, e.g. baseSepolia=84532, arbSepolia=421614
+chain_id = 421614
+deploy_mocks = false
+
+[evm.address]
+# credbull-devops wallets. wallet numbers are 1-based (as opposed to 0-based in anvil)
+# devops admin/owner (wallet 1) - public address, okay to share
+owner = "0xD79Be36f61fce3B8EF2FBF22b13B2b9a68eE15A2"
+# devops operator (wallet 2) - public address, okay to share
+operator = "0xaD3C004eE1f942BFDA2DA0D2DAaC94d6aC012F75"
+# devops custodian (wallet 3) - public address, okay to share
+custodian = "0x8561845F6a9511cD8e2daCae77A961e718A77cF6"
+# devops upgrader (wallet 4) - public address, okay to share
+upgrader = "0xaD3C004eE1f942BFDA2DA0D2DAaC94d6aC012F75"
+# devops asset manager (wallet 7) - public address, okay to share
+asset_manager = "0xd097E901FB9B75C2d2f97E142d73fA79C31FcAb3"
+# CBL token address - Arbitrum Sepolia
+cbl_token="0x3Dd53Ec7DFff8cf774391867C83583E634363345"
+# USDC token address - Arbitrum Sepolia
+usdc_token="0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"
+
+[evm.contracts.liquid_continuous_multi_token_vault]
+# rate in basis points, e.g. 10% = 1000 bps
+full_rate_bps = 10_00
+# rate in basis points, e.g. 5.5% = 550 bps
+reduced_rate_bps = 5_50
+
+[evm.contracts.upside_vault]
+# 2 decimal place percentage (meaining value divided by 100) as integer.
+collateral_percentage = 200
+
+[evm.contracts.cbl]
+# CBL token params
+# devops admin/owner (wallet 1) - public address, okay to share
+owner = "0xD79Be36f61fce3B8EF2FBF22b13B2b9a68eE15A2"
+# devops operator (wallet 2) - public address, okay to share
+minter = "0xaD3C004eE1f942BFDA2DA0D2DAaC94d6aC012F75"
+# CBL token params
+max_supply = 10_000_000 # 10 million in wei
+
+[services.supabase]
+url = ""
+
+# Save the contract deployment details to the database.
+update_contract_addresses = false
diff --git a/packages/contracts/script/DeployLiquidMultiTokenVault.s.sol b/packages/contracts/script/DeployLiquidMultiTokenVault.s.sol
index 7f9e647b4..7ddb0abfe 100644
--- a/packages/contracts/script/DeployLiquidMultiTokenVault.s.sol
+++ b/packages/contracts/script/DeployLiquidMultiTokenVault.s.sol
@@ -103,12 +103,13 @@ contract DeployLiquidMultiTokenVault is TomlConfig {
IERC20Metadata asset,
IYieldStrategy yieldStrategy,
IRedeemOptimizer redeemOptimizer
- ) public view returns (LiquidContinuousMultiTokenVault.VaultParams memory vaultParams_) {
+ ) public view virtual returns (LiquidContinuousMultiTokenVault.VaultParams memory vaultParams_) {
uint256 fullRateBasisPoints = _tomlConfig.readUint(string.concat(CONTRACT_TOML_KEY, ".full_rate_bps"));
uint256 reducedRateBasisPoints = _tomlConfig.readUint(string.concat(CONTRACT_TOML_KEY, ".reduced_rate_bps"));
uint256 startTimestamp = _startTimestamp();
- uint256 scale = 10 ** asset.decimals();
+ uint256 decimals = asset.decimals();
+ uint256 scale = 10 ** decimals;
TripleRateContext.ContextParams memory contextParams = TripleRateContext.ContextParams({
fullRateScaled: fullRateBasisPoints * scale / 100,
@@ -118,7 +119,7 @@ contract DeployLiquidMultiTokenVault is TomlConfig {
}),
frequency: 360,
tenor: 30,
- decimals: asset.decimals()
+ decimals: decimals
});
LiquidContinuousMultiTokenVault.VaultParams memory vaultParams = LiquidContinuousMultiTokenVault.VaultParams({
diff --git a/packages/contracts/script/utils/generateTsAbis.js b/packages/contracts/script/utils/generateTsAbis.js
index 6577cdd7f..5c65fbb14 100644
--- a/packages/contracts/script/utils/generateTsAbis.js
+++ b/packages/contracts/script/utils/generateTsAbis.js
@@ -67,7 +67,7 @@ function getInheritedFunctions(mainArtifact) {
}
function main() {
- const current_path_to_broadcast = path.join(__dirname, '../..', 'broadcast/DeployAndLoadLiquidMultiTokenVault.s.sol'); // data loading variant
+ const current_path_to_broadcast = path.join(__dirname, '../..', 'broadcast/DeployLiquidMultiTokenVault.s.sol'); // data loading variant
const current_path_to_deployments = path.join(__dirname, '../..', 'broadcast');
const chains = getDirectories(current_path_to_broadcast);
diff --git a/packages/contracts/test/src/LiquidStoneNinetyDayTest.t.sol b/packages/contracts/test/src/LiquidStoneNinetyDayTest.t.sol
new file mode 100644
index 000000000..f03e9fd50
--- /dev/null
+++ b/packages/contracts/test/src/LiquidStoneNinetyDayTest.t.sol
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.20;
+
+import { LiquidContinuousMultiTokenVault } from "@credbull/yield/LiquidContinuousMultiTokenVault.sol";
+import { LiquidContinuousMultiTokenVaultTestBase } from "@test/test/yield/LiquidContinuousMultiTokenVaultTestBase.t.sol";
+
+import { CalcSimpleInterest } from "@credbull/yield/CalcSimpleInterest.sol";
+
+import { TestParamSet } from "@test/test/token/ERC1155/TestParamSet.t.sol";
+
+import { IYieldStrategy } from "@credbull/yield/strategy/IYieldStrategy.sol";
+import { IRedeemOptimizer } from "@credbull/token/ERC1155/IRedeemOptimizer.sol";
+import { DeployLiquidMultiTokenVault } from "@script/DeployLiquidMultiTokenVault.s.sol";
+
+import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+contract DeployLiquidStoneNinetyDay is DeployLiquidMultiTokenVault {
+ function _createVaultParams(
+ LiquidContinuousMultiTokenVault.VaultAuth memory vaultAuth,
+ IERC20Metadata asset,
+ IYieldStrategy yieldStrategy,
+ IRedeemOptimizer redeemOptimizer
+ ) public view override returns (LiquidContinuousMultiTokenVault.VaultParams memory vaultParams_) {
+ LiquidContinuousMultiTokenVault.VaultParams memory vaultParams =
+ super._createVaultParams(vaultAuth, asset, yieldStrategy, redeemOptimizer);
+
+ uint256 scale = 10 ** asset.decimals();
+ vaultParams.contextParams.tenor = 90;
+ vaultParams.redeemNoticePeriod = 0;
+ vaultParams.contextParams.fullRateScaled = 10 * scale;
+ vaultParams.contextParams.initialReducedRate.interestRate = 0; // zero for less than tenor
+
+ return vaultParams;
+ }
+}
+
+contract LiquidStoneNinetyDayTest is LiquidContinuousMultiTokenVaultTestBase {
+ using TestParamSet for TestParamSet.TestParam[];
+
+ function setUp() public virtual override {
+ DeployLiquidMultiTokenVault _deployVault = new DeployLiquidStoneNinetyDay();
+ _liquidVault = _deployVault.run(_vaultAuth);
+
+ // warp to a "real time" time rather than block.timestamp=1
+ vm.warp(_liquidVault._vaultStartTimestamp() + 1);
+
+ _asset = IERC20Metadata(_liquidVault.asset());
+ _scale = 10 ** _asset.decimals();
+
+ _transferAndAssert(_asset, _vaultAuth.owner, alice, 100_000 * _scale);
+ _transferAndAssert(_asset, _vaultAuth.owner, bob, 100_000 * _scale);
+ }
+
+ function test__LiquidStoneNinetyDay__VerifyDeployTenor() public view {
+ assertEq(90, _liquidVault.TENOR(), "tenor incorrect");
+ }
+
+ // TODO - need to implement and test for RetainedAssetsReceive1APY
+
+ function test__LiquidStoneNinetyDay__RedeemFullTenor() public {
+ uint256 depositPeriod = 5;
+ uint256 redeemPeriod = depositPeriod + _liquidVault.TENOR();
+ uint256 principal = 105 * _scale;
+
+ TestParamSet.TestUsers memory aliceTestUsers = TestParamSet.toSingletonUsers(alice);
+
+ TestParamSet.TestParam[] memory testParams = new TestParamSet.TestParam[](1);
+ testParams[0] =
+ TestParamSet.TestParam({ principal: principal, depositPeriod: depositPeriod, redeemPeriod: redeemPeriod });
+
+ uint256[] memory sharesAtPeriods = _testDepositOnly(aliceTestUsers, _liquidVault, testParams);
+
+ uint256 expectedReturns = CalcSimpleInterest.calcInterest(
+ principal, _liquidVault.rateScaled(), redeemPeriod - depositPeriod, _liquidVault.frequency(), _scale
+ );
+
+ _transferFromTokenOwner(_asset, address(_liquidVault), expectedReturns); // give the vault enough to cover returns
+
+ // warp to the redeem period
+ _warpToPeriod(_liquidVault, redeemPeriod);
+
+ vm.prank(alice);
+ _liquidVault.requestRedeem(sharesAtPeriods[0], alice, alice);
+
+ vm.prank(alice);
+ uint256 assets = _liquidVault.redeem(sharesAtPeriods[0], alice, alice);
+
+ assertEq(principal + expectedReturns, assets, "wrong assets returned");
+ }
+
+ function test__LiquidStoneNinetyDay__EarlyRedemptionGivesZeroYield() public {
+ uint256 depositPeriod = 25;
+ uint256 earlyRedeemPeriod = depositPeriod + _liquidVault.TENOR() - 1; // less than full tenor period
+ uint256 principal = 125 * _scale;
+
+ TestParamSet.TestUsers memory aliceTestUsers = TestParamSet.toSingletonUsers(alice);
+
+ TestParamSet.TestParam[] memory testParams = new TestParamSet.TestParam[](1);
+ testParams[0] = TestParamSet.TestParam({
+ principal: principal,
+ depositPeriod: depositPeriod,
+ redeemPeriod: earlyRedeemPeriod
+ });
+
+ uint256[] memory sharesAtPeriods = _testDepositOnly(aliceTestUsers, _liquidVault, testParams);
+
+ // warp to the redeem period
+ _warpToPeriod(_liquidVault, earlyRedeemPeriod);
+
+ vm.prank(alice);
+ _liquidVault.requestRedeem(sharesAtPeriods[0], alice, alice);
+
+ vm.prank(alice);
+ uint256 assets = _liquidVault.redeem(sharesAtPeriods[0], alice, alice);
+
+ assertEq(principal, assets, "early redemption should give back principal and zero returns");
+ }
+}
diff --git a/spikes/spike-liquid-stone/package.json b/spikes/spike-liquid-stone/package.json
index 9c18e4550..8734892d1 100644
--- a/spikes/spike-liquid-stone/package.json
+++ b/spikes/spike-liquid-stone/package.json
@@ -34,6 +34,7 @@
"verify": "yarn workspace @se-2/foundry verify"
},
"devDependencies": {
+ "@types/dotenv": "^8.2.3",
"husky": "^9.1.4",
"lint-staged": "^15.2.9"
},
@@ -44,6 +45,7 @@
"dependencies": {
"@openzeppelin/contracts-upgradeable": "^5.0.2",
"alchemy-sdk": "^3.4.2",
+ "dotenv": "^16.4.5",
"ethers": "^6.13.3",
"react-tooltip": "^5.28.0"
},
diff --git a/spikes/spike-liquid-stone/packages/nextjs/.env.sample b/spikes/spike-liquid-stone/packages/nextjs/.env.sample
index 730d53b1e..20ee3077d 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/.env.sample
+++ b/spikes/spike-liquid-stone/packages/nextjs/.env.sample
@@ -1,3 +1,9 @@
NEXT_PUBLIC_NETWORK=localhost
NEXT_PUBLIC_CUSTODIAN=0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC
+
+NEXT_PUBLIC_ALCHEMY_API_KEY=
+
+# Required for Plume Mainnet only
+# TODO - do not check this in - API key!
+PLUME_API_KEY=
\ No newline at end of file
diff --git a/spikes/spike-liquid-stone/packages/nextjs/app/helpers/_components/ViewSection.tsx b/spikes/spike-liquid-stone/packages/nextjs/app/helpers/_components/ViewSection.tsx
index 273e0d0e5..b00f3be53 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/app/helpers/_components/ViewSection.tsx
+++ b/spikes/spike-liquid-stone/packages/nextjs/app/helpers/_components/ViewSection.tsx
@@ -51,9 +51,9 @@ const ViewSection = () => {
const { data: simpleUsdcContractData } = useDeployedContractInfo(contractNames[0]);
const { data: implementationContractData, isLoading: implementationContractLoading } = useDeployedContractInfo(
- contractNames[3],
+ contractNames[4],
);
- const { data: proxyContractData, isLoading: proxyContractLoading } = useDeployedContractInfo(contractNames[4]);
+ const { data: proxyContractData, isLoading: proxyContractLoading } = useDeployedContractInfo(contractNames[5]);
const custodian = process.env.NEXT_PUBLIC_CUSTODIAN || "";
@@ -106,7 +106,7 @@ const ViewSection = () => {
const handleGrantRole = async (roleIndex: number) => {
if (!userAccountToGrant) {
- notification.error("Missing required fields");
+ notification.error(`Grant Role: Missing userAccountToGrant`);
return;
}
@@ -166,7 +166,7 @@ const ViewSection = () => {
const handleRevokeRole = async (roleIndex: number) => {
if (!userAccountToRevoke) {
- notification.error("Missing required fields");
+ notification.error(`Revoke Role: Missing userAccountToRevoke`);
return;
}
@@ -226,7 +226,7 @@ const ViewSection = () => {
const handleSetPeriod = async (directionIndex: number) => {
if (!numOfPeriods) {
- notification.error("Missing required fields");
+ notification.error("Set Period. Missing numOfPeriods");
return;
}
@@ -293,7 +293,7 @@ const ViewSection = () => {
const handleSetTimestamp = async () => {
if (!selectedTimestamp) {
- notification.error("Missing required fields");
+ notification.error("Set Timestamp. Missing selectedTimestamp");
return;
}
@@ -349,7 +349,7 @@ const ViewSection = () => {
const handleSetReducedRate = async () => {
if (!reducedRate) {
- notification.error("Missing required fields");
+ notification.error("Set Reduced Rate. Missing reducedRate");
return;
}
@@ -388,12 +388,14 @@ const ViewSection = () => {
const handleWithdraw = async (withdrawType: number) => {
if (!custodian || !proxyContractData || !simpleUsdcContractData) {
- notification.error("Missing required fields");
+ notification.error(
+ `Handle Withdraw - Missing required fields. Custodian:${custodian} , ProxyContractData: ${proxyContractData} , SimpleUsdcContractData: ${simpleUsdcContractData}`,
+ );
return;
}
if (!withdrawType && !assets) {
- notification.error("Missing required fields");
+ notification.error(`Withdraw. Missing required fields. Withdraw Type: ${withdrawType} , assets: ${assets}`);
return;
}
diff --git a/spikes/spike-liquid-stone/packages/nextjs/app/vault/_components/ViewSection.tsx b/spikes/spike-liquid-stone/packages/nextjs/app/vault/_components/ViewSection.tsx
index ab65f6906..bd9f2b485 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/app/vault/_components/ViewSection.tsx
+++ b/spikes/spike-liquid-stone/packages/nextjs/app/vault/_components/ViewSection.tsx
@@ -1,7 +1,6 @@
"use client";
import { useEffect, useState } from "react";
-// import ActionLogSection from "./ActionLogSection";
import Button from "../../../components/general/Button";
import ContractValueBadge from "../../../components/general/ContractValueBadge";
import Input from "../../../components/general/Input";
@@ -9,7 +8,7 @@ import LoadingSpinner from "../../../components/general/LoadingSpinner";
import DepositPoolCard from "./DepositPoolCard";
import { ethers } from "ethers";
import { useTheme } from "next-themes";
-import { useAccount, useChainId, useWriteContract } from "wagmi";
+import { useAccount, useWriteContract } from "wagmi";
import { CheckCircleIcon } from "@heroicons/react/24/solid";
import ActionCard from "~~/components/general/ActionCard";
import { useFetchContractData } from "~~/hooks/custom/useFetchContractData";
@@ -30,16 +29,14 @@ const ViewSection = () => {
const { data: simpleUsdcContractData } = useDeployedContractInfo(contractNames[0]);
const { data: implementationContractData, isLoading: implementationContractLoading } = useDeployedContractInfo(
- contractNames[3],
+ contractNames[4],
);
- const { data: proxyContractData, isLoading: proxyContractLoading } = useDeployedContractInfo(contractNames[4]);
+ const { data: proxyContractData, isLoading: proxyContractLoading } = useDeployedContractInfo(contractNames[5]);
const deployedContractAddress = proxyContractData?.address || "";
const deployedContractAbi = implementationContractData?.abi as ContractAbi;
const deployedContractLoading = implementationContractLoading || proxyContractLoading;
- const chainId = useChainId();
-
const { resolvedTheme } = useTheme();
const [mounted, setMounted] = useState(false);
const [refetch, setRefetch] = useState(false);
@@ -71,8 +68,7 @@ const ViewSection = () => {
dependencies: [refetch],
});
- const { pools } = useFetchDepositPools({
- chainId,
+ const { pools, depositPoolsFetched } = useFetchDepositPools({
address: address || "",
deployedContractAddress,
deployedContractAbi,
@@ -80,7 +76,7 @@ const ViewSection = () => {
refetch,
});
- const { redeemRequests } = useFetchRedeemRequests({
+ const { redeemRequests, redeemRequestsFetched } = useFetchRedeemRequests({
address: address || "",
deployedContractAddress,
deployedContractAbi,
@@ -92,8 +88,6 @@ const ViewSection = () => {
const { writeContractAsync } = useWriteContract();
const handleRequestDeposit = async () => {
- // const message = `Bought ${assets} currency tokens.`;
- // setLog([...log, message]);
if (!address || !assets) {
notification.error("Missing required fields");
return;
@@ -135,14 +129,10 @@ const ViewSection = () => {
}
}
- // setLog(prevLog => [...prevLog, `Bought ${assets} currency tokens.`]);
-
setAssets("");
};
const handleRequestRedeem = () => {
- // const message = `Requested to redeem ${sharesToRequest} component tokens.`;
- // setLog([...log, message]);
if (!address || !sharesToRequest) {
notification.error("Missing required fields");
return;
@@ -166,14 +156,10 @@ const ViewSection = () => {
}
}
- // setLog(prevLog => [...prevLog, `Requested to redeem ${sharesToRequest} sharesToRequest.`]);
-
setSharesToRequest("");
};
const handleRedeem = () => {
- // const message = `Redeemed of ${sharesToRedeem} shares.`;
- // setLog([...log, message]);
if (!address || !sharesToRedeem) {
notification.error("Missing required fields");
return;
@@ -203,8 +189,6 @@ const ViewSection = () => {
}
}
- // setLog(prevLog => [...prevLog, `Bought ${assets} currency tokens.`]);
-
setSharesToRedeem("");
};
@@ -262,9 +246,17 @@ const ViewSection = () => {
} p-4 rounded-lg grid gap-3`}
>
Deposit Pools
- {pools.map((pool, index) => (
-
- ))}
+ {!depositPoolsFetched ? (
+ <>
+
+ >
+ ) : (
+ <>
+ {pools.map((pool, index) => (
+
+ ))}
+ >
+ )}
{
) : (
- {redeemRequests?.map((request, index) => (
-
- shares: {formatNumber(request?.shareAmount)} - assets: {formatNumber(request?.assetAmount)} USDC
- >
- }
- onClickHandler={() => setRequestAmountToRedeem(request)}
- />
- ))}
+ {redeemRequestsFetched ? (
+ <>
+ {redeemRequests?.map((request, index) => (
+
+ shares: {formatNumber(request?.shareAmount)} - assets: {formatNumber(request?.assetAmount)}{" "}
+ USDC
+ >
+ }
+ onClickHandler={() => setRequestAmountToRedeem(request)}
+ />
+ ))}
+ >
+ ) : (
+ <>
+
+ >
+ )}
)}
@@ -334,10 +335,6 @@ const ViewSection = () => {
-
- {/* Activity Log */}
- {/* */}
- {/* */}
);
};
diff --git a/spikes/spike-liquid-stone/packages/nextjs/contracts/deployedContracts.ts b/spikes/spike-liquid-stone/packages/nextjs/contracts/deployedContracts.ts
index 8f20da23f..acb9a5b90 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/contracts/deployedContracts.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/contracts/deployedContracts.ts
@@ -1,5234 +1,32185 @@
-
/**
* This file is autogenerated by Scaffold-ETH.
* You should not edit it manually or your changes might be overwritten.
*/
- import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";
-
+import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";
- const deployedContracts = {31337:{
- "SimpleUSDC#0": {
- "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3",
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "initialSupply",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "allowance",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "spender",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "approve",
- "inputs": [
- {
- "name": "spender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "value",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "balanceOf",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "decimals",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint8",
- "internalType": "uint8"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "mint",
- "inputs": [
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "name",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "owner",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "renounceOwnership",
- "inputs": [],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "symbol",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "totalSupply",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "transfer",
- "inputs": [
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "value",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "transferFrom",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "value",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "transferOwnership",
- "inputs": [
- {
- "name": "newOwner",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "event",
- "name": "Approval",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "spender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "value",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "OwnershipTransferred",
- "inputs": [
- {
- "name": "previousOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "newOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Transfer",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "value",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "ERC20InsufficientAllowance",
- "inputs": [
- {
- "name": "spender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "allowance",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "needed",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC20InsufficientBalance",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "balance",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "needed",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC20InvalidApprover",
- "inputs": [
- {
- "name": "approver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC20InvalidReceiver",
- "inputs": [
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC20InvalidSender",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC20InvalidSpender",
- "inputs": [
- {
- "name": "spender",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "OwnableInvalidOwner",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "OwnableUnauthorizedAccount",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ]
- }
- ],
- "inheritedFunctions": {}
- },
- "TripleRateYieldStrategy#0": {
- "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "abi": [
- {
- "type": "function",
- "name": "calcPrice",
- "inputs": [
- {
- "name": "contextContract",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "numPeriodsElapsed",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "price",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "calcYield",
- "inputs": [
- {
- "name": "contextContract",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "principal",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "fromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "toPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "yield",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "error",
- "name": "IYieldStrategy_InvalidContextAddress",
- "inputs": []
- },
- {
- "type": "error",
- "name": "IYieldStrategy_InvalidPeriodRange",
- "inputs": [
- {
- "name": "from",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "to",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MathOverflowedMulDiv",
- "inputs": []
- }
- ],
- "inheritedFunctions": {}
- },
- "RedeemOptimizerFIFO#0": {
- "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0",
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- {
- "name": "defaultBasis",
- "type": "uint8",
- "internalType": "enum IRedeemOptimizer.OptimizerBasis"
- },
- {
- "name": "startDepositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "DEFAULT_BASIS",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint8",
- "internalType": "enum IRedeemOptimizer.OptimizerBasis"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "START_DEPOSIT_PERIOD",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "optimize",
- "inputs": [
- {
- "name": "vault",
- "type": "address",
- "internalType": "contract IMultiTokenVault"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "sharesAtPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "optimizeRedeemShares",
- "inputs": [
- {
- "name": "vault",
- "type": "address",
- "internalType": "contract IMultiTokenVault"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "sharesAtPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "optimizeWithdrawAssets",
- "inputs": [
- {
- "name": "vault",
- "type": "address",
- "internalType": "contract IMultiTokenVault"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "sharesAtPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "error",
- "name": "MathOverflowedMulDiv",
- "inputs": []
- },
- {
- "type": "error",
- "name": "RedeemOptimizer__FutureToDepositPeriod",
- "inputs": [
- {
- "name": "toPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "currentPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "RedeemOptimizer__InvalidDepositPeriodRange",
- "inputs": [
- {
- "name": "fromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "toPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "RedeemOptimizer__OptimizerFailed",
- "inputs": [
- {
- "name": "amountFound",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amountToFind",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- }
- ],
- "inheritedFunctions": {}
- },
- "LiquidContinuousMultiTokenVault#0": {
- "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9",
- "abi": [
- {
- "type": "constructor",
- "inputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "ASSET_MANAGER_ROLE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "CLOCK_MODE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "function",
- "name": "DEFAULT_ADMIN_ROLE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "FREQUENCY",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "OPERATOR_ROLE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "RATE_PERCENT_SCALED",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "SCALE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "TENOR",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "UPGRADER_ROLE",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "UPGRADE_INTERFACE_VERSION",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "_redeemOptimizer",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "contract IRedeemOptimizer"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "_vaultStartTimestamp",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "_yieldStrategy",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "contract IYieldStrategy"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "asset",
- "inputs": [],
- "outputs": [
- {
- "name": "assetTokenAddress",
- "type": "address",
- "internalType": "address"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "balanceOf",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "balanceOfBatch",
- "inputs": [
- {
- "name": "accounts",
- "type": "address[]",
- "internalType": "address[]"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "calcPrice",
- "inputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "price",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "calcYield",
- "inputs": [
- {
- "name": "principal",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "fromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "toPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "yield",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "cancelRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "claimableDepositRequest",
- "inputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "function",
- "name": "claimableRedeemRequest",
- "inputs": [
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "clock",
- "inputs": [],
- "outputs": [
- {
- "name": "clock_",
- "type": "uint48",
- "internalType": "uint48"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToAssets",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToAssetsForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToAssetsForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToAssetsForDepositPeriodBatch",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToShares",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "convertToSharesForDepositPeriod",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "currentPeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "currentPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "currentPeriodRate",
- "inputs": [],
- "outputs": [
- {
- "name": "currentPeriodRate_",
- "type": "tuple",
- "internalType": "struct ITripleRateContext.PeriodRate",
- "components": [
- {
- "name": "interestRate",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "effectiveFromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "currentPeriodsElapsed",
- "inputs": [],
- "outputs": [
- {
- "name": "numPeriodsElapsed_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "deposit",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "shares_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "deposit",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "exists",
- "inputs": [
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "frequency",
- "inputs": [],
- "outputs": [
- {
- "name": "frequency_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "getRoleAdmin",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "getRoleMember",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- {
- "name": "index",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "getRoleMemberCount",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "getVersion",
- "inputs": [],
- "outputs": [
- {
- "name": "version",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "function",
- "name": "grantRole",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "hasRole",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "initialize",
- "inputs": [
- {
- "name": "vaultParams",
- "type": "tuple",
- "internalType": "struct LiquidContinuousMultiTokenVault.VaultParams",
- "components": [
- {
- "name": "vaultAuth",
- "type": "tuple",
- "internalType": "struct LiquidContinuousMultiTokenVault.VaultAuth",
- "components": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "upgrader",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "assetManager",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "name": "asset",
- "type": "address",
- "internalType": "contract IERC20Metadata"
- },
- {
- "name": "yieldStrategy",
- "type": "address",
- "internalType": "contract IYieldStrategy"
- },
- {
- "name": "redeemOptimizer",
- "type": "address",
- "internalType": "contract IRedeemOptimizer"
- },
- {
- "name": "vaultStartTimestamp",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemNoticePeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "contextParams",
- "type": "tuple",
- "internalType": "struct TripleRateContext.ContextParams",
- "components": [
- {
- "name": "fullRateScaled",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "initialReducedRate",
- "type": "tuple",
- "internalType": "struct ITripleRateContext.PeriodRate",
- "components": [
- {
- "name": "interestRate",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "effectiveFromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "name": "frequency",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "tenor",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "decimals",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- }
- ]
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "isApprovedForAll",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "lock",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "lockedAmount",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "lockedAmount_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "maxDeposit",
- "inputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "maxRedeemAtPeriod",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "maxShares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "maxRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "minUnlockPeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "minUnlockPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "noticePeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "noticePeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "numPeriodsForFullRate",
- "inputs": [],
- "outputs": [
- {
- "name": "numPeriods",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "pause",
- "inputs": [],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "paused",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "pendingDepositRequest",
- "inputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "function",
- "name": "pendingRedeemRequest",
- "inputs": [
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "previewDeposit",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "previewRedeemForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "previewRedeemForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "previousPeriodRate",
- "inputs": [],
- "outputs": [
- {
- "name": "previousPeriodRate_",
- "type": "tuple",
- "internalType": "struct ITripleRateContext.PeriodRate",
- "components": [
- {
- "name": "interestRate",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "effectiveFromPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "proxiableUUID",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "rateScaled",
- "inputs": [],
- "outputs": [
- {
- "name": "ratePercentageScaled_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "redeem",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "redeemForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "redeemForDepositPeriod",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "renounceRole",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- {
- "name": "callerConfirmation",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "requestDeposit",
- "inputs": [
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "requestId_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "requestRedeem",
- "inputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "requestId_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "requestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "revokeRole",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "safeBatchTransferFrom",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "safeTransferFrom",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "scale",
- "inputs": [],
- "outputs": [
- {
- "name": "scale_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "setApprovalForAll",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "approved",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setRedeemOptimizer",
- "inputs": [
- {
- "name": "redeemOptimizer",
- "type": "address",
- "internalType": "contract IRedeemOptimizer"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setReducedRate",
- "inputs": [
- {
- "name": "reducedRateScaled_",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "effectiveFromPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setReducedRateAtCurrent",
- "inputs": [
- {
- "name": "reducedRateScaled_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setVaultStartTimestamp",
- "inputs": [
- {
- "name": "vaultStartTimestamp",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setYieldStrategy",
- "inputs": [
- {
- "name": "yieldStrategy",
- "type": "address",
- "internalType": "contract IYieldStrategy"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "sharesAtPeriod",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "supportsInterface",
- "inputs": [
- {
- "name": "interfaceId",
- "type": "bytes4",
- "internalType": "bytes4"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "totalAssets",
- "inputs": [],
- "outputs": [
- {
- "name": "totalManagedAssets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "totalSupply",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "totalSupply",
- "inputs": [
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "unlockRequestAmount",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "amount_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequestAmountByDepositPeriod",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequestDepositPeriods",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequests",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unpause",
- "inputs": [],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "upgradeToAndCall",
- "inputs": [
- {
- "name": "newImplementation",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "uri",
- "inputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "withdrawAsset",
- "inputs": [
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "event",
- "name": "ApprovalForAll",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "approved",
- "type": "bool",
- "indexed": false,
- "internalType": "bool"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "AssetTransfer",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "receiver",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "asset",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- },
- {
- "name": "amount",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "CancelRedeemRequest",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "CurrentPeriodRateChanged",
- "inputs": [
- {
- "name": "interestRate",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "effectiveFromPeriod",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "CurrentTenorPeriodAndRateChanged",
- "inputs": [
- {
- "name": "tenorPeriod",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "reducedRate",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Deposit",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "receiver",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "assets",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "shares",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Deposit",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "assets",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "shares",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "DepositRequest",
- "inputs": [
- {
- "name": "controller",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- },
- {
- "name": "assets",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Initialized",
- "inputs": [
- {
- "name": "version",
- "type": "uint64",
- "indexed": false,
- "internalType": "uint64"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Paused",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "RedeemRequest",
- "inputs": [
- {
- "name": "controller",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- },
- {
- "name": "shares",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "RoleAdminChanged",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "indexed": true,
- "internalType": "bytes32"
- },
- {
- "name": "previousAdminRole",
- "type": "bytes32",
- "indexed": true,
- "internalType": "bytes32"
- },
- {
- "name": "newAdminRole",
- "type": "bytes32",
- "indexed": true,
- "internalType": "bytes32"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "RoleGranted",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "indexed": true,
- "internalType": "bytes32"
- },
- {
- "name": "account",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "RoleRevoked",
- "inputs": [
- {
- "name": "role",
- "type": "bytes32",
- "indexed": true,
- "internalType": "bytes32"
- },
- {
- "name": "account",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "TransferBatch",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "from",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "indexed": false,
- "internalType": "uint256[]"
- },
- {
- "name": "values",
- "type": "uint256[]",
- "indexed": false,
- "internalType": "uint256[]"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "TransferSingle",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "from",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "value",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "URI",
- "inputs": [
- {
- "name": "value",
- "type": "string",
- "indexed": false,
- "internalType": "string"
- },
- {
- "name": "id",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Unpaused",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Upgraded",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Withdraw",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "receiver",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "assets",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "shares",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Withdraw",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "receiver",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "assets",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "shares",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "AccessControlBadConfirmation",
- "inputs": []
- },
- {
- "type": "error",
- "name": "AccessControlUnauthorizedAccount",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "neededRole",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ]
- },
- {
- "type": "error",
- "name": "AddressEmptyCode",
- "inputs": [
- {
- "name": "target",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "AddressInsufficientBalance",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InsufficientBalance",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "balance",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "needed",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "tokenId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidApprover",
- "inputs": [
- {
- "name": "approver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidArrayLength",
- "inputs": [
- {
- "name": "idsLength",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "valuesLength",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidOperator",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidReceiver",
- "inputs": [
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidSender",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155MissingApprovalForAll",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967InvalidImplementation",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967NonPayable",
- "inputs": []
- },
- {
- "type": "error",
- "name": "EnforcedPause",
- "inputs": []
- },
- {
- "type": "error",
- "name": "EnumerableMapNonexistentKey",
- "inputs": [
- {
- "name": "key",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ]
- },
- {
- "type": "error",
- "name": "ExpectedPause",
- "inputs": []
- },
- {
- "type": "error",
- "name": "FailedInnerCall",
- "inputs": []
- },
- {
- "type": "error",
- "name": "InvalidInitialization",
- "inputs": []
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__AmountMismatch",
- "inputs": [
- {
- "name": "amount1",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount2",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__ControllerNotSender",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "controller",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
- "inputs": [
- {
- "name": "authName",
- "type": "string",
- "internalType": "string"
- },
- {
- "name": "authAddress",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
- "inputs": [
- {
- "name": "componentTokenAmount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockRequestedAmount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__InvalidFrequency",
- "inputs": [
- {
- "name": "frequency",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__UnAuthorized",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "authorizedOwner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
- "inputs": [
- {
- "name": "unlockPeriod1",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockPeriod2",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__CallerMissingApprovalForAll",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__ExceededMaxDeposit",
- "inputs": [
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "assets",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxAssets",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__ExceededMaxRedeem",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "shares",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxShares",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__InvalidArrayLength",
- "inputs": [
- {
- "name": "depositPeriodsLength",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "sharesLength",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__RedeemBeforeDeposit",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "MultiTokenVault__RedeemTimePeriodNotSupported",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "period",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "redeemPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "NotInitializing",
- "inputs": []
- },
- {
- "type": "error",
- "name": "ReentrancyGuardReentrantCall",
- "inputs": []
- },
- {
- "type": "error",
- "name": "SafeCastOverflowedUintDowncast",
- "inputs": [
- {
- "name": "bits",
- "type": "uint8",
- "internalType": "uint8"
- },
- {
- "name": "value",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "SafeERC20FailedOperation",
- "inputs": [
- {
- "name": "token",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__AuthorizeCallerFailed",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxRequestUnlockAmount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__ExceededMaxUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxUnlockAmount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__InvalidArrayLength",
- "inputs": [
- {
- "name": "depositPeriodsLength",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amountsLength",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "currentPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "Timer__StartTimeNotReached",
- "inputs": [
- {
- "name": "currentTime",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "startTime",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TripleRateContext_PeriodRegressionNotAllowed",
- "inputs": [
- {
- "name": "currentPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "updatePeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TripleRateContext_TenorPeriodRegressionNotAllowed",
- "inputs": [
- {
- "name": "tenorPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "newTenorPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "UUPSUnauthorizedCallContext",
- "inputs": []
- },
- {
- "type": "error",
- "name": "UUPSUnsupportedProxiableUUID",
- "inputs": [
- {
- "name": "slot",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ]
- }
- ],
- "inheritedFunctions": {}
+const deployedContracts = {
+ 31337: {
+ "SimpleUSDC#0": {
+ address: "0x5fbdb2315678afecb367f032d93f642f64180aa3",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "initialSupply",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "allowance",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "approve",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "decimals",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "mint",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "name",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "owner",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "renounceOwnership",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "symbol",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "transfer",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferOwnership",
+ inputs: [
+ {
+ name: "newOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "Approval",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "OwnershipTransferred",
+ inputs: [
+ {
+ name: "previousOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "newOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Transfer",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientAllowance",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "allowance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSpender",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableInvalidOwner",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "TripleRateYieldStrategy#0": {
+ address: "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
+ abi: [
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "numPeriodsElapsed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidContextAddress",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidPeriodRange",
+ inputs: [
+ {
+ name: "from",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "to",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "RedeemOptimizerFIFO#0": {
+ address: "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "defaultBasis",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ {
+ name: "startDepositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_BASIS",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "START_DEPOSIT_PERIOD",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimize",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeRedeemShares",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeWithdrawAssets",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__FutureToDepositPeriod",
+ inputs: [
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__InvalidDepositPeriodRange",
+ inputs: [
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__OptimizerFailed",
+ inputs: [
+ {
+ name: "amountFound",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountToFind",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVaultAsProxy#0": {
+ address: "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVault#0": {
+ address: "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#0": {
+ address: "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1155MintableBurnable#0": {
+ address: "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "burn",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "bytes[]",
+ internalType: "bytes[]",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "burnBatch",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMint",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMintBatch",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "SimpleTimelockAsyncUnlock#0": {
+ address: "0x0165878a594ca255338adfa4d48449f69242eb8f",
+ abi: [
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_deposits",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "deposits",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setCurrentPeriod",
+ inputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#1": {
+ address: "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
},
- "ERC1967Proxy#0": {
- "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9",
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "stateMutability": "payable"
- },
- {
- "type": "fallback",
- "stateMutability": "payable"
- },
- {
- "type": "event",
- "name": "Upgraded",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "AddressEmptyCode",
- "inputs": [
- {
- "name": "target",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967InvalidImplementation",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967NonPayable",
- "inputs": []
- },
- {
- "type": "error",
- "name": "FailedInnerCall",
- "inputs": []
- }
- ],
- "inheritedFunctions": {}
+ 98864: {
+ "SimpleUSDC#0": {
+ address: "0x401eCb1D350407f13ba348573E5630B83638E30D",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "initialSupply",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "allowance",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "approve",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "decimals",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "mint",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "name",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "owner",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "renounceOwnership",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "symbol",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "transfer",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferOwnership",
+ inputs: [
+ {
+ name: "newOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "Approval",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "OwnershipTransferred",
+ inputs: [
+ {
+ name: "previousOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "newOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Transfer",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientAllowance",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "allowance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSpender",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableInvalidOwner",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "TripleRateYieldStrategy#0": {
+ address: "0xe8fe4e1153d6010aa42b5ad8d98201c2517e8c9f",
+ abi: [
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "numPeriodsElapsed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidContextAddress",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidPeriodRange",
+ inputs: [
+ {
+ name: "from",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "to",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "RedeemOptimizerFIFO#0": {
+ address: "0x5b0504d26cc97c7ea2c18c407c664e586cb24543",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "defaultBasis",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ {
+ name: "startDepositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_BASIS",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "START_DEPOSIT_PERIOD",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimize",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeRedeemShares",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeWithdrawAssets",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__FutureToDepositPeriod",
+ inputs: [
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__InvalidDepositPeriodRange",
+ inputs: [
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__OptimizerFailed",
+ inputs: [
+ {
+ name: "amountFound",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountToFind",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVaultAsProxy#0": {
+ address: "0x4b1fc984f324d2a0fdd5cd83925124b61175f5c6",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVault#0": {
+ address: "0x9db9df1d91c5cde0c92cf02b9992d42f47028b4a",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#0": {
+ address: "0x4b1fc984f324d2a0fdd5cd83925124b61175f5c6",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1155MintableBurnable#0": {
+ address: "0xaabb58721346ff226495e99582c775f4aadcb68e",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "burn",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "bytes[]",
+ internalType: "bytes[]",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "burnBatch",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMint",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMintBatch",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "SimpleTimelockAsyncUnlock#0": {
+ address: "0x7c486fa077b84f7fae63ff1f2a3090890c996e77",
+ abi: [
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_deposits",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "deposits",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setCurrentPeriod",
+ inputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#1": {
+ address: "0x816566e4f7a8812999a58e7f18a1357569318999",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
},
- "ERC1155MintableBurnable#0": {
- "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707",
- "abi": [
- {
- "type": "constructor",
- "inputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "balanceOf",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "balanceOfBatch",
- "inputs": [
- {
- "name": "accounts",
- "type": "address[]",
- "internalType": "address[]"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "burn",
- "inputs": [
- {
- "name": "_from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_id",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "_amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "",
- "type": "bytes[]",
- "internalType": "bytes[]"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "burnBatch",
- "inputs": [
- {
- "name": "_from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "_amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "isApprovedForAll",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "safeBatchTransferFrom",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "values",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "safeMint",
- "inputs": [
- {
- "name": "_to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_id",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "_amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "_data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "safeMintBatch",
- "inputs": [
- {
- "name": "_to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_ids",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "_amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "_data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "safeTransferFrom",
- "inputs": [
- {
- "name": "from",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "value",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setApprovalForAll",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "approved",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "supportsInterface",
- "inputs": [
- {
- "name": "interfaceId",
- "type": "bytes4",
- "internalType": "bytes4"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "uri",
- "inputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "event",
- "name": "ApprovalForAll",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "approved",
- "type": "bool",
- "indexed": false,
- "internalType": "bool"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "TransferBatch",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "from",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "ids",
- "type": "uint256[]",
- "indexed": false,
- "internalType": "uint256[]"
- },
- {
- "name": "values",
- "type": "uint256[]",
- "indexed": false,
- "internalType": "uint256[]"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "TransferSingle",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "from",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "to",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "id",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- },
- {
- "name": "value",
- "type": "uint256",
- "indexed": false,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "URI",
- "inputs": [
- {
- "name": "value",
- "type": "string",
- "indexed": false,
- "internalType": "string"
- },
- {
- "name": "id",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "ERC1155InsufficientBalance",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "balance",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "needed",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "tokenId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidApprover",
- "inputs": [
- {
- "name": "approver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidArrayLength",
- "inputs": [
- {
- "name": "idsLength",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "valuesLength",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidOperator",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidReceiver",
- "inputs": [
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155InvalidSender",
- "inputs": [
- {
- "name": "sender",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1155MissingApprovalForAll",
- "inputs": [
- {
- "name": "operator",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- }
- ],
- "inheritedFunctions": {}
+ 98865: {
+ "SimpleUSDC#0": {
+ address: "0x0F3B6CC558A714ecf4Cc9ec8caFF0b57ECf65890",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "initialSupply",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "allowance",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "approve",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "decimals",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "mint",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "name",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "owner",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "renounceOwnership",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "symbol",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "transfer",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferOwnership",
+ inputs: [
+ {
+ name: "newOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "Approval",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "OwnershipTransferred",
+ inputs: [
+ {
+ name: "previousOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "newOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Transfer",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientAllowance",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "allowance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSpender",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableInvalidOwner",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "TripleRateYieldStrategy#0": {
+ address: "0x797ccfe4063e0c0cc6c1eb580f29bbcec6f62e4b",
+ abi: [
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "numPeriodsElapsed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidContextAddress",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidPeriodRange",
+ inputs: [
+ {
+ name: "from",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "to",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "RedeemOptimizerFIFO#0": {
+ address: "0x1e0d689be9cab9ef4db8b24eb2a34feab54b0b8b",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "defaultBasis",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ {
+ name: "startDepositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_BASIS",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "START_DEPOSIT_PERIOD",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimize",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeRedeemShares",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeWithdrawAssets",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__FutureToDepositPeriod",
+ inputs: [
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__InvalidDepositPeriodRange",
+ inputs: [
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__OptimizerFailed",
+ inputs: [
+ {
+ name: "amountFound",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountToFind",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVaultAsProxy#0": {
+ address: "0xb89846b74f3b190f6e00fc35b3affcdf5d4bb9f9",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVault#0": {
+ address: "0x8f87e1258d645d948f270221c34202be0583f29b",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#0": {
+ address: "0xb89846b74f3b190f6e00fc35b3affcdf5d4bb9f9",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
},
- "SimpleTimelockAsyncUnlock#0": {
- "address": "0x0165878a594ca255338adfa4d48449f69242eb8f",
- "abi": [
- {
- "type": "function",
- "name": "UPGRADE_INTERFACE_VERSION",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "string",
- "internalType": "string"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "_currentPeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "_deposits",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "contract IERC5679Ext1155"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "cancelRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "currentPeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "currentPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "initialize",
- "inputs": [
- {
- "name": "noticePeriod_",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "deposits",
- "type": "address",
- "internalType": "contract IERC5679Ext1155"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "lock",
- "inputs": [
- {
- "name": "account",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "lockedAmount",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "lockedAmount_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "maxRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "minUnlockPeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "minUnlockPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "noticePeriod",
- "inputs": [],
- "outputs": [
- {
- "name": "noticePeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "proxiableUUID",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "requestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setCurrentPeriod",
- "inputs": [
- {
- "name": "currentPeriod_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "supportsInterface",
- "inputs": [
- {
- "name": "interfaceId",
- "type": "bytes4",
- "internalType": "bytes4"
- }
- ],
- "outputs": [
- {
- "name": "",
- "type": "bool",
- "internalType": "bool"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "unlockPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "unlockRequestAmount",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "amount_",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequestAmountByDepositPeriod",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequestDepositPeriods",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods_",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "unlockRequests",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "internalType": "uint256"
- }
- ],
- "outputs": [
- {
- "name": "depositPeriods",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- {
- "name": "amounts",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "upgradeToAndCall",
- "inputs": [
- {
- "name": "newImplementation",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "event",
- "name": "CancelRedeemRequest",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "requestId",
- "type": "uint256",
- "indexed": true,
- "internalType": "uint256"
- },
- {
- "name": "sender",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Initialized",
- "inputs": [
- {
- "name": "version",
- "type": "uint64",
- "indexed": false,
- "internalType": "uint64"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "Upgraded",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "AddressEmptyCode",
- "inputs": [
- {
- "name": "target",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967InvalidImplementation",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967NonPayable",
- "inputs": []
- },
- {
- "type": "error",
- "name": "EnumerableMapNonexistentKey",
- "inputs": [
- {
- "name": "key",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ]
- },
- {
- "type": "error",
- "name": "FailedInnerCall",
- "inputs": []
- },
- {
- "type": "error",
- "name": "InvalidInitialization",
- "inputs": []
- },
- {
- "type": "error",
- "name": "NotInitializing",
- "inputs": []
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__AuthorizeCallerFailed",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxRequestUnlockAmount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__ExceededMaxUnlock",
- "inputs": [
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amount",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "maxUnlockAmount",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__InvalidArrayLength",
- "inputs": [
- {
- "name": "depositPeriodsLength",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "amountsLength",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "currentPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
- "inputs": [
- {
- "name": "caller",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "owner",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "depositPeriod",
- "type": "uint256",
- "internalType": "uint256"
- },
- {
- "name": "unlockPeriod",
- "type": "uint256",
- "internalType": "uint256"
- }
- ]
- },
- {
- "type": "error",
- "name": "UUPSUnauthorizedCallContext",
- "inputs": []
- },
- {
- "type": "error",
- "name": "UUPSUnsupportedProxiableUUID",
- "inputs": [
- {
- "name": "slot",
- "type": "bytes32",
- "internalType": "bytes32"
- }
- ]
- }
- ],
- "inheritedFunctions": {}
+ 421614: {
+ "SimpleUSDC#0": {
+ address: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "initialSupply",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "allowance",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "approve",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "decimals",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "mint",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "name",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "owner",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "renounceOwnership",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "symbol",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "transfer",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "transferOwnership",
+ inputs: [
+ {
+ name: "newOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "Approval",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "spender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "OwnershipTransferred",
+ inputs: [
+ {
+ name: "previousOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "newOwner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Transfer",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientAllowance",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "allowance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC20InvalidSpender",
+ inputs: [
+ {
+ name: "spender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableInvalidOwner",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "OwnableUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "TripleRateYieldStrategy#0": {
+ address: "0x6502941de3a54a59a2a2a918ed58868cf168f56b",
+ abi: [
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "numPeriodsElapsed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "contextContract",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidContextAddress",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "IYieldStrategy_InvalidPeriodRange",
+ inputs: [
+ {
+ name: "from",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "to",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "RedeemOptimizerFIFO#0": {
+ address: "0x141dd57ef6cb9a5d94942e52f037acc871f70b72",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "defaultBasis",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ {
+ name: "startDepositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_BASIS",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint8",
+ internalType: "enum IRedeemOptimizer.OptimizerBasis",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "START_DEPOSIT_PERIOD",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimize",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeRedeemShares",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "optimizeWithdrawAssets",
+ inputs: [
+ {
+ name: "vault",
+ type: "address",
+ internalType: "contract IMultiTokenVault",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "sharesAtPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "error",
+ name: "MathOverflowedMulDiv",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__FutureToDepositPeriod",
+ inputs: [
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__InvalidDepositPeriodRange",
+ inputs: [
+ {
+ name: "fromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "toPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "RedeemOptimizer__OptimizerFailed",
+ inputs: [
+ {
+ name: "amountFound",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountToFind",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVaultAsProxy#0": {
+ address: "0x111b6a3dbace7f0b32baad47027907765e88abd2",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "LiquidContinuousMultiTokenVault#0": {
+ address: "0x6b3f548a14f66b620589aac4cd4b622572e62e4d",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "ASSET_MANAGER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "CLOCK_MODE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "DEFAULT_ADMIN_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "FREQUENCY",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "OPERATOR_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "RATE_PERCENT_SCALED",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "SCALE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "TENOR",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADER_ROLE",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_redeemOptimizer",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_vaultStartTimestamp",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_yieldStrategy",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "asset",
+ inputs: [],
+ outputs: [
+ {
+ name: "assetTokenAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcPrice",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "price",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "calcYield",
+ inputs: [
+ {
+ name: "principal",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "yield",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "claimableDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "claimableRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "clock",
+ inputs: [],
+ outputs: [
+ {
+ name: "clock_",
+ type: "uint48",
+ internalType: "uint48",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssets",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToAssetsForDepositPeriodBatch",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToShares",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "convertToSharesForDepositPeriod",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "currentPeriodsElapsed",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriodsElapsed_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "deposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "exists",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "frequency",
+ inputs: [],
+ outputs: [
+ {
+ name: "frequency_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleAdmin",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMember",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "index",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getRoleMemberCount",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "getVersion",
+ inputs: [],
+ outputs: [
+ {
+ name: "version",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "grantRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "hasRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "vaultParams",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultParams",
+ components: [
+ {
+ name: "vaultAuth",
+ type: "tuple",
+ internalType: "struct LiquidContinuousMultiTokenVault.VaultAuth",
+ components: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "upgrader",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "assetManager",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ name: "asset",
+ type: "address",
+ internalType: "contract IERC20Metadata",
+ },
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemNoticePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "contextParams",
+ type: "tuple",
+ internalType: "struct TripleRateContext.ContextParams",
+ components: [
+ {
+ name: "fullRateScaled",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "initialReducedRate",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tenor",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "decimals",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxDeposit",
+ inputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRedeemAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "numPeriodsForFullRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "numPeriods",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "paused",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "pendingDepositRequest",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "pure",
+ },
+ {
+ type: "function",
+ name: "pendingRedeemRequest",
+ inputs: [
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previewRedeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "previousPeriodRate",
+ inputs: [],
+ outputs: [
+ {
+ name: "previousPeriodRate_",
+ type: "tuple",
+ internalType: "struct ITripleRateContext.PeriodRate",
+ components: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "rateScaled",
+ inputs: [],
+ outputs: [
+ {
+ name: "ratePercentageScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "redeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "redeemForDepositPeriod",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "renounceRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "callerConfirmation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestDeposit",
+ inputs: [
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestRedeem",
+ inputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "requestId_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "revokeRole",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "scale",
+ inputs: [],
+ outputs: [
+ {
+ name: "scale_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setRedeemOptimizer",
+ inputs: [
+ {
+ name: "redeemOptimizer",
+ type: "address",
+ internalType: "contract IRedeemOptimizer",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRate",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setReducedRateAtCurrent",
+ inputs: [
+ {
+ name: "reducedRateScaled_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setVaultStartTimestamp",
+ inputs: [
+ {
+ name: "vaultStartTimestamp",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setYieldStrategy",
+ inputs: [
+ {
+ name: "yieldStrategy",
+ type: "address",
+ internalType: "contract IYieldStrategy",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "sharesAtPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalAssets",
+ inputs: [],
+ outputs: [
+ {
+ name: "totalManagedAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "totalSupply",
+ inputs: [
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unpause",
+ inputs: [],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "withdrawAsset",
+ inputs: [
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "AssetTransfer",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "asset",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentPeriodRateChanged",
+ inputs: [
+ {
+ name: "interestRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "effectiveFromPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "CurrentTenorPeriodAndRateChanged",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "reducedRate",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Deposit",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "DepositRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Paused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RedeemRequest",
+ inputs: [
+ {
+ name: "controller",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleAdminChanged",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "previousAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "newAdminRole",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleGranted",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "RoleRevoked",
+ inputs: [
+ {
+ name: "role",
+ type: "bytes32",
+ indexed: true,
+ internalType: "bytes32",
+ },
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Unpaused",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: false,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Withdraw",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "receiver",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AccessControlBadConfirmation",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "AccessControlUnauthorizedAccount",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "neededRole",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "AddressInsufficientBalance",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnforcedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ExpectedPause",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__AmountMismatch",
+ inputs: [
+ {
+ name: "amount1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__ControllerNotSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "controller",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidAuthAddress",
+ inputs: [
+ {
+ name: "authName",
+ type: "string",
+ internalType: "string",
+ },
+ {
+ name: "authAddress",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidComponentTokenAmount",
+ inputs: [
+ {
+ name: "componentTokenAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockRequestedAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__InvalidFrequency",
+ inputs: [
+ {
+ name: "frequency",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnAuthorized",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "authorizedOwner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "LiquidContinuousMultiTokenVault__UnlockPeriodMismatch",
+ inputs: [
+ {
+ name: "unlockPeriod1",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod2",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__CallerMissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxDeposit",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "assets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxAssets",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__ExceededMaxRedeem",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "shares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxShares",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "sharesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemBeforeDeposit",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "MultiTokenVault__RedeemTimePeriodNotSupported",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "period",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "redeemPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "ReentrancyGuardReentrantCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "SafeCastOverflowedUintDowncast",
+ inputs: [
+ {
+ name: "bits",
+ type: "uint8",
+ internalType: "uint8",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "SafeERC20FailedOperation",
+ inputs: [
+ {
+ name: "token",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "Timer__StartTimeNotReached",
+ inputs: [
+ {
+ name: "currentTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "startTime",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_PeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "updatePeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TripleRateContext_TenorPeriodRegressionNotAllowed",
+ inputs: [
+ {
+ name: "tenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "newTenorPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#0": {
+ address: "0x111b6a3dbace7f0b32baad47027907765e88abd2",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1155MintableBurnable#0": {
+ address: "0x72fcfb7f0a8a232e126556ebe46b6b0bdf62a9e6",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "balanceOf",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "balanceOfBatch",
+ inputs: [
+ {
+ name: "accounts",
+ type: "address[]",
+ internalType: "address[]",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "burn",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "",
+ type: "bytes[]",
+ internalType: "bytes[]",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "burnBatch",
+ inputs: [
+ {
+ name: "_from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "isApprovedForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "safeBatchTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMint",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeMintBatch",
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_ids",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "safeTransferFrom",
+ inputs: [
+ {
+ name: "from",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "uri",
+ inputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "event",
+ name: "ApprovalForAll",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "approved",
+ type: "bool",
+ indexed: false,
+ internalType: "bool",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferBatch",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "ids",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ {
+ name: "values",
+ type: "uint256[]",
+ indexed: false,
+ internalType: "uint256[]",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "TransferSingle",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "from",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "to",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ {
+ name: "value",
+ type: "uint256",
+ indexed: false,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "URI",
+ inputs: [
+ {
+ name: "value",
+ type: "string",
+ indexed: false,
+ internalType: "string",
+ },
+ {
+ name: "id",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "ERC1155InsufficientBalance",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "balance",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "needed",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "tokenId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidApprover",
+ inputs: [
+ {
+ name: "approver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidArrayLength",
+ inputs: [
+ {
+ name: "idsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "valuesLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidOperator",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidReceiver",
+ inputs: [
+ {
+ name: "receiver",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155InvalidSender",
+ inputs: [
+ {
+ name: "sender",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1155MissingApprovalForAll",
+ inputs: [
+ {
+ name: "operator",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "SimpleTimelockAsyncUnlock#0": {
+ address: "0xae126740b543d03c10e01375093afc178f430734",
+ abi: [
+ {
+ type: "function",
+ name: "UPGRADE_INTERFACE_VERSION",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "string",
+ internalType: "string",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "_deposits",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "cancelRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "currentPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "initialize",
+ inputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "deposits",
+ type: "address",
+ internalType: "contract IERC5679Ext1155",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lock",
+ inputs: [
+ {
+ name: "account",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "lockedAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "lockedAmount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "maxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "minUnlockPeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "minUnlockPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "noticePeriod",
+ inputs: [],
+ outputs: [
+ {
+ name: "noticePeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "proxiableUUID",
+ inputs: [],
+ outputs: [
+ {
+ name: "",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "requestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "setCurrentPeriod",
+ inputs: [
+ {
+ name: "currentPeriod_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "supportsInterface",
+ inputs: [
+ {
+ name: "interfaceId",
+ type: "bytes4",
+ internalType: "bytes4",
+ },
+ ],
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ internalType: "bool",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "nonpayable",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmount",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount_",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestAmountByDepositPeriod",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequestDepositPeriods",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods_",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "unlockRequests",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ outputs: [
+ {
+ name: "depositPeriods",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ {
+ name: "amounts",
+ type: "uint256[]",
+ internalType: "uint256[]",
+ },
+ ],
+ stateMutability: "view",
+ },
+ {
+ type: "function",
+ name: "upgradeToAndCall",
+ inputs: [
+ {
+ name: "newImplementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ outputs: [],
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "CancelRedeemRequest",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ {
+ name: "requestId",
+ type: "uint256",
+ indexed: true,
+ internalType: "uint256",
+ },
+ {
+ name: "sender",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Initialized",
+ inputs: [
+ {
+ name: "version",
+ type: "uint64",
+ indexed: false,
+ internalType: "uint64",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "EnumerableMapNonexistentKey",
+ inputs: [
+ {
+ name: "key",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "InvalidInitialization",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "NotInitializing",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__AuthorizeCallerFailed",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxRequestUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxRequestUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__ExceededMaxUnlock",
+ inputs: [
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "maxUnlockAmount",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__InvalidArrayLength",
+ inputs: [
+ {
+ name: "depositPeriodsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "amountsLength",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeCurrentPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "currentPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "TimelockAsyncUnlock__UnlockBeforeDepositPeriod",
+ inputs: [
+ {
+ name: "caller",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "owner",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "depositPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ {
+ name: "unlockPeriod",
+ type: "uint256",
+ internalType: "uint256",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "UUPSUnauthorizedCallContext",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "UUPSUnsupportedProxiableUUID",
+ inputs: [
+ {
+ name: "slot",
+ type: "bytes32",
+ internalType: "bytes32",
+ },
+ ],
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ "ERC1967Proxy#1": {
+ address: "0x0b5fc82abcda2370eb45b5d9d2f43423d6da6996",
+ abi: [
+ {
+ type: "constructor",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ {
+ name: "_data",
+ type: "bytes",
+ internalType: "bytes",
+ },
+ ],
+ stateMutability: "payable",
+ },
+ {
+ type: "fallback",
+ stateMutability: "payable",
+ },
+ {
+ type: "event",
+ name: "Upgraded",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ indexed: true,
+ internalType: "address",
+ },
+ ],
+ anonymous: false,
+ },
+ {
+ type: "error",
+ name: "AddressEmptyCode",
+ inputs: [
+ {
+ name: "target",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967InvalidImplementation",
+ inputs: [
+ {
+ name: "implementation",
+ type: "address",
+ internalType: "address",
+ },
+ ],
+ },
+ {
+ type: "error",
+ name: "ERC1967NonPayable",
+ inputs: [],
+ },
+ {
+ type: "error",
+ name: "FailedInnerCall",
+ inputs: [],
+ },
+ ],
+ inheritedFunctions: {},
+ },
},
- "ERC1967Proxy#1": {
- "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853",
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- },
- {
- "name": "_data",
- "type": "bytes",
- "internalType": "bytes"
- }
- ],
- "stateMutability": "payable"
- },
- {
- "type": "fallback",
- "stateMutability": "payable"
- },
- {
- "type": "event",
- "name": "Upgraded",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "AddressEmptyCode",
- "inputs": [
- {
- "name": "target",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967InvalidImplementation",
- "inputs": [
- {
- "name": "implementation",
- "type": "address",
- "internalType": "address"
- }
- ]
- },
- {
- "type": "error",
- "name": "ERC1967NonPayable",
- "inputs": []
- },
- {
- "type": "error",
- "name": "FailedInnerCall",
- "inputs": []
- }
- ],
- "inheritedFunctions": {}
- }
-},} as const;
+} as const;
- export default deployedContracts satisfies GenericContractsDeclaration
\ No newline at end of file
+export default deployedContracts satisfies GenericContractsDeclaration;
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchLocks.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchLocks.ts
index 833d56ce6..84505e5d5 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchLocks.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchLocks.ts
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { ethers } from "ethers";
+import { useChainId, useChains } from "wagmi";
import { LockRow } from "~~/types/async";
import { MAX_PERIODS } from "~~/utils/async/config";
import { ContractAbi } from "~~/utils/scaffold-eth/contract";
@@ -15,6 +16,11 @@ export const useFetchLocks = ({
deployedContractAbi: ContractAbi;
refetch: any;
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
const userDepositPeriods = Array.from({ length: MAX_PERIODS + 1 }, (_, index) => index);
const [lockDatas, setLockDatas] = useState([]);
@@ -23,7 +29,7 @@ export const useFetchLocks = ({
async function fetchBalances() {
if (!deployedContractAddress || !address || userDepositPeriods.length === 0) return;
- const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545");
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
const lockPromises = userDepositPeriods.map(async depositPeriod => {
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchRequestDetails.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchRequestDetails.ts
index af7b35a83..18c1775aa 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchRequestDetails.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchRequestDetails.ts
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { ethers } from "ethers";
+import { useChainId, useChains } from "wagmi";
import { RequestDetail } from "~~/types/async";
import { ContractAbi } from "~~/utils/scaffold-eth/contract";
@@ -16,6 +17,11 @@ export const useFetchRequestDetails = ({
requestId: number | null;
refetch: any;
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
const [requestDetails, setRequestDetails] = useState([]);
useEffect(() => {
@@ -23,7 +29,7 @@ export const useFetchRequestDetails = ({
try {
if (!address || !deployedContractAddress || deployedContractAbi || !requestId) return;
- const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545");
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
const [depositPeriods, amounts] = await contract.unlockRequests(address, BigInt(requestId));
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchUnlockRequests.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchUnlockRequests.ts
index 985af6c25..7121dc8a4 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchUnlockRequests.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/async/useFetchUnlockRequests.ts
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { ethers } from "ethers";
+import { useChainId, useChains } from "wagmi";
import { UnlockRequest } from "~~/types/async";
import { MAX_PERIODS } from "~~/utils/async/config";
import { ContractAbi } from "~~/utils/scaffold-eth/contract";
@@ -19,6 +20,11 @@ export const useFetchUnlockRequests = ({
noticePeriod: number;
refetch: any;
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
const [unlockRequests, setUnlockRequests] = useState([]);
useEffect(() => {
@@ -26,7 +32,7 @@ export const useFetchUnlockRequests = ({
try {
if (!address || !deployedContractAddress || deployedContractAbi || !noticePeriod) return;
- const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545");
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
const requests: UnlockRequest[] = [];
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchAdminData.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchAdminData.ts
index f81056f42..306a2a0e4 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchAdminData.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchAdminData.ts
@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
import { ethers } from "ethers";
-import { useReadContract } from "wagmi";
+import { useChainId, useChains, useReadContract } from "wagmi";
import { Contract, ContractAbi, ContractName } from "~~/utils/scaffold-eth/contract";
export const useFetchAdminData = ({
@@ -18,6 +18,11 @@ export const useFetchAdminData = ({
simpleUsdcContractData: Contract | undefined;
dependencies: [any] | [];
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
const [allDataFetched, setAllDataFetched] = useState(false);
const [vaultBalance, setVaultBalance] = useState("");
@@ -47,7 +52,10 @@ export const useFetchAdminData = ({
const [assetManagerRoleMembers, setAssetManagerRoleMembers] = useState([]);
const [userHasAssetManagerRole, setUserHasAssetManagerRole] = useState(false);
- const provider = new ethers.JsonRpcProvider("http://localhost:8545");
+ // const provider = useCallback(
+ // () => new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]),
+ // [chain?.rpcUrls?.default?.http],
+ // );
const { refetch: refetchVaultBalance } = useReadContract({
address: simpleUsdcContractData?.address,
@@ -150,130 +158,163 @@ export const useFetchAdminData = ({
// Fetch data and set state
useEffect(() => {
const fetchData = async () => {
- if (!deployedContractAddress || !deployedContractAbi || !provider || !simpleUsdcContractData) {
+ if (
+ !deployedContractAddress ||
+ !deployedContractAbi ||
+ !chain?.rpcUrls?.default?.http[0] ||
+ !simpleUsdcContractData
+ ) {
return;
}
- const deployedContract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
+ try {
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
+ const deployedContract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
+
+ setFetchingAdmins(true);
+ setFetchingOperators(true);
+ setFetchingUpgraders(true);
+ setFetchingAssetManagers(true);
- setFetchingAdmins(true);
- setFetchingOperators(true);
- setFetchingUpgraders(true);
- setFetchingAssetManagers(true);
+ const vaultBalanceData = await refetchVaultBalance();
+ const vaultBalanceBigInt = BigInt(vaultBalanceData?.data as bigint);
+ setVaultBalance(ethers.formatUnits(vaultBalanceBigInt, 6));
- const vaultBalanceData = await refetchVaultBalance();
- const vaultBalanceBigInt = BigInt(vaultBalanceData?.data as bigint);
- setVaultBalance(ethers.formatUnits(vaultBalanceBigInt, 6));
+ const custodianData = await refetchCustodianBalance();
+ const custodianBigInt = BigInt(custodianData?.data as bigint);
+ setCustodianBalance(ethers.formatUnits(custodianBigInt, 6));
- const custodianData = await refetchCustodianBalance();
- const custodianBigInt = BigInt(custodianData?.data as bigint);
- setCustodianBalance(ethers.formatUnits(custodianBigInt, 6));
+ const adminRoleData = await refetchAdminRole();
- const adminRoleData = await refetchAdminRole();
+ setAdminRole(adminRoleData?.data as `0x${string}`);
- setAdminRole(adminRoleData?.data);
+ const adminRoleCountData = await refetchAdminRoleCount();
- const adminRoleCountData = await refetchAdminRoleCount();
+ setAdminRoleCount(Number(adminRoleCountData?.data));
- setAdminRoleCount(Number(adminRoleCountData?.data));
+ const userHasAdminRoleData = await refetchUserHasAdminRole();
- const userHasAdminRoleData = await refetchUserHasAdminRole();
+ setUserHasAdminRole((userHasAdminRoleData?.data || false) as boolean);
- setUserHasAdminRole(userHasAdminRoleData?.data || false);
+ const operatorRoleData = await refetchOperatorRole();
- const operatorRoleData = await refetchOperatorRole();
+ setOperatorRole(operatorRoleData?.data as `0x${string}`);
- setOperatorRole(operatorRoleData?.data);
+ const operatorRoleCountData = await refetchOperatorRoleCount();
- const operatorRoleCountData = await refetchOperatorRoleCount();
+ setOperatorRoleCount(Number(operatorRoleCountData?.data));
- setOperatorRoleCount(Number(operatorRoleCountData?.data));
+ const upgraderRoleData = await refetchUpgraderRole();
- const upgraderRoleData = await refetchUpgraderRole();
+ const userHasOperatorRoleData = await refetchUserHasOperatorRole();
- const userHasOperatorRoleData = await refetchUserHasOperatorRole();
+ setUserHasOperatorRole((userHasOperatorRoleData?.data || false) as boolean);
- setUserHasOperatorRole(userHasOperatorRoleData?.data || false);
+ setUpgraderRole(upgraderRoleData?.data as `0x${string}`);
- setUpgraderRole(upgraderRoleData?.data);
+ const upgraderRoleCountData = await refetchUpgraderRoleCount();
- const upgraderRoleCountData = await refetchUpgraderRoleCount();
+ setUpgraderRoleCount(Number(upgraderRoleCountData?.data));
- setUpgraderRoleCount(Number(upgraderRoleCountData?.data));
+ const assetManagerRoleData = await refetchAssetManagerRole();
- const assetManagerRoleData = await refetchAssetManagerRole();
+ const userHasUpgraderRoleData = await refetchUserHasUpgraderRole();
- const userHasUpgraderRoleData = await refetchUserHasUpgraderRole();
+ setUserHasUpgraderRole((userHasUpgraderRoleData?.data || false) as boolean);
- setUserHasUpgraderRole(userHasUpgraderRoleData?.data || false);
+ setAssetManagerRole(assetManagerRoleData?.data as `0x${string}`);
- setAssetManagerRole(assetManagerRoleData?.data);
+ const assetManagerRoleCountData = await refetchAssetManagerRoleCount();
- const assetManagerRoleCountData = await refetchAssetManagerRoleCount();
+ setAssetManagerRoleCount(Number(assetManagerRoleCountData?.data));
- setAssetManagerRoleCount(Number(assetManagerRoleCountData?.data));
+ const userHasAssetManagerRoleData = await refetchUserHasAssetManagerRole();
- const userHasAssetManagerRoleData = await refetchUserHasAssetManagerRole();
+ setUserHasAssetManagerRole((userHasAssetManagerRoleData?.data || false) as boolean);
- setUserHasAssetManagerRole(userHasAssetManagerRoleData?.data || false);
+ if (deployedContract && adminRoleData && adminRoleCountData) {
+ const _adminRoleMembers: string[] = [];
- if (deployedContract && adminRoleData && adminRoleCountData) {
- const _adminRoleMembers: string[] = [];
+ for (let i = 0; i < Number(adminRoleCountData?.data); i++) {
+ const adminRoleMember = await deployedContract.getRoleMember(adminRoleData?.data, BigInt(i));
- for (let i = 0; i < Number(adminRoleCountData?.data); i++) {
- const adminRoleMember = await deployedContract.getRoleMember(adminRoleData?.data, BigInt(i));
+ _adminRoleMembers.push(adminRoleMember);
+ }
- _adminRoleMembers.push(adminRoleMember);
+ setAdminRoleMembers(_adminRoleMembers);
}
+ setFetchingAdmins(false);
- setAdminRoleMembers(_adminRoleMembers);
- }
- setFetchingAdmins(false);
+ if (deployedContract && operatorRoleData && operatorRoleCountData) {
+ const _operatorRoleMembers: string[] = [];
- if (deployedContract && operatorRoleData && operatorRoleCountData) {
- const _operatorRoleMembers: string[] = [];
+ for (let i = 0; i < Number(operatorRoleCountData?.data); i++) {
+ const operatorRoleMember = await deployedContract.getRoleMember(operatorRoleData?.data, BigInt(i));
- for (let i = 0; i < Number(operatorRoleCountData?.data); i++) {
- const operatorRoleMember = await deployedContract.getRoleMember(operatorRoleData?.data, BigInt(i));
+ _operatorRoleMembers.push(operatorRoleMember);
+ }
- _operatorRoleMembers.push(operatorRoleMember);
+ setOperatorRoleMembers(_operatorRoleMembers);
}
+ setFetchingOperators(false);
- setOperatorRoleMembers(_operatorRoleMembers);
- }
- setFetchingOperators(false);
+ if (deployedContract && upgraderRoleData && upgraderRoleCountData) {
+ const _upgraderRoleMembers: string[] = [];
- if (deployedContract && upgraderRoleData && upgraderRoleCountData) {
- const _upgraderRoleMembers: string[] = [];
+ for (let i = 0; i < Number(upgraderRoleCountData?.data); i++) {
+ const upgraderRoleMember = await deployedContract.getRoleMember(upgraderRoleData?.data, BigInt(i));
- for (let i = 0; i < Number(upgraderRoleCountData?.data); i++) {
- const upgraderRoleMember = await deployedContract.getRoleMember(upgraderRoleData?.data, BigInt(i));
+ _upgraderRoleMembers.push(upgraderRoleMember);
+ }
- _upgraderRoleMembers.push(upgraderRoleMember);
+ setUpgraderRoleMembers(_upgraderRoleMembers);
}
+ setFetchingUpgraders(false);
- setUpgraderRoleMembers(_upgraderRoleMembers);
- }
- setFetchingUpgraders(false);
+ if (deployedContract && assetManagerRoleData && assetManagerRoleCountData) {
+ const _assetManagerRoleMembers: string[] = [];
- if (deployedContract && assetManagerRoleData && assetManagerRoleCountData) {
- const _assetManagerRoleMembers: string[] = [];
+ for (let i = 0; i < Number(assetManagerRoleCountData?.data); i++) {
+ const assetManagerRoleMember = await deployedContract.getRoleMember(assetManagerRoleData?.data, BigInt(i));
- for (let i = 0; i < Number(assetManagerRoleCountData?.data); i++) {
- const assetManagerRoleMember = await deployedContract.getRoleMember(assetManagerRoleData?.data, BigInt(i));
+ _assetManagerRoleMembers.push(assetManagerRoleMember);
+ }
- _assetManagerRoleMembers.push(assetManagerRoleMember);
+ setAssetManagerRoleMembers(_assetManagerRoleMembers);
}
+ setFetchingAssetManagers(false);
- setAssetManagerRoleMembers(_assetManagerRoleMembers);
+ setAllDataFetched(true);
+ } catch (error) {
+ setAllDataFetched(true);
}
- setFetchingAssetManagers(false);
-
- setAllDataFetched(true);
};
fetchData();
- }, [userAccount, deployedContractAddress, simpleUsdcContractData, vaultBalance, custodianBalance, ...dependencies]);
+ }, [
+ userAccount,
+ deployedContractAddress,
+ chain?.rpcUrls?.default?.http,
+ simpleUsdcContractData,
+ vaultBalance,
+ custodianBalance,
+ deployedContractAbi,
+ refetchAdminRole,
+ refetchAdminRoleCount,
+ refetchAssetManagerRole,
+ refetchAssetManagerRoleCount,
+ refetchCustodianBalance,
+ refetchOperatorRole,
+ refetchOperatorRoleCount,
+ refetchUpgraderRole,
+ refetchUpgraderRoleCount,
+ refetchUserHasAdminRole,
+ refetchUserHasAssetManagerRole,
+ refetchUserHasOperatorRole,
+ refetchUserHasUpgraderRole,
+ refetchVaultBalance,
+ ...dependencies,
+ ]);
return {
allDataFetched,
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchContractData.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchContractData.ts
index 983cefdd2..cd8d5ed36 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchContractData.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchContractData.ts
@@ -102,12 +102,16 @@ export const useFetchContractData = ({
// Fetch data and set state
useEffect(() => {
const fetchData = async () => {
+ if (!deployedContractAddress || !deployedContractAbi) {
+ return;
+ }
+
const currentPeriodData = await refetchCurrentPeriod();
const _currentPeriod = Number(currentPeriodData?.data);
setCurrentPeriod(_currentPeriod);
const assetAmountData = await refetchAssetAmount();
- const assetAmountBigInt = BigInt(assetAmountData?.data as bigint);
+ const assetAmountBigInt = BigInt(typeof assetAmountData?.data === "number" || typeof assetAmountData?.data === "string" ? assetAmountData.data : 0);
setAssetAmount(ethers.formatUnits(assetAmountBigInt, 6));
const startTimeData = await refetchStartTime();
@@ -137,7 +141,7 @@ export const useFetchContractData = ({
if (scale > 0) {
setPreviousReducedRate(Number((previousReducedRateData?.data as PeriodRate)?.interestRate) / scale);
setCurrentReducedRate(Number((currentReducedRateData?.data as PeriodRate)?.interestRate) / scale);
- if (_currentPeriod < Number(currentReducedRateData?.data?.effectiveFromPeriod)) {
+ if (_currentPeriod < Number((currentReducedRateData?.data as PeriodRate)?.effectiveFromPeriod)) {
setEffectiveReducedRate("0");
} else {
setEffectiveReducedRate("1");
@@ -148,6 +152,7 @@ export const useFetchContractData = ({
fetchData();
}, [
deployedContractAddress,
+ deployedContractAbi,
simpleUsdcContractData,
refetchCurrentPeriod,
refetchAssetAmount,
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchDepositPools.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchDepositPools.ts
index c13bf81cb..c8105d5a8 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchDepositPools.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchDepositPools.ts
@@ -1,39 +1,63 @@
import { useEffect, useState } from "react";
import { OwnedNft } from "alchemy-sdk";
import { ethers } from "ethers";
+import { useChainId, useChains } from "wagmi";
import { DepositPool } from "~~/types/vault";
import { notification } from "~~/utils/scaffold-eth";
import { getNFTsForOwner } from "~~/utils/vault/web3";
export const useFetchDepositPools = ({
- chainId,
address,
deployedContractAddress,
deployedContractAbi,
currentPeriod,
refetch,
}: {
- chainId: number;
address: string;
deployedContractAddress: string;
deployedContractAbi: any;
currentPeriod: number;
refetch: any;
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
+ const [depositPoolsFetched, setDepositPoolsFetched] = useState(!!address);
+
const [userDepositIds, setUserDepositIds] = useState([]);
+ const [fetchedWithAlchemy, setFetchedWithAlchemy] = useState(false);
+ const [existingUserDepositIds, setExistingUserDepositIds] = useState([]);
const [pools, setPools] = useState([]);
useEffect(() => {
+ setDepositPoolsFetched(false);
+
async function fetchUserDepositIds() {
- if (!address || !deployedContractAddress) return;
+ if (!chainId || !address || !deployedContractAddress) {
+ setDepositPoolsFetched(true);
+ return;
+ }
try {
- const _userDepositIds = await getNFTsForOwner(chainId, address, deployedContractAddress);
+ const { nfts: _userDepositIds, fetchedWithAlchemy: _fetchedWithAlchemy } = await getNFTsForOwner(
+ chainId,
+ address,
+ deployedContractAddress,
+ );
+ setFetchedWithAlchemy(_fetchedWithAlchemy);
+
if (_userDepositIds?.length > 0) {
- setUserDepositIds(_userDepositIds as OwnedNft[]);
+ if (_fetchedWithAlchemy) {
+ setExistingUserDepositIds(_userDepositIds as OwnedNft[]);
+ } else {
+ setUserDepositIds(_userDepositIds as OwnedNft[]);
+ }
}
} catch (error) {
console.error("Error fetching user deposit IDs:", error);
+ setDepositPoolsFetched(true);
}
}
@@ -41,33 +65,90 @@ export const useFetchDepositPools = ({
}, [address, chainId, deployedContractAddress]);
useEffect(() => {
+ setDepositPoolsFetched(false);
+
+ async function fetchExistingUserDepositIds() {
+ if (!deployedContractAddress || !deployedContractAbi || fetchedWithAlchemy || !currentPeriod) {
+ setDepositPoolsFetched(true);
+ return;
+ }
+
+ try {
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
+ const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
+
+ const existingUserDepositIds: OwnedNft[] = [];
+
+ for (let i = 0; i <= currentPeriod; i++) {
+ const depositId = userDepositIds[i];
+
+ const exists = await contract.exists(depositId?.tokenId);
+ if (exists) {
+ existingUserDepositIds.push(depositId);
+ }
+ }
+
+ if (existingUserDepositIds?.length > 0) {
+ setExistingUserDepositIds(existingUserDepositIds as OwnedNft[]);
+ }
+ } catch (error) {
+ console.error("Error fetching existing user deposit IDs:", error);
+ setDepositPoolsFetched(true);
+ }
+ }
+
+ fetchExistingUserDepositIds();
+ }, [
+ currentPeriod,
+ userDepositIds,
+ fetchedWithAlchemy,
+ chainId,
+ deployedContractAddress,
+ deployedContractAbi,
+ chain?.rpcUrls?.default?.http,
+ ]);
+
+ useEffect(() => {
+ setDepositPoolsFetched(false);
+
async function fetchBalances() {
- if (!deployedContractAddress || !deployedContractAbi || !address || userDepositIds.length === 0) return;
+ if (
+ !chain?.rpcUrls?.default?.http ||
+ !deployedContractAddress ||
+ !deployedContractAbi ||
+ !address ||
+ existingUserDepositIds.length === 0 ||
+ !chain?.rpcUrls?.default?.http[0]
+ ) {
+ setDepositPoolsFetched(true);
+ return;
+ }
- const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545");
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
- const balancePromises = userDepositIds.map(async depositId => {
+ const balancePromises = existingUserDepositIds.map(async depositId => {
try {
- const balanceBigInt = await contract.balanceOf(address, depositId);
+ const balanceBigInt = await contract.balanceOf(address, depositId?.tokenId);
+
const balance = ethers.formatUnits(balanceBigInt, 6);
- const sharesBigInt = await contract.sharesAtPeriod(address, depositId);
+ const sharesBigInt = await contract.sharesAtPeriod(address, depositId?.tokenId);
const shares = ethers.formatUnits(sharesBigInt, 6);
const unlockRequestAmountBigInt = await contract.unlockRequestAmountByDepositPeriod(
address,
- Number(depositId),
+ Number(depositId?.tokenId),
);
const unlockRequestAmount = ethers.formatUnits(unlockRequestAmountBigInt, 6);
- if (balanceBigInt > 0 && Number(depositId) <= currentPeriod) {
+ if (balanceBigInt > 0 && Number(depositId?.tokenId) <= currentPeriod) {
let yieldAmount = 0;
try {
yieldAmount =
- currentPeriod > Number(depositId)
- ? await contract.calcYield(balanceBigInt, depositId, currentPeriod)
+ currentPeriod > Number(depositId?.tokenId)
+ ? await contract.calcYield(balanceBigInt, depositId?.tokenId, currentPeriod)
: 0;
} catch (error) {
yieldAmount = 0;
@@ -78,7 +159,7 @@ export const useFetchDepositPools = ({
}
return {
- depositId,
+ depositId: depositId?.tokenId,
balance,
shares,
unlockRequestAmount,
@@ -90,7 +171,7 @@ export const useFetchDepositPools = ({
} catch (error) {
console.error(
"Error fetching balance for depositId:",
- depositId,
+ depositId?.tokenId,
" and currentPeriod: ",
currentPeriod,
error,
@@ -103,12 +184,47 @@ export const useFetchDepositPools = ({
const validPools = results.filter(pool => pool !== null) as DepositPool[];
setPools(validPools);
+ setDepositPoolsFetched(true);
}
- if (userDepositIds.length > 0 && deployedContractAddress) {
- fetchBalances();
+ if (fetchedWithAlchemy) {
+ if (existingUserDepositIds.length > 0 && deployedContractAddress) {
+ try {
+ fetchBalances();
+ } catch (error) {
+ console.log(error);
+ setDepositPoolsFetched(true);
+ }
+ } else {
+ setDepositPoolsFetched(true);
+ }
+ } else {
+ if (userDepositIds.length > 0 && deployedContractAddress) {
+ try {
+ fetchBalances();
+ } catch (error) {
+ console.log(error);
+ setDepositPoolsFetched(true);
+ }
+ } else {
+ setDepositPoolsFetched(true);
+ }
}
- }, [refetch, userDepositIds, deployedContractAddress, deployedContractAbi, address, currentPeriod]);
-
- return { pools };
+ }, [
+ address,
+ refetch,
+ deployedContractAddress,
+ deployedContractAbi,
+ currentPeriod,
+ fetchedWithAlchemy,
+ userDepositIds,
+ existingUserDepositIds,
+ chain?.rpcUrls?.default?.http,
+ ]);
+
+ if (!address) {
+ return { pools: [], depositPoolsFetched: true };
+ }
+
+ return { pools, depositPoolsFetched };
};
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchRedeemRequests.ts b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchRedeemRequests.ts
index 259215cf5..4a9f3e320 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchRedeemRequests.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/custom/useFetchRedeemRequests.ts
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { ethers } from "ethers";
+import { useChainId, useChains } from "wagmi";
import { RedeemRequest } from "~~/types/vault";
import { notification } from "~~/utils/scaffold-eth";
@@ -16,34 +17,49 @@ export const useFetchRedeemRequests = ({
currentPeriod: number;
refetch: any;
}) => {
+ const chains = useChains();
+ const chainId = useChainId();
+
+ const chain = chains?.filter(_chain => _chain?.id === chainId)[0];
+
const [redeemRequests, setRedeemRequests] = useState([]);
+ const [redeemRequestsFetched, setRedeemRequestsFetched] = useState(!!address);
useEffect(() => {
+ setRedeemRequestsFetched(false);
+
async function getRequestIds() {
- if (!address || !deployedContractAddress || !deployedContractAbi) return;
+ if (!address || !deployedContractAddress || !deployedContractAbi || !chain) {
+ setRedeemRequestsFetched(true);
+ return;
+ }
- const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545");
+ const provider = new ethers.JsonRpcProvider(chain?.rpcUrls?.default?.http[0]);
const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider);
const requests: RedeemRequest[] = [];
for (let i = 0; i <= currentPeriod + 1; i++) {
- // Fetch the deposit periods and amounts (shares) from unlockRequests
+ try {
+ await createRedeemRequest(i);
+ } catch (error) {
+ console.error(`Failed to fetch unlock request for period ${i}:`, error);
+ }
+ }
+
+ async function createRedeemRequest(i: number) {
const [depositPeriods, shares] = await contract.unlockRequests(address, i);
- // If there are no shares, skip this request
- if (shares.length === 0) continue;
+ if (shares.length === 0) return;
let totalShareAmount = BigInt(0);
let totalAssetAmount = BigInt(0);
- // Loop through each deposit period and calculate the corresponding asset value
for (let index = 0; index < depositPeriods.length; index++) {
const depositPeriod = depositPeriods[index];
const share = shares[index];
totalShareAmount += ethers.toBigInt(share);
- // only yield if the deposit was in the past
if (currentPeriod > depositPeriod) {
try {
const assetAmount = await contract.convertToAssetsForDepositPeriod(share, depositPeriod);
@@ -54,7 +70,7 @@ export const useFetchRedeemRequests = ({
);
}
} else {
- totalAssetAmount += ethers.toBigInt(share); // yield is 0, assets = shares
+ totalAssetAmount += ethers.toBigInt(share);
}
}
@@ -69,10 +85,11 @@ export const useFetchRedeemRequests = ({
}
setRedeemRequests(requests);
+ setRedeemRequestsFetched(true);
}
getRequestIds();
- }, [address, deployedContractAddress, deployedContractAbi, currentPeriod, refetch]);
+ }, [address, deployedContractAddress, deployedContractAbi, currentPeriod, chain, refetch]);
- return { redeemRequests };
+ return { redeemRequests, redeemRequestsFetched };
};
diff --git a/spikes/spike-liquid-stone/packages/nextjs/hooks/scaffold-eth/useTransactor.tsx b/spikes/spike-liquid-stone/packages/nextjs/hooks/scaffold-eth/useTransactor.tsx
index 0d14e1420..c14b0b4d7 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/hooks/scaffold-eth/useTransactor.tsx
+++ b/spikes/spike-liquid-stone/packages/nextjs/hooks/scaffold-eth/useTransactor.tsx
@@ -71,6 +71,10 @@ export const useTransactor = (_walletClient?: WalletClient): TransactionFunc =>
,
);
+ if (!publicClient) {
+ return;
+ }
+
const transactionReceipt = await publicClient.waitForTransactionReceipt({
hash: transactionHash,
confirmations: options?.blockConfirmations,
diff --git a/spikes/spike-liquid-stone/packages/nextjs/scaffold.config.ts b/spikes/spike-liquid-stone/packages/nextjs/scaffold.config.ts
index 7870ecc8e..016271ff6 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/scaffold.config.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/scaffold.config.ts
@@ -1,4 +1,42 @@
+import { Chain } from "viem";
import * as chains from "viem/chains";
+import * as dotenv from 'dotenv';
+
+dotenv.config();
+
+console.log(`*** Config loaded, network is ${process.env.NEXT_PUBLIC_NETWORK}`);
+
+const plume: Chain = {
+ id: 98865,
+ name: "Plume",
+ nativeCurrency: { name: "Plume Ethereum", symbol: "ETH", decimals: 18 },
+ rpcUrls: {
+ default: { http: ["https://phoenix-rpc.plumenetwork.xyz/" + process.env.NEXT_PUBLIC_PLUME_API_KEY] },
+ public: { http: ["https://phoenix-rpc.plumenetwork.xyz/" + process.env.NEXT_PUBLIC_PLUME_API_KEY] },
+ },
+ formatters: undefined,
+ fees: undefined,
+ blockExplorers: {
+ default: { name: "Plume Explorer", url: "https://phoenix-explorer.plumenetwork.xyz" },
+ },
+ testnet: true,
+} as Chain;
+
+const plumeTestnet: Chain = {
+ id: 98864,
+ name: "Plume Testnet",
+ nativeCurrency: { name: "Plume Ethereum", symbol: "ETH", decimals: 18 },
+ rpcUrls: {
+ default: { http: ["https://test-rpc.plumenetwork.xyz"] },
+ public: { http: ["https://test-rpc.plumenetwork.xyz"] },
+ },
+ formatters: undefined,
+ fees: undefined,
+ blockExplorers: {
+ default: { name: "Plume Explorer", url: "https://test-explorer.plumenetwork.xyz" },
+ },
+ testnet: true,
+} as Chain;
export type ScaffoldConfig = {
targetNetworks: readonly chains.Chain[];
@@ -10,7 +48,7 @@ export type ScaffoldConfig = {
const scaffoldConfig = {
// The networks on which your DApp is live
- targetNetworks: [chains.foundry],
+ targetNetworks: [chains.arbitrumSepolia, plumeTestnet, plume, chains.foundry],
// The interval at which your front-end polls the RPC servers for new data
// it has no effect if you only target the local network (default is 4000)
diff --git a/spikes/spike-liquid-stone/packages/nextjs/types/vault.ts b/spikes/spike-liquid-stone/packages/nextjs/types/vault.ts
index d087085a6..54653dccb 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/types/vault.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/types/vault.ts
@@ -1,12 +1,10 @@
-import { OwnedNft } from "alchemy-sdk";
-
export type PeriodRate = {
interestRate: bigint;
effectiveFromPeriod: bigint;
};
export type DepositPool = {
- depositId: OwnedNft;
+ depositId: string;
balance: string;
shares: string;
unlockRequestAmount: string;
diff --git a/spikes/spike-liquid-stone/packages/nextjs/utils/vault/web3.ts b/spikes/spike-liquid-stone/packages/nextjs/utils/vault/web3.ts
index 8331302f1..62a9745f8 100644
--- a/spikes/spike-liquid-stone/packages/nextjs/utils/vault/web3.ts
+++ b/spikes/spike-liquid-stone/packages/nextjs/utils/vault/web3.ts
@@ -1,12 +1,32 @@
-import { Alchemy, AlchemySettings, Network } from "alchemy-sdk";
+import { Alchemy, AlchemySettings, Network, OwnedNft } from "alchemy-sdk";
-export async function getNFTsForOwner(chain: number, owner: string, contract: string) {
- if (chain === 31337) {
- return Array.from({ length: 1001 }, (_, index) => index);
+export async function getNFTsForOwner(chainId: number, owner: string, contract: string) {
+ if ([31337, 98864].includes(chainId)) {
+ return {
+ nfts: Array.from(
+ { length: 101 },
+ (_, index) =>
+ ({
+ tokenId: index.toString(),
+ } as OwnedNft),
+ ),
+ fetchedWithAlchemy: false,
+ };
} else {
+ let chain: Network;
+
+ switch (chainId) {
+ case 421614:
+ chain = Network.ARB_SEPOLIA;
+ break;
+ default:
+ chain = Network.ARB_SEPOLIA;
+ break;
+ }
+
const settings: AlchemySettings = {
- apiKey: process.env.ALCHEMY_API_KEY,
- network: Network.ETH_MAINNET,
+ apiKey: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY,
+ network: chain,
};
const alchemy = new Alchemy(settings);
@@ -15,9 +35,17 @@ export async function getNFTsForOwner(chain: number, owner: string, contract: st
contractAddresses: [contract],
});
- const erc1155Tokens = nfts.ownedNfts.filter(nft => nft.tokenType === "ERC1155");
+ const filteredNfts = nfts.ownedNfts.filter(nft => nft.tokenType === "ERC1155");
+
+ const erc1155Tokens: OwnedNft[] = filteredNfts.map(
+ token =>
+ ({
+ tokenId: token?.tokenId,
+ balance: token?.balance,
+ } as OwnedNft),
+ );
- return erc1155Tokens;
+ return { nfts: erc1155Tokens, fetchedWithAlchemy: true };
}
}
diff --git a/spikes/spike-liquid-stone/yarn.lock b/spikes/spike-liquid-stone/yarn.lock
index 52b6f7e3e..eca08c048 100644
--- a/spikes/spike-liquid-stone/yarn.lock
+++ b/spikes/spike-liquid-stone/yarn.lock
@@ -2001,6 +2001,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/dotenv@npm:^8.2.3":
+ version: 8.2.3
+ resolution: "@types/dotenv@npm:8.2.3"
+ dependencies:
+ dotenv: "*"
+ checksum: 3075371abbcaf231593c57297338c9b731a45b3dd519ab96c1708a2f7fa345fcf885daf1ba3e39d84942873706fb1aa656b560cde9ccb62ce598ceb563502470
+ languageName: node
+ linkType: hard
+
"@types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.9":
version: 7.0.15
resolution: "@types/json-schema@npm:7.0.15"
@@ -4446,6 +4455,13 @@ __metadata:
languageName: node
linkType: hard
+"dotenv@npm:*, dotenv@npm:^16.4.5":
+ version: 16.4.5
+ resolution: "dotenv@npm:16.4.5"
+ checksum: 301a12c3d44fd49888b74eb9ccf9f07a1f5df43f489e7fcb89647a2edcd84c42d6bc349dc8df099cd18f07c35c7b04685c1a4f3e6a6a9e6b30f8d48c15b7f49c
+ languageName: node
+ linkType: hard
+
"duplexify@npm:^4.1.2":
version: 4.1.3
resolution: "duplexify@npm:4.1.3"
@@ -9396,7 +9412,9 @@ __metadata:
resolution: "se-2@workspace:."
dependencies:
"@openzeppelin/contracts-upgradeable": ^5.0.2
+ "@types/dotenv": ^8.2.3
alchemy-sdk: ^3.4.2
+ dotenv: ^16.4.5
ethers: ^6.13.3
husky: ^9.1.4
lint-staged: ^15.2.9