# Copyright 2017 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.

import("//build/dart/dart_library.gni")

dart_library("settings_protos") {
  disable_analysis = true
  package_name = "settings_protos"

  sources = [
    "audio.pb.dart",
    "audio.pbenum.dart",
    "audio.pbjson.dart",
    "audio.pbserver.dart",
    "setting_store.dart",
    "setting_store_factory.dart",
    "setting_store_factory_legacy.dart",
    "setting_store_legacy.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.devicesettings",
    "//third_party/dart-pkg/pub/protobuf",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/lib/app/dart",
  ]
}
