// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PROXIMITY_AUTH_MESSENGER_OBSERVER_H
#define COMPONENTS_PROXIMITY_AUTH_MESSENGER_OBSERVER_H

#include <string>

#include "base/memory/scoped_ptr.h"

namespace proximity_auth {

struct RemoteStatusUpdate;

// An interface for observing events that happen on a Messenger.
class MessengerObserver {
 public:
  // Called when sending an "Easy Unlock used"  local event message completes.
  // |success| is true iff the event was sent successfully.
  virtual void OnUnlockEventSent(bool success){};

  // Called when a RemoteStatusUpdate is received.
  virtual void OnRemoteStatusUpdate(const RemoteStatusUpdate& status_update){};

  // Called when a response to a 'decrypt_request' is received, with the
  // |decrypted_bytes| that were returned by the remote device. An empty string
  // indicates failure.
  virtual void OnDecryptResponse(const std::string& decrypted_bytes){};

  // Called when a response to a 'unlock_request' is received.
  // |success| is true iff the request was made successfully.
  virtual void OnUnlockResponse(bool success){};

  // Called when the underlying secure channel disconnects.
  virtual void OnDisconnected(){};
};

}  // namespace proximity_auth

#endif  // COMPONENTS_PROXIMITY_AUTH_MESSENGER_OBSERVER_H
