/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.management.eventgrid.v2019_01_01;

import rx.Observable;
import com.microsoft.azure.management.eventgrid.v2019_01_01.implementation.TopicTypesInner;
import com.microsoft.azure.arm.model.HasInner;

/**
 * Type representing TopicTypes.
 */
public interface TopicTypes extends HasInner<TopicTypesInner> {
    /**
     * List event types.
     * List event types for a topic type.
     *
     * @param topicTypeName Name of the topic type
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Observable<EventType> listEventTypesAsync(String topicTypeName);

    /**
     * Get a topic type.
     * Get information about a topic type.
     *
     * @param topicTypeName Name of the topic type
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Observable<TopicTypeInfo> getAsync(String topicTypeName);

    /**
     * List topic types.
     * List all registered topic types.
     *
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Observable<TopicTypeInfo> listAsync();

}
