import { Expressionable, ResourceDefinition } from 'arm-templator'; export interface BgpSession { maxPrefixesAdvertisedV4?: Expressionable; maxPrefixesAdvertisedV6?: Expressionable; md5AuthenticationKey?: Expressionable; peerSessionIPv4Address?: Expressionable; peerSessionIPv6Address?: Expressionable; sessionPrefixV4?: Expressionable; sessionPrefixV6?: Expressionable; } export interface ContactDetail { email?: Expressionable; phone?: Expressionable; role?: Expressionable<('Noc' | 'Policy' | 'Technical' | 'Service' | 'Other')>; } export interface DirectConnection { bandwidthInMbps?: Expressionable; bgpSession?: Expressionable; connectionIdentifier?: Expressionable; peeringDBFacilityId?: Expressionable; sessionAddressProvider?: Expressionable<('Microsoft' | 'Peer')>; useForPeeringService?: Expressionable; } export interface ExchangeConnection { bgpSession?: Expressionable; connectionIdentifier?: Expressionable; peeringDBFacilityId?: Expressionable; } export interface PeerAsnProperties { peerAsn?: Expressionable; peerContactDetail?: Expressionable; peerName?: Expressionable; validationState?: Expressionable<('None' | 'Pending' | 'Approved' | 'Failed')>; } export interface PeeringProperties { direct?: Expressionable; exchange?: Expressionable; peeringLocation?: Expressionable; } export interface PeeringPropertiesDirect { connections?: Expressionable; directPeeringType?: Expressionable<('Edge' | 'Transit' | 'Cdn' | 'Internal' | 'Ix' | 'IxRs')>; peerAsn?: Expressionable; } export interface PeeringPropertiesExchange { connections?: Expressionable; peerAsn?: Expressionable; } export interface PeeringRegisteredAsnProperties { asn?: Expressionable; } export interface PeeringRegisteredPrefixProperties { prefix?: Expressionable; } export interface PeeringServicePrefixProperties { peeringServicePrefixKey?: Expressionable; prefix?: Expressionable; } export interface PeeringServiceProperties { peeringServiceLocation?: Expressionable; peeringServiceProvider?: Expressionable; } export interface PeeringServiceSku { name?: Expressionable; } export interface PeeringSku { family?: Expressionable<('Direct' | 'Exchange')>; name?: Expressionable; size?: Expressionable<('Free' | 'Metered' | 'Unlimited')>; tier?: Expressionable<('Basic' | 'Premium')>; } export interface SubResource { id?: Expressionable; } export declare namespace peerings { interface AdditionalProps { sku: Expressionable; kind: Expressionable<('Direct' | 'Exchange')>; tags?: Expressionable; } type PeeringsResource = ResourceDefinition; function create(name: Expressionable, properties: PeeringProperties, location: Expressionable, sku: Expressionable, kind: Expressionable<('Direct' | 'Exchange')>, tags?: Expressionable): PeeringsResource; } export declare namespace peeringServices { interface AdditionalProps { sku?: Expressionable; tags?: Expressionable; } type PeeringServicesResource = ResourceDefinition; function create(name: Expressionable, properties: PeeringServiceProperties, location: Expressionable, sku?: Expressionable, tags?: Expressionable): PeeringServicesResource; } export declare namespace peeringServices { namespace prefixes { type PrefixesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: PeeringServicePrefixProperties): PrefixesResource; } } export declare namespace peerings { namespace registeredAsns { type RegisteredAsnsResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: PeeringRegisteredAsnProperties): RegisteredAsnsResource; } } export declare namespace peerings { namespace registeredPrefixes { type RegisteredPrefixesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: PeeringRegisteredPrefixProperties): RegisteredPrefixesResource; } }