| // Copyright 2019 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. | 
 |  | 
 | library fuchsia.migration; | 
 | using fuchsia.io; | 
 |  | 
 | enum MigrationStatus { | 
 |     UNKNOWN = 1; | 
 |     IN_PROGRESS = 2; | 
 |     COMPLETE = 3; | 
 |     ENCOUNTERED_ERROR = 4; | 
 | }; | 
 |  | 
 | /// Table for state of migration operations. | 
 | table MigrationState { | 
 |     1: MigrationStatus status; | 
 |     2: uint8 progress_percentage; | 
 | }; | 
 |  | 
 | protocol Provider { | 
 |     Get(request<fuchsia.io.Directory> dir); | 
 |     Processed(); | 
 | }; | 
 |  | 
 | [Discoverable] | 
 | protocol CastProvider { | 
 |     compose Provider; | 
 | }; | 
 |  | 
 | [Discoverable] | 
 | protocol DisplayProvider { | 
 |     compose Provider; | 
 | }; | 
 |  | 
 | [Discoverable] | 
 | protocol KronkProvider { | 
 |     compose Provider; | 
 | }; | 
 |  | 
 | [Discoverable] | 
 | protocol UltrasoundProvider { | 
 |     compose Provider; | 
 | }; | 
 |  | 
 | /// Protocol to watch for changes when a migration of system data is started. | 
 | [Discoverable] | 
 | protocol State { | 
 |     /// Hanging get. Will return immediatedly on first call per connection | 
 |     /// and then on change after that. | 
 |     Watch() -> (MigrationState state); | 
 | }; |