import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * EventGrid Topic
 *
 * Uses Azure REST API version 2025-02-15. In version 2.x of the Azure Native provider, it used API version 2022-06-15.
 *
 * Other available API versions: 2022-06-15, 2023-06-01-preview, 2023-12-15-preview, 2024-06-01-preview, 2024-12-15-preview, 2025-04-01-preview. These can be accessed by generating a local SDK package using the CLI command `pulumi package add azure-native eventgrid [ApiVersion]`. See the [version guide](../../../version-guide/#accessing-any-api-version-via-local-packages) for details.
 */
export declare class Topic extends pulumi.CustomResource {
    /**
     * Get an existing Topic resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): Topic;
    /**
     * Returns true if the given object is an instance of Topic.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Topic;
    /**
     * The Azure API version of the resource.
     */
    readonly azureApiVersion: pulumi.Output<string>;
    /**
     * Data Residency Boundary of the resource.
     */
    readonly dataResidencyBoundary: pulumi.Output<string | undefined>;
    /**
     * This boolean is used to enable or disable local auth. Default value is false. When the property is set to true, only AAD token will be used to authenticate if user is allowed to publish to the topic.
     */
    readonly disableLocalAuth: pulumi.Output<boolean | undefined>;
    /**
     * Endpoint for the topic.
     */
    readonly endpoint: pulumi.Output<string>;
    /**
     * Event Type Information for the user topic. This information is provided by the publisher and can be used by the
     * subscriber to view different types of events that are published.
     */
    readonly eventTypeInfo: pulumi.Output<outputs.eventgrid.EventTypeInfoResponse | undefined>;
    /**
     * Identity information for the resource.
     */
    readonly identity: pulumi.Output<outputs.eventgrid.IdentityInfoResponse | undefined>;
    /**
     * This can be used to restrict traffic from specific IPs instead of all IPs. Note: These are considered only if PublicNetworkAccess is enabled.
     */
    readonly inboundIpRules: pulumi.Output<outputs.eventgrid.InboundIpRuleResponse[] | undefined>;
    /**
     * This determines the format that Event Grid should expect for incoming events published to the topic.
     */
    readonly inputSchema: pulumi.Output<string | undefined>;
    /**
     * This enables publishing using custom event schemas. An InputSchemaMapping can be specified to map various properties of a source schema to various required properties of the EventGridEvent schema.
     */
    readonly inputSchemaMapping: pulumi.Output<outputs.eventgrid.JsonInputSchemaMappingResponse | undefined>;
    /**
     * Location of the resource.
     */
    readonly location: pulumi.Output<string>;
    /**
     * Metric resource id for the topic.
     */
    readonly metricResourceId: pulumi.Output<string>;
    /**
     * Minimum TLS version of the publisher allowed to publish to this topic
     */
    readonly minimumTlsVersionAllowed: pulumi.Output<string | undefined>;
    /**
     * Name of the resource.
     */
    readonly name: pulumi.Output<string>;
    /**
     * List of private endpoint connections.
     */
    readonly privateEndpointConnections: pulumi.Output<outputs.eventgrid.PrivateEndpointConnectionResponse[]>;
    /**
     * Provisioning state of the topic.
     */
    readonly provisioningState: pulumi.Output<string>;
    /**
     * This determines if traffic is allowed over public network. By default it is enabled.
     * You can further restrict to specific IPs by configuring <seealso cref="P:Microsoft.Azure.Events.ResourceProvider.Common.Contracts.TopicProperties.InboundIpRules" />
     */
    readonly publicNetworkAccess: pulumi.Output<string | undefined>;
    /**
     * The system metadata relating to the Event Grid resource.
     */
    readonly systemData: pulumi.Output<outputs.eventgrid.SystemDataResponse>;
    /**
     * Tags of the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Type of the resource.
     */
    readonly type: pulumi.Output<string>;
    /**
     * Create a Topic resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: TopicArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a Topic resource.
 */
export interface TopicArgs {
    /**
     * Data Residency Boundary of the resource.
     */
    dataResidencyBoundary?: pulumi.Input<string | enums.eventgrid.DataResidencyBoundary>;
    /**
     * This boolean is used to enable or disable local auth. Default value is false. When the property is set to true, only AAD token will be used to authenticate if user is allowed to publish to the topic.
     */
    disableLocalAuth?: pulumi.Input<boolean>;
    /**
     * Event Type Information for the user topic. This information is provided by the publisher and can be used by the
     * subscriber to view different types of events that are published.
     */
    eventTypeInfo?: pulumi.Input<inputs.eventgrid.EventTypeInfoArgs>;
    /**
     * Identity information for the resource.
     */
    identity?: pulumi.Input<inputs.eventgrid.IdentityInfoArgs>;
    /**
     * This can be used to restrict traffic from specific IPs instead of all IPs. Note: These are considered only if PublicNetworkAccess is enabled.
     */
    inboundIpRules?: pulumi.Input<pulumi.Input<inputs.eventgrid.InboundIpRuleArgs>[]>;
    /**
     * This determines the format that Event Grid should expect for incoming events published to the topic.
     */
    inputSchema?: pulumi.Input<string | enums.eventgrid.InputSchema>;
    /**
     * This enables publishing using custom event schemas. An InputSchemaMapping can be specified to map various properties of a source schema to various required properties of the EventGridEvent schema.
     */
    inputSchemaMapping?: pulumi.Input<inputs.eventgrid.JsonInputSchemaMappingArgs>;
    /**
     * Location of the resource.
     */
    location?: pulumi.Input<string>;
    /**
     * Minimum TLS version of the publisher allowed to publish to this topic
     */
    minimumTlsVersionAllowed?: pulumi.Input<string | enums.eventgrid.TlsVersion>;
    /**
     * This determines if traffic is allowed over public network. By default it is enabled.
     * You can further restrict to specific IPs by configuring <seealso cref="P:Microsoft.Azure.Events.ResourceProvider.Common.Contracts.TopicProperties.InboundIpRules" />
     */
    publicNetworkAccess?: pulumi.Input<string | enums.eventgrid.PublicNetworkAccess>;
    /**
     * The name of the resource group within the user's subscription.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * Tags of the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Name of the topic.
     */
    topicName?: pulumi.Input<string>;
}
