// Copyright 2019 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 SERVICES_DEVICE_PUBLIC_MOJOM_USB_MANAGER_CLIENT_MOJOM_FORWARD_H_
#define SERVICES_DEVICE_PUBLIC_MOJOM_USB_MANAGER_CLIENT_MOJOM_FORWARD_H_





#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h"



#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif


namespace device {
namespace mojom {
class UsbDeviceManagerClient;

// @generated_from: device.mojom.UsbDeviceManagerClient
using UsbDeviceManagerClientPtr = mojo::InterfacePtr<UsbDeviceManagerClient>;
using UsbDeviceManagerClientPtrInfo = mojo::InterfacePtrInfo<UsbDeviceManagerClient>;
using ThreadSafeUsbDeviceManagerClientPtr =
    mojo::ThreadSafeInterfacePtr<UsbDeviceManagerClient>;

// @generated_from: device.mojom.UsbDeviceManagerClient
using UsbDeviceManagerClientRequest = mojo::InterfaceRequest<UsbDeviceManagerClient>;

// @generated_from: device.mojom.UsbDeviceManagerClient
using UsbDeviceManagerClientAssociatedPtr =
    mojo::AssociatedInterfacePtr<UsbDeviceManagerClient>;
using ThreadSafeUsbDeviceManagerClientAssociatedPtr =
    mojo::ThreadSafeAssociatedInterfacePtr<UsbDeviceManagerClient>;
using UsbDeviceManagerClientAssociatedPtrInfo =
    mojo::AssociatedInterfacePtrInfo<UsbDeviceManagerClient>;

// @generated_from: device.mojom.UsbDeviceManagerClient
using UsbDeviceManagerClientAssociatedRequest =
    mojo::AssociatedInterfaceRequest<UsbDeviceManagerClient>;




}  // namespace mojom
}  // namespace device

#endif  // SERVICES_DEVICE_PUBLIC_MOJOM_USB_MANAGER_CLIENT_MOJOM_FORWARD_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMTI5MywgImJlZ2luIjogMTI2OCwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5Vc2JEZXZpY2VNYW5hZ2VyQ2xp
ZW50In19LCB7ImVuZCI6IDE2NjgsICJiZWdpbiI6IDE2NDYsICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
Im1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uVXNiRGV2aWNlTWFuYWdlckNsaWVu
dCJ9fV0sICJ0eXBlIjogImt5dGhlMCJ9
*/