{
  "_format": "hh-sol-artifact-1",
  "contractName": "PendleRedeemProxyBase",
  "sourceName": "contracts/misc/PendleRedeemProxyBase.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "yts",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "ots",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "markets",
              "type": "address[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "enum LmRedeemMode",
                  "name": "mode",
                  "type": "uint8"
                }
              ],
              "internalType": "struct LmRedeemRequest[]",
              "name": "lmV1",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "enum LmRedeemMode",
                  "name": "mode",
                  "type": "uint8"
                }
              ],
              "internalType": "struct LmRedeemRequest[]",
              "name": "lmV2",
              "type": "tuple[]"
            },
            {
              "internalType": "address[]",
              "name": "tokensDistribution",
              "type": "address[]"
            }
          ],
          "internalType": "struct Args",
          "name": "args",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "ytInterests",
          "type": "uint256[]"
        },
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenC",
                  "type": "address"
                }
              ],
              "internalType": "struct TrioTokens",
              "name": "tokens",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "uintA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "uintB",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "uintC",
                  "type": "uint256"
                }
              ],
              "internalType": "struct TrioUints",
              "name": "uints",
              "type": "tuple"
            }
          ],
          "internalType": "struct TrioTokenUints[]",
          "name": "otRewards",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "marketInterests",
          "type": "uint256[]"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "rewards",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "interests",
              "type": "tuple"
            }
          ],
          "internalType": "struct LmRedeemResult[]",
          "name": "lmV1Returns",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "rewards",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "interests",
              "type": "tuple"
            }
          ],
          "internalType": "struct LmRedeemResult[]",
          "name": "lmV2Returns",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenDistReturns",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "enum LmRedeemMode",
              "name": "mode",
              "type": "uint8"
            }
          ],
          "internalType": "struct LmRedeemRequest[]",
          "name": "lm",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemLmV1",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "rewards",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "interests",
              "type": "tuple"
            }
          ],
          "internalType": "struct LmRedeemResult[]",
          "name": "results",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "enum LmRedeemMode",
              "name": "mode",
              "type": "uint8"
            }
          ],
          "internalType": "struct LmRedeemRequest[]",
          "name": "lm",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemLmV2",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "rewards",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenA",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenB",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct PairTokens",
                  "name": "tokens",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "uintA",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "uintB",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct PairUints",
                  "name": "uints",
                  "type": "tuple"
                }
              ],
              "internalType": "struct PairTokenUints",
              "name": "interests",
              "type": "tuple"
            }
          ],
          "internalType": "struct LmRedeemResult[]",
          "name": "results",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "markets",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemMarkets",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "marketInterests",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "ots",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemOts",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenC",
                  "type": "address"
                }
              ],
              "internalType": "struct TrioTokens",
              "name": "tokens",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "uintA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "uintB",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "uintC",
                  "type": "uint256"
                }
              ],
              "internalType": "struct TrioUints",
              "name": "uints",
              "type": "tuple"
            }
          ],
          "internalType": "struct TrioTokenUints[]",
          "name": "otRewards",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemTokenDist",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "results",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "yts",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemYts",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "ytInterests",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "router",
      "outputs": [
        {
          "internalType": "contract IPendleRouter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenDistContract",
      "outputs": [
        {
          "internalType": "contract IPendleRetroactiveDistribution",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
