// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

abstract contract ERC20 {
  function transfer(address _recipient, uint256 _value) public virtual returns (bool success);
}


contract LPLock {
    address public _owner;
    mapping(address => uint256) public depositedTime;
    mapping(address => uint256) public depositedTimeExpiration;

    constructor() {
        _owner = msg.sender;
    }

  function StartTime() public {
        require(msg.sender == _owner, "Ownable: caller is not the owner");
        require(depositedTime[msg.sender] == 0, "Time Already Started");
        depositedTime[msg.sender] = block.timestamp;
        depositedTimeExpiration[msg.sender] = block.timestamp + 12 weeks;
  }

  function WithdrawLP(ERC20 token, address recipient, uint256 value) public {
        require(msg.sender == _owner, "Ownable: caller is not the owner");
        require(depositedTimeExpiration[msg.sender] <= block.timestamp, "Can't Withdraw: Not Enough time passed!");
        token.transfer(recipient, value);
  }


}