// Copyright 2022 The Fuchsia 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 SRC_BIND_LIBRARY_CHILD_DRIVER_H_
#define SRC_BIND_LIBRARY_CHILD_DRIVER_H_

#include <lib/driver/component/cpp/driver_cpp.h>

namespace child_driver {

class ChildDriver : public driver::DriverBase {
 public:
  ChildDriver(driver::DriverStartArgs start_args, fdf::UnownedDispatcher driver_dispatcher)
      : driver::DriverBase("child-driver", std::move(start_args), std::move(driver_dispatcher)) {}
  virtual ~ChildDriver() = default;

  zx::result<> Start() override;
};

}  // namespace child_driver

#endif  // SRC_BIND_LIBRARY_CHILD_DRIVER_H_
