// Copyright 2020 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.component;

/// Standard error codes for component framework protocols.
@available(replaced=20)
type Error = strict enum {
    /// Component manager encountered an otherwise unspecified error while
    /// performing the operation.
    INTERNAL = 1;
    /// At least one argument had an invalid format.
    INVALID_ARGUMENTS = 2;
    /// The feature is not yet supported.
    UNSUPPORTED = 3;
    /// The caller did not have permission to perform the specified operation,
    /// or one of the handles provided to the call had insufficient rights.
    ACCESS_DENIED = 4;
    /// The component instance was not found.
    INSTANCE_NOT_FOUND = 5;
    /// The component instance already exists.
    INSTANCE_ALREADY_EXISTS = 6;
    /// The component instance could not be started.
    INSTANCE_CANNOT_START = 7;
    /// Failed to resolve the component's declaration.
    INSTANCE_CANNOT_RESOLVE = 8;
    /// The component collection was not found.
    COLLECTION_NOT_FOUND = 9;
    /// There were insufficient resources to perform the operation.
    RESOURCE_UNAVAILABLE = 10;
    /// The component instance died unexpectedly.
    INSTANCE_DIED = 11;
    /// The requested resource does not exist.
    RESOURCE_NOT_FOUND = 12;
    /// Failed to unresolve the component.
    INSTANCE_CANNOT_UNRESOLVE = 13;
    /// The component instance has already been started.
    @available(added=14)
    INSTANCE_ALREADY_STARTED = 14;
};

/// Standard error codes for component framework protocols.
@available(added=20)
type Error = flexible enum {
    /// Component manager encountered an otherwise unspecified error while
    /// performing the operation.
    INTERNAL = 1;
    /// At least one argument had an invalid format.
    INVALID_ARGUMENTS = 2;
    /// The feature is not yet supported.
    UNSUPPORTED = 3;
    /// The caller did not have permission to perform the specified operation,
    /// or one of the handles provided to the call had insufficient rights.
    ACCESS_DENIED = 4;
    /// The component instance was not found.
    INSTANCE_NOT_FOUND = 5;
    /// The component instance already exists.
    INSTANCE_ALREADY_EXISTS = 6;
    /// The component instance could not be started.
    INSTANCE_CANNOT_START = 7;
    /// Failed to resolve the component's declaration.
    INSTANCE_CANNOT_RESOLVE = 8;
    /// The component collection was not found.
    COLLECTION_NOT_FOUND = 9;
    /// There were insufficient resources to perform the operation.
    RESOURCE_UNAVAILABLE = 10;
    /// The component instance died unexpectedly.
    INSTANCE_DIED = 11;
    /// The requested resource does not exist.
    RESOURCE_NOT_FOUND = 12;
    /// Failed to unresolve the component.
    INSTANCE_CANNOT_UNRESOLVE = 13;
    /// The component instance has already been started.
    INSTANCE_ALREADY_STARTED = 14;
};
