// Copyright 2018 The Chromium OS 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 SHILL_SHIMS_TASK_PROXY_H_
#define SHILL_SHIMS_TASK_PROXY_H_


#include <base/macros.h>
#include <shill/dbus-proxies.h>

#include <map>
#include <string>

namespace shill {

namespace shims {

class TaskProxy {
 public:
  TaskProxy(scoped_refptr<dbus::Bus> bus,
            const std::string& path,
            const std::string& service);
  ~TaskProxy();

  void Notify(const std::string& reason,
              const std::map<std::string, std::string>& dict);

  bool GetSecret(std::string* username, std::string* password);

 private:
  org::chromium::flimflam::TaskProxy proxy_;

  DISALLOW_COPY_AND_ASSIGN(TaskProxy);
};

}  // namespace shims

}  // namespace shill

#endif  // SHILL_SHIMS_TASK_PROXY_H_
