import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as WANsAPI from 'cloudflaredev/resources/magic-transit/sites/wans';
import { SinglePage } from 'cloudflaredev/pagination';
export declare class WANs extends APIResource {
    /**
     * Creates a new WAN.
     */
    create(siteId: string, params: WANCreateParams, options?: Core.RequestOptions): Core.APIPromise<WANCreateResponse>;
    /**
     * Update a specific WAN.
     */
    update(siteId: string, wanId: string, params: WANUpdateParams, options?: Core.RequestOptions): Core.APIPromise<WAN>;
    /**
     * Lists WANs associated with an account and site.
     */
    list(siteId: string, params: WANListParams, options?: Core.RequestOptions): Core.PagePromise<WANsSinglePage, WAN>;
    /**
     * Remove a specific WAN.
     */
    delete(siteId: string, wanId: string, params: WANDeleteParams, options?: Core.RequestOptions): Core.APIPromise<WAN>;
    /**
     * Get a specific WAN.
     */
    get(siteId: string, wanId: string, params: WANGetParams, options?: Core.RequestOptions): Core.APIPromise<WAN>;
}
export declare class WANsSinglePage extends SinglePage<WAN> {
}
export interface WAN {
    /**
     * Identifier
     */
    id?: string;
    name?: string;
    physport?: number;
    /**
     * Priority of WAN for traffic loadbalancing.
     */
    priority?: number;
    /**
     * Identifier
     */
    site_id?: string;
    /**
     * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
     * availability mode.
     */
    static_addressing?: WANStaticAddressing;
    /**
     * VLAN port number.
     */
    vlan_tag?: number;
}
/**
 * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
 * availability mode.
 */
export interface WANStaticAddressing {
    /**
     * A valid CIDR notation representing an IP range.
     */
    address: string;
    /**
     * A valid IPv4 address.
     */
    gateway_address: string;
    /**
     * A valid CIDR notation representing an IP range.
     */
    secondary_address?: string;
}
/**
 * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
 * availability mode.
 */
export interface WANStaticAddressingParam {
    /**
     * A valid CIDR notation representing an IP range.
     */
    address: string;
    /**
     * A valid IPv4 address.
     */
    gateway_address: string;
    /**
     * A valid CIDR notation representing an IP range.
     */
    secondary_address?: string;
}
export type WANCreateResponse = Array<WAN>;
export interface WANCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    physport: number;
    /**
     * Body param: VLAN port number.
     */
    vlan_tag: number;
    /**
     * Body param:
     */
    name?: string;
    /**
     * Body param:
     */
    priority?: number;
    /**
     * Body param: (optional) if omitted, use DHCP. Submit secondary_address when site
     * is in high availability mode.
     */
    static_addressing?: WANStaticAddressingParam;
}
export interface WANUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    name?: string;
    /**
     * Body param:
     */
    physport?: number;
    /**
     * Body param:
     */
    priority?: number;
    /**
     * Body param: (optional) if omitted, use DHCP. Submit secondary_address when site
     * is in high availability mode.
     */
    static_addressing?: WANStaticAddressingParam;
    /**
     * Body param: VLAN port number.
     */
    vlan_tag?: number;
}
export interface WANListParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface WANDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface WANGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace WANs {
    export import WAN = WANsAPI.WAN;
    export import WANStaticAddressing = WANsAPI.WANStaticAddressing;
    export import WANCreateResponse = WANsAPI.WANCreateResponse;
    export import WANsSinglePage = WANsAPI.WANsSinglePage;
    export import WANCreateParams = WANsAPI.WANCreateParams;
    export import WANUpdateParams = WANsAPI.WANUpdateParams;
    export import WANListParams = WANsAPI.WANListParams;
    export import WANDeleteParams = WANsAPI.WANDeleteParams;
    export import WANGetParams = WANsAPI.WANGetParams;
}
//# sourceMappingURL=wans.d.ts.map