import { Expressionable, ResourceDefinition } from 'arm-templator'; export interface TopicProperties { } export interface EventSubscriptionProperties { topic?: Expressionable; provisioningState?: Expressionable<('Creating' | 'Updating' | 'Deleting' | 'Succeeded' | 'Canceled' | 'Failed' | 'AwaitingManualAction')>; destination: Expressionable; filter?: Expressionable; labels?: Expressionable; expirationTimeUtc?: Expressionable; retryPolicy?: Expressionable; deadLetterDestination?: Expressionable; } export interface WebHookEventSubscriptionDestination { endpointType: Expressionable<('WebHook')>; properties: Expressionable; } export interface WebHookEventSubscriptionDestinationProperties { endpointUrl?: Expressionable; endpointBaseUrl?: Expressionable; } export interface EventHubEventSubscriptionDestination { endpointType: Expressionable<('EventHub')>; properties: Expressionable; } export interface EventHubEventSubscriptionDestinationProperties { resourceId?: Expressionable; } export interface StorageQueueEventSubscriptionDestination { endpointType: Expressionable<('StorageQueue')>; properties: Expressionable; } export interface StorageQueueEventSubscriptionDestinationProperties { resourceId?: Expressionable; queueName?: Expressionable; } export interface HybridConnectionEventSubscriptionDestination { endpointType: Expressionable<('HybridConnection')>; properties: Expressionable; } export interface HybridConnectionEventSubscriptionDestinationProperties { resourceId?: Expressionable; } export interface ServiceBusQueueEventSubscriptionDestination { endpointType: Expressionable<('ServiceBusQueue')>; properties: Expressionable; } export interface ServiceBusQueueEventSubscriptionDestinationProperties { resourceId?: Expressionable; } export interface EventSubscriptionFilter { subjectBeginsWith?: Expressionable; subjectEndsWith?: Expressionable; includedEventTypes?: Expressionable; isSubjectCaseSensitive?: Expressionable; advancedFilters?: Expressionable; } export interface RetryPolicy { maxDeliveryAttempts?: Expressionable; eventTimeToLiveInMinutes?: Expressionable; } export interface DomainProperties { } export interface NumberInAdvancedFilter { values?: Expressionable; } export interface NumberNotInAdvancedFilter { values?: Expressionable; } export interface NumberLessThanAdvancedFilter { value?: Expressionable; } export interface NumberGreaterThanAdvancedFilter { value?: Expressionable; } export interface NumberLessThanOrEqualsAdvancedFilter { value?: Expressionable; } export interface NumberGreaterThanOrEqualsAdvancedFilter { value?: Expressionable; } export interface BoolEqualsAdvancedFilter { value?: Expressionable; } export interface StringInAdvancedFilter { values?: Expressionable; } export interface StringNotInAdvancedFilter { values?: Expressionable; } export interface StringBeginsWithAdvancedFilter { values?: Expressionable; } export interface StringEndsWithAdvancedFilter { values?: Expressionable; } export interface StringContainsAdvancedFilter { values?: Expressionable; } export interface AdvancedFilter { operatorType: Expressionable<('NumberIn' | 'NumberNotIn' | 'NumberLessThan' | 'NumberGreaterThan' | 'NumberLessThanOrEquals' | 'NumberGreaterThanOrEquals' | 'BoolEquals' | 'StringIn' | 'StringNotIn' | 'StringBeginsWith' | 'StringEndsWith' | 'StringContains')>; key?: Expressionable; } export interface StorageBlobDeadLetterDestination { properties?: Expressionable; } export interface StorageBlobDeadLetterDestinationProperties { resourceId?: Expressionable; blobContainerName?: Expressionable; } export interface DeadLetterDestination { endpointType: Expressionable<('StorageBlob')>; } export declare namespace topics { type TopicsResource = ResourceDefinition; function create(name: Expressionable, properties: TopicProperties, location: Expressionable): TopicsResource; } export declare namespace eventSubscriptions { type EventSubscriptionsResource = ResourceDefinition; function create(name: Expressionable, properties: EventSubscriptionProperties): EventSubscriptionsResource; } export declare namespace domains { type DomainsResource = ResourceDefinition; function create(name: Expressionable, properties: DomainProperties, location: Expressionable): DomainsResource; } export declare namespace domains { namespace topics { type TopicsResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: any): TopicsResource; } }