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

// [START bind_imports]
using fuchsia.acpi;
using examples.gizmo.bind;
// [END bind_imports]
// [START fidl_imports]
using fuchsia.device.fs;
using examples.gizmo;
// [END fidl_imports]

// [START bind_properties]
fuchsia.BIND_PROTOCOL == fuchsia.acpi.BIND_PROTOCOL.DEVICE;
fuchsia.acpi.hid == "GOOG";
examples.gizmo.bind.ModelName == "GIZMO3000";
examples.gizmo.bind.GizmoType == examples.gizmo.bind.GizmoType.MEM_64K;
// [END bind_properties]
// [START fidl_properties]
fuchsia.device.fs.Exporter == fuchsia.device.fs.Exporter.ZirconTransport;
examples.gizmo.TestingProtocol == examples.gizmo.TestingProtocol.ZirconTransport;
// [END fidl_properties]
