import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as WansAPI from 'cloudflare/resources/magic-transit/sites/wans';
export declare class Wans extends APIResource {
    /**
     * Creates a new WAN.
     */
    create(accountIdentifier: string, siteIdentifier: string, body: WanCreateParams, options?: Core.RequestOptions): Core.APIPromise<WanCreateResponse>;
    /**
     * Update a specific WAN.
     */
    update(accountIdentifier: string, siteIdentifier: string, wanIdentifier: string, body: WanUpdateParams, options?: Core.RequestOptions): Core.APIPromise<WanUpdateResponse>;
    /**
     * Lists WANs associated with an account and site.
     */
    list(accountIdentifier: string, siteIdentifier: string, options?: Core.RequestOptions): Core.APIPromise<WanListResponse>;
    /**
     * Remove a specific WAN.
     */
    delete(accountIdentifier: string, siteIdentifier: string, wanIdentifier: string, options?: Core.RequestOptions): Core.APIPromise<WanDeleteResponse>;
    /**
     * Get a specific WAN.
     */
    get(accountIdentifier: string, siteIdentifier: string, wanIdentifier: string, options?: Core.RequestOptions): Core.APIPromise<WanGetResponse>;
}
export interface WanCreateResponse {
    wans?: Array<WanCreateResponse.Wan>;
}
export declare namespace WanCreateResponse {
    interface Wan {
        /**
         * Identifier
         */
        id?: string;
        description?: 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?: Wan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanUpdateResponse {
    wan?: WanUpdateResponse.Wan;
}
export declare namespace WanUpdateResponse {
    interface Wan {
        /**
         * Identifier
         */
        id?: string;
        description?: 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?: Wan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanListResponse {
    wans?: Array<WanListResponse.Wan>;
}
export declare namespace WanListResponse {
    interface Wan {
        /**
         * Identifier
         */
        id?: string;
        description?: 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?: Wan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanDeleteResponse {
    deleted?: boolean;
    deleted_wan?: WanDeleteResponse.DeletedWan;
}
export declare namespace WanDeleteResponse {
    interface DeletedWan {
        /**
         * Identifier
         */
        id?: string;
        description?: 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?: DeletedWan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace DeletedWan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanGetResponse {
    wan?: WanGetResponse.Wan;
}
export declare namespace WanGetResponse {
    interface Wan {
        /**
         * Identifier
         */
        id?: string;
        description?: 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?: Wan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanCreateParams {
    wan?: WanCreateParams.Wan;
}
export declare namespace WanCreateParams {
    interface Wan {
        physport: number;
        /**
         * VLAN port number.
         */
        vlan_tag: number;
        description?: string;
        priority?: number;
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        static_addressing?: Wan.StaticAddressing;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 interface WanUpdateParams {
    wan?: WanUpdateParams.Wan;
}
export declare namespace WanUpdateParams {
    interface Wan {
        description?: string;
        physport?: number;
        priority?: number;
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        static_addressing?: Wan.StaticAddressing;
        /**
         * VLAN port number.
         */
        vlan_tag?: number;
    }
    namespace Wan {
        /**
         * (optional) if omitted, use DHCP. Submit secondary_address when site is in high
         * availability mode.
         */
        interface StaticAddressing {
            /**
             * 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 declare namespace Wans {
    export import WanCreateResponse = WansAPI.WanCreateResponse;
    export import WanUpdateResponse = WansAPI.WanUpdateResponse;
    export import WanListResponse = WansAPI.WanListResponse;
    export import WanDeleteResponse = WansAPI.WanDeleteResponse;
    export import WanGetResponse = WansAPI.WanGetResponse;
    export import WanCreateParams = WansAPI.WanCreateParams;
    export import WanUpdateParams = WansAPI.WanUpdateParams;
}
//# sourceMappingURL=wans.d.ts.map