// SPDX-License-Identifier: AGPL-3.0
pragma solidity >=0.5.0;

interface IERC20Droppable {
    /// @notice When called, the token must mint some amount of new tokens
    /// to `recipient` based on `oldTokenAmount`, and return the amount of
    /// new tokens minted as `newTokenAmount`.
    /// It does not need to make checks about whether old tokens have been locked.
    /// It MUST check that the caller is indeed the Lockdrop contract.
    function drop(uint256 oldTokenAmount, address recipient) external returns (uint256 newTokenAmount);
}
[{"inputs":[{"internalType":"contract ERC20","name":"oldToken_","type":"address"},{"internalType":"contract IERC20Droppable","name":"newToken_","type":"address"},{"internalType":"uint64","name":"unlockTimestamp_","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Error_AfterUnlockTimestamp","type":"error"},{"inputs":[],"name":"Error_BeforeUnlockTimestamp","type":"error"},{"inputs":[{"internalType":"uint256","name":"oldTokenAmount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"lock","outputs":[{"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedOldTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newToken","outputs":[{"internalType":"contract IERC20Droppable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"unlock","outputs":[{"internalType":"uint256","name":"oldTokenAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]