function lockup(address recipient, uint256 amount, uint256 lockedUntil)
    onlyOwner
    notNull(recipient)
    notZero(amount)
    nonReentrant
    external
  {
    
    
    ensureTokensAvailable(amount);

    
    TokenPromise storage promise = createPromise(recipient, amount, lockedUntil);

    
    if (recipient == owner) {
      doConfirm(promise);
    }
  }