// 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_CALLBACKS_H_
#define SHILL_CALLBACKS_H_

#include <map>
#include <string>
#include <vector>

#include <base/callback.h>

#include "shill/accessor_interface.h"
#include "shill/key_value_store.h"

namespace shill {

class Error;
// Convenient typedefs for some commonly used callbacks.
using ResultCallback = base::Callback<void(const Error&)>;
using ResultBoolCallback = base::Callback<void(const Error&, bool)>;
using ResultStringCallback =
    base::Callback<void(const Error&, const std::string&)>;
using EnabledStateChangedCallback = base::Callback<void(const Error&)>;
using KeyValueStoreCallback =
    base::Callback<void(const KeyValueStore&, const Error&)>;
using KeyValueStoresCallback =
    base::Callback<void(const std::vector<KeyValueStore>&, const Error&)>;
using RpcIdentifierCallback =
    base::Callback<void(const std::string&, const Error&)>;
using StringCallback = base::Callback<void(const std::string&, const Error&)>;
using ActivationStateSignalCallback =
    base::Callback<void(uint32_t, uint32_t, const KeyValueStore&)>;
using ResultStringmapsCallback =
    base::Callback<void(const Stringmaps&, const Error&)>;
using BrilloAnyCallback =
    base::Callback<void(const std::map<uint32_t, brillo::Any>&,
                        const Error&)>;

}  // namespace shill

#endif  // SHILL_CALLBACKS_H_
