/**
 * The ExternalSubnet model module.
 * @module Ntnx/ExternalSubnet
 * @version 4.0.1
 * @class ExternalSubnet
 *
 * @param { string } subnetReference External subnet reference.
 */
export default class ExternalSubnet {
    /**
     * Constructs a <code>ExternalSubnet</code> from a plain JavaScript object, optionally creating a new instance.
     * Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
     * @param {Object} data The plain JavaScript object bearing properties of interest.
     * @param {module:Ntnx/ExternalSubnet} obj Optional instance to populate.
     * @param callFromChild {Boolean} Flag to recognise calling instance
     * @return {module:Ntnx/ExternalSubnet} The populated <code>ExternalSubnet</code> instance.
     */
    static constructFromObject(data: any, obj?: any, callFromChild?: boolean): any;
    /**
    * Converts a given snake_case string to camelCase.
    * @param {string} snakeStr - The input string in snake_case format.
    * @returns {string} - The converted string in camelCase format.
    */
    static snakeToCamel(snakeStr: string): string;
    /**
     * Constructs a new <code>ExternalSubnet</code>.
     * Information about the external subnet, SNAT IPs and the gateway nodes.
     * @alias module:Ntnx/ExternalSubnet
     *
     * @param { string } subnetReference External subnet reference.
    */
    constructor(subnetReference: string);
    subnetReference: string;
    $objectType: string;
    /** @type {object<string, any>} */
    $reserved: object;
    /** @type {object<string, any>} */
    $unknownFields: object;
    /**
     * Returns External subnet reference.
     * @return {string}
     */
    getSubnetReference(): string;
    /**
     * Sets External subnet reference.
     * @param {string} subnetReference External subnet reference.
     */
    setSubnetReference(subnetReference: string): void;
    /**
     * Returns List of IP Addresses used for SNAT, if NAT is enabled on the external subnet. If NAT is not enabled, this specifies the IP address of the VPC port connected to the external gateway.
     * @return {IPAddress[]}
     */
    getExternalIps(): IPAddress[];
    /**
     * Sets List of IP Addresses used for SNAT, if NAT is enabled on the external subnet. If NAT is not enabled, this specifies the IP address of the VPC port connected to the external gateway.
     * @param {IPAddress[]} externalIps List of IP Addresses used for SNAT, if NAT is enabled on the external subnet. If NAT is not enabled, this specifies the IP address of the VPC port connected to the external gateway.
     */
    setExternalIps(externalIps: IPAddress[]): void;
    externalIps: IPAddress[];
    /**
     * Returns List of gateway nodes that can be used for external connectivity.
     * @return {string[]}
     */
    getGatewayNodes(): string[];
    /**
     * Sets List of gateway nodes that can be used for external connectivity.
     * @param {string[]} gatewayNodes List of gateway nodes that can be used for external connectivity.
     */
    setGatewayNodes(gatewayNodes: string[]): void;
    gatewayNodes: string[];
    /**
     * Returns Currently active gateway nodes that are used for external connectivity.
     * @return {GatewayNodeReference[]}
     */
    getActiveGatewayNodes(): GatewayNodeReference[];
    /**
     * Sets Currently active gateway nodes that are used for external connectivity.
     * @param {GatewayNodeReference[]} activeGatewayNodes Currently active gateway nodes that are used for external connectivity.
     */
    setActiveGatewayNodes(activeGatewayNodes: GatewayNodeReference[]): void;
    activeGatewayNodes: GatewayNodeReference[];
    /**
     * Returns Maximum number of active gateway nodes for the VPC external subnet association.
     * minimum: 1
     * maximum: 4
     * @return {Number}
     */
    getActiveGatewayCount(): number;
    /**
     * Sets Maximum number of active gateway nodes for the VPC external subnet association.
     * @param {Number} activeGatewayCount Maximum number of active gateway nodes for the VPC external subnet association.
     */
    setActiveGatewayCount(activeGatewayCount: number): void;
    activeGatewayCount: number;
    get$Reserved(): any;
    get$ObjectType(): string;
    get$UnknownFields(): any;
    toJson(forMutation: any): {
        $reserved: any;
        $objectType: string;
        $unknownFields: any;
        activeGatewayCount?: number;
        activeGatewayNodes?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            nodeIpAddress?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                ipv6?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                ipv4?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
            };
            nodeId?: string;
        }[];
        gatewayNodes?: string[];
        externalIps?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            ipv6?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                prefixLength?: number;
                value?: string;
            };
            ipv4?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                prefixLength?: number;
                value?: string;
            };
        }[];
        subnetReference?: string;
    };
    validate(scope: any, properties: any, ...args: any[]): Promise<any>;
    validateProperty(scope: any, property: any): ValidationError;
    #private;
}
import IPAddress from "../../../common/v1/config/IPAddress";
import GatewayNodeReference from "./GatewayNodeReference";
import ValidationError from "../../../validation/ValidationError";
