// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.providerhub.models;

import com.azure.resourcemanager.providerhub.fluent.models.ResourceProviderManifestInner;
import java.util.List;

/** An immutable client-side representation of ResourceProviderManifest. */
public interface ResourceProviderManifest {
    /**
     * Gets the providerAuthentication property: The providerAuthentication property.
     *
     * @return the providerAuthentication value.
     */
    ResourceProviderManifestProviderAuthentication providerAuthentication();

    /**
     * Gets the providerAuthorizations property: The providerAuthorizations property.
     *
     * @return the providerAuthorizations value.
     */
    List<ResourceProviderAuthorization> providerAuthorizations();

    /**
     * Gets the namespace property: The namespace property.
     *
     * @return the namespace value.
     */
    String namespace();

    /**
     * Gets the providerVersion property: The providerVersion property.
     *
     * @return the providerVersion value.
     */
    String providerVersion();

    /**
     * Gets the providerType property: The providerType property.
     *
     * @return the providerType value.
     */
    ResourceProviderType providerType();

    /**
     * Gets the requiredFeatures property: The requiredFeatures property.
     *
     * @return the requiredFeatures value.
     */
    List<String> requiredFeatures();

    /**
     * Gets the featuresRule property: The featuresRule property.
     *
     * @return the featuresRule value.
     */
    ResourceProviderManifestFeaturesRule featuresRule();

    /**
     * Gets the requestHeaderOptions property: The requestHeaderOptions property.
     *
     * @return the requestHeaderOptions value.
     */
    ResourceProviderManifestRequestHeaderOptions requestHeaderOptions();

    /**
     * Gets the resourceTypes property: The resourceTypes property.
     *
     * @return the resourceTypes value.
     */
    List<ResourceType> resourceTypes();

    /**
     * Gets the management property: The management property.
     *
     * @return the management value.
     */
    ResourceProviderManifestManagement management();

    /**
     * Gets the capabilities property: The capabilities property.
     *
     * @return the capabilities value.
     */
    List<ResourceProviderCapabilities> capabilities();

    /**
     * Gets the metadata property: Anything.
     *
     * @return the metadata value.
     */
    Object metadata();

    /**
     * Gets the globalNotificationEndpoints property: The globalNotificationEndpoints property.
     *
     * @return the globalNotificationEndpoints value.
     */
    List<ResourceProviderEndpoint> globalNotificationEndpoints();

    /**
     * Gets the reRegisterSubscriptionMetadata property: The reRegisterSubscriptionMetadata property.
     *
     * @return the reRegisterSubscriptionMetadata value.
     */
    ResourceProviderManifestReRegisterSubscriptionMetadata reRegisterSubscriptionMetadata();

    /**
     * Gets the inner com.azure.resourcemanager.providerhub.fluent.models.ResourceProviderManifestInner object.
     *
     * @return the inner object.
     */
    ResourceProviderManifestInner innerModel();
}
