{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "sourceStrategy",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "acceptMigration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "approvedToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approvedTokensCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "currency",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "collectYield",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "yieldCurrency",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "valueCurrency",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "collectYieldValueBorrowable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "yield",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowablePer10k",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "disapprovedTokensCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "harvestPartially",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destination",
          "type": "address"
        }
      ],
      "name": "migrateAllTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "targetStrategy",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "yieldToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "yieldRecipient",
          "type": "address"
        }
      ],
      "name": "migrateStrategy",
      "outputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "targetAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "yieldRecipient",
          "type": "address"
        }
      ],
      "name": "registerDepositFor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "assetToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "assetTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "assetAmount",
          "type": "uint256"
        }
      ],
      "name": "registerMintTranche",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "strategyName",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        }
      ],
      "name": "trancheToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        }
      ],
      "name": "trancheTokenID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "viewAPF",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "viewAllApprovedTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "viewAllDisapprovedTokenStrategyMetadata",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "strategy",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "APF",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateral",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowablePer10k",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valuePer1e18",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "strategyName",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "tvl",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "harvestBalance2Tally",
              "type": "uint256"
            },
            {
              "internalType": "enum IStrategy.YieldType",
              "name": "yieldType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "stabilityFee",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingStrategy",
              "type": "address"
            }
          ],
          "internalType": "struct IStrategy.StrategyMetadata[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "viewAllDisapprovedTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "viewAllStrategyMetadata",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "strategy",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "APF",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateral",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowablePer10k",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valuePer1e18",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "strategyName",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "tvl",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "harvestBalance2Tally",
              "type": "uint256"
            },
            {
              "internalType": "enum IStrategy.YieldType",
              "name": "yieldType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "stabilityFee",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingStrategy",
              "type": "address"
            }
          ],
          "internalType": "struct IStrategy.StrategyMetadata[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "viewBorrowable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "viewEstimatedHarvestable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "viewStrategyMetadata",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "strategy",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "APF",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateral",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowablePer10k",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valuePer1e18",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "strategyName",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "tvl",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "harvestBalance2Tally",
              "type": "uint256"
            },
            {
              "internalType": "enum IStrategy.YieldType",
              "name": "yieldType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "stabilityFee",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingStrategy",
              "type": "address"
            }
          ],
          "internalType": "struct IStrategy.StrategyMetadata",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        }
      ],
      "name": "viewTargetCollateralAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "viewUnderlyingStrategy",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "currency",
          "type": "address"
        }
      ],
      "name": "viewValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "valueCurrency",
          "type": "address"
        }
      ],
      "name": "viewValueBorrowable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "currency",
          "type": "address"
        }
      ],
      "name": "viewYield",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "yieldCurrency",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "valueCurrency",
          "type": "address"
        }
      ],
      "name": "viewYieldValueBorrowable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "yield",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowablePer10k",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "trancheId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "yieldToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "yieldCurrency",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "yieldType",
      "outputs": [
        {
          "internalType": "enum IStrategy.YieldType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ]
}
