// 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_
