/**
 * The Subnet model module.
 * @module Ntnx/Subnet
 * @version 4.0.1
 * @class Subnet
 * @extends NetworkingBaseModel
 */
export default class Subnet extends NetworkingBaseModel {
    /**
     * Returns Name of the subnet.
     * @return {string}
     */
    getName(): string;
    /**
     * Sets Name of the subnet.
     * @param {string} name Name of the subnet.
     */
    setName(name: string): void;
    name: string;
    /**
     * Returns Description of the subnet.
     * @return {string}
     */
    getDescription(): string;
    /**
     * Sets Description of the subnet.
     * @param {string} description Description of the subnet.
     */
    setDescription(description: string): void;
    description: string;
    /**
     * @return {SubnetType}
     */
    getSubnetType(): SubnetType;
    /**
     * @param {SubnetType} subnetType
     */
    setSubnetType(subnetType: SubnetType): void;
    subnetType: string;
    /**
     * Returns For VLAN subnet, this field represents VLAN Id, valid range is from 0 to 4095; For overlay subnet, this field represents 24-bit VNI, this field is read-only.
     * minimum: 0
     * maximum: 16777215
     * @return {Number}
     */
    getNetworkId(): number;
    /**
     * Sets For VLAN subnet, this field represents VLAN Id, valid range is from 0 to 4095; For overlay subnet, this field represents 24-bit VNI, this field is read-only.
     * @param {Number} networkId For VLAN subnet, this field represents VLAN Id, valid range is from 0 to 4095; For overlay subnet, this field represents 24-bit VNI, this field is read-only.
     */
    setNetworkId(networkId: number): void;
    networkId: number;
    /**
     * @return {DhcpOptions}
     */
    getDhcpOptions(): DhcpOptions;
    /**
     * @param {DhcpOptions} dhcpOptions
     */
    setDhcpOptions(dhcpOptions: DhcpOptions): void;
    dhcpOptions: DhcpOptions;
    /**
     * Returns IP configuration for the subnet.
     * @return {IPConfig[]}
     */
    getIpConfig(): IPConfig[];
    /**
     * Sets IP configuration for the subnet.
     * @param {IPConfig[]} ipConfig IP configuration for the subnet.
     */
    setIpConfig(ipConfig: IPConfig[]): void;
    ipConfig: IPConfig[];
    /**
     * Returns UUID of the cluster this subnet belongs to.
     * @return {string}
     */
    getClusterReference(): string;
    /**
     * Sets UUID of the cluster this subnet belongs to.
     * @param {string} clusterReference UUID of the cluster this subnet belongs to.
     */
    setClusterReference(clusterReference: string): void;
    clusterReference: string;
    /**
     * Returns UUID of the virtual switch this subnet belongs to (type VLAN only).
     * @return {string}
     */
    getVirtualSwitchReference(): string;
    /**
     * Sets UUID of the virtual switch this subnet belongs to (type VLAN only).
     * @param {string} virtualSwitchReference UUID of the virtual switch this subnet belongs to (type VLAN only).
     */
    setVirtualSwitchReference(virtualSwitchReference: string): void;
    virtualSwitchReference: string;
    /**
     * Returns UUID of Virtual Private Cloud this subnet belongs to (type Overlay only).
     * @return {string}
     */
    getVpcReference(): string;
    /**
     * Sets UUID of Virtual Private Cloud this subnet belongs to (type Overlay only).
     * @param {string} vpcReference UUID of Virtual Private Cloud this subnet belongs to (type Overlay only).
     */
    setVpcReference(vpcReference: string): void;
    vpcReference: string;
    /**
     * Returns Indicates whether NAT must be enabled for VPCs attached to the subnet. This is supported only for external subnets. NAT is enabled by default on external subnets.
     * @return {boolean}
     */
    getIsNatEnabled(): boolean;
    /**
     * Sets Indicates whether NAT must be enabled for VPCs attached to the subnet. This is supported only for external subnets. NAT is enabled by default on external subnets.
     * @param {boolean} isNatEnabled Indicates whether NAT must be enabled for VPCs attached to the subnet. This is supported only for external subnets. NAT is enabled by default on external subnets.
     */
    setIsNatEnabled(isNatEnabled: boolean): void;
    isNatEnabled: boolean;
    /**
     * Returns Indicates whether the subnet is used for external connectivity.
     * @return {boolean}
     */
    getIsExternal(): boolean;
    /**
     * Sets Indicates whether the subnet is used for external connectivity.
     * @param {boolean} isExternal Indicates whether the subnet is used for external connectivity.
     */
    setIsExternal(isExternal: boolean): void;
    isExternal: boolean;
    /**
     * Returns List of IPs that are excluded while allocating IP addresses to VM ports.
     * @return {IPAddress[]}
     */
    getReservedIpAddresses(): IPAddress[];
    /**
     * Sets List of IPs that are excluded while allocating IP addresses to VM ports.
     * @param {IPAddress[]} reservedIpAddresses List of IPs that are excluded while allocating IP addresses to VM ports.
     */
    setReservedIpAddresses(reservedIpAddresses: IPAddress[]): void;
    reservedIpAddresses: IPAddress[];
    /**
     * Returns List of IPs, which are a subset from the reserved IP address list, that must be advertised to the SDN gateway.
     * @return {IPAddress[]}
     */
    getDynamicIpAddresses(): IPAddress[];
    /**
     * Sets List of IPs, which are a subset from the reserved IP address list, that must be advertised to the SDN gateway.
     * @param {IPAddress[]} dynamicIpAddresses List of IPs, which are a subset from the reserved IP address list, that must be advertised to the SDN gateway.
     */
    setDynamicIpAddresses(dynamicIpAddresses: IPAddress[]): void;
    dynamicIpAddresses: IPAddress[];
    /**
     * Returns UUID of the Network function chain entity that this subnet belongs to (type VLAN only).
     * @return {string}
     */
    getNetworkFunctionChainReference(): string;
    /**
     * Sets UUID of the Network function chain entity that this subnet belongs to (type VLAN only).
     * @param {string} networkFunctionChainReference UUID of the Network function chain entity that this subnet belongs to (type VLAN only).
     */
    setNetworkFunctionChainReference(networkFunctionChainReference: string): void;
    networkFunctionChainReference: string;
    /**
     * Returns Name of the bridge on the host for the subnet.
     * @return {string}
     */
    getBridgeName(): string;
    /**
     * Sets Name of the bridge on the host for the subnet.
     * @param {string} bridgeName Name of the bridge on the host for the subnet.
     */
    setBridgeName(bridgeName: string): void;
    bridgeName: string;
    /**
     * Returns Indicates whether the subnet is used for advanced networking.
     * @return {boolean}
     */
    getIsAdvancedNetworking(): boolean;
    /**
     * Sets Indicates whether the subnet is used for advanced networking.
     * @param {boolean} isAdvancedNetworking Indicates whether the subnet is used for advanced networking.
     */
    setIsAdvancedNetworking(isAdvancedNetworking: boolean): void;
    isAdvancedNetworking: boolean;
    /**
     * Returns Cluster Name
     * @return {string}
     */
    getClusterName(): string;
    /**
     * Sets Cluster Name
     * @param {string} clusterName Cluster Name
     */
    setClusterName(clusterName: string): void;
    clusterName: string;
    /**
     * Returns Hypervisor Type
     * @return {string}
     */
    getHypervisorType(): string;
    /**
     * Sets Hypervisor Type
     * @param {string} hypervisorType Hypervisor Type
     */
    setHypervisorType(hypervisorType: string): void;
    hypervisorType: string;
    /**
     * @return {VirtualSwitch}
     */
    getVirtualSwitch(): VirtualSwitch;
    /**
     * @param {VirtualSwitch} virtualSwitch
     */
    setVirtualSwitch(virtualSwitch: VirtualSwitch): void;
    virtualSwitch: VirtualSwitch;
    /**
     * @return {Vpc}
     */
    getVpc(): Vpc;
    /**
     * @param {Vpc} vpc
     */
    setVpc(vpc: Vpc): void;
    vpc: Vpc;
    /**
     * Returns IP Prefix in CIDR format.
     * @return {string}
     */
    getIpPrefix(): string;
    /**
     * Sets IP Prefix in CIDR format.
     * @param {string} ipPrefix IP Prefix in CIDR format.
     */
    setIpPrefix(ipPrefix: string): void;
    ipPrefix: string;
    /**
     * @return {IPUsage}
     */
    getIpUsage(): IPUsage;
    /**
     * @param {IPUsage} ipUsage
     */
    setIpUsage(ipUsage: IPUsage): void;
    ipUsage: IPUsage;
    /**
     * @return {MigrationState}
     */
    getMigrationState(): MigrationState;
    /**
     * @param {MigrationState} migrationState
     */
    setMigrationState(migrationState: MigrationState): void;
    migrationState: string;
    toJson(forMutation: any): {
        $reserved: any;
        $objectType: string;
        $unknownFields: any;
        tenantId?: string;
        links?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            rel?: string;
            href?: string;
        }[];
        extId?: string;
        metadata?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            categoryIds?: string[];
            projectName?: string;
            projectReferenceId?: string;
            ownerUserName?: string;
            ownerReferenceId?: string;
        };
        migrationState?: string;
        ipUsage?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            ipPoolUsages?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                range?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    endIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                    startIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                };
                numTotalIPs?: number;
                numFreeIPs?: number;
            }[];
            numAssignedIPs?: number;
            numFreeIPs?: number;
            numMacs?: number;
        };
        ipPrefix?: string;
        vpc?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            tenantId?: string;
            links?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                rel?: string;
                href?: string;
            }[];
            extId?: string;
            metadata?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                categoryIds?: string[];
                projectName?: string;
                projectReferenceId?: string;
                ownerUserName?: string;
                ownerReferenceId?: string;
            };
            externallyRoutablePrefixes?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                ipv6?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    ip?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                };
                ipv4?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    ip?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                };
            }[];
            externalRoutingDomainReference?: string;
            externalSubnets?: {
                $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;
            }[];
            snatIps?: {
                $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;
                };
            }[];
            commonDhcpOptions?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                domainNameServers?: {
                    $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;
                    };
                }[];
            };
            vpcType?: string;
            description?: string;
            name?: string;
        };
        virtualSwitch?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            tenantId?: string;
            links?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                rel?: string;
                href?: string;
            }[];
            extId?: string;
            metadata?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                categoryIds?: string[];
                projectName?: string;
                projectReferenceId?: string;
                ownerUserName?: string;
                ownerReferenceId?: string;
            };
            hasDeleteInProgress?: boolean;
            hasUpdateInProgress?: boolean;
            ownerType?: string;
            igmpSpec?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                snoopingTimeout?: number;
                querierSpec?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    vlanIdList?: integer[];
                    isQuerierEnabled?: boolean;
                };
                isSnoopingEnabled?: boolean;
            };
            clusters?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                gatewayIpAddress?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                hosts?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    routeTable?: number;
                    ipAddress?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        ip?: {
                            $reserved: any;
                            $objectType: string;
                            $unknownFields: any;
                            prefixLength?: number;
                            value?: string;
                        };
                    };
                    hostNics?: string[];
                    internalBridgeName?: string;
                    extId?: string;
                }[];
                extId?: string;
            }[];
            bondMode?: string;
            mtu?: number;
            hasDeploymentError?: boolean;
            isQuickMode?: boolean;
            isDefault?: boolean;
            description?: string;
            name?: string;
        };
        hypervisorType?: string;
        clusterName?: string;
        isAdvancedNetworking?: boolean;
        bridgeName?: string;
        networkFunctionChainReference?: string;
        dynamicIpAddresses?: {
            $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;
            };
        }[];
        reservedIpAddresses?: {
            $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;
            };
        }[];
        isExternal?: boolean;
        isNatEnabled?: boolean;
        vpcReference?: string;
        virtualSwitchReference?: string;
        clusterReference?: string;
        ipConfig?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            ipv6?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                poolList?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    endIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                    startIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                }[];
                dhcpServerAddress?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                defaultGatewayIp?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                ipSubnet?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    ip?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                };
            };
            ipv4?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                poolList?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    endIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                    startIp?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                }[];
                dhcpServerAddress?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                defaultGatewayIp?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    value?: string;
                };
                ipSubnet?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    prefixLength?: number;
                    ip?: {
                        $reserved: any;
                        $objectType: string;
                        $unknownFields: any;
                        prefixLength?: number;
                        value?: string;
                    };
                };
            };
        }[];
        dhcpOptions?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            ntpServers?: {
                $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;
                };
            }[];
            bootFileName?: string;
            tftpServerName?: string;
            searchDomains?: string[];
            domainName?: string;
            domainNameServers?: {
                $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;
                };
            }[];
        };
        networkId?: number;
        subnetType?: string;
        description?: string;
        name?: string;
    };
    #private;
}
import NetworkingBaseModel from "./NetworkingBaseModel";
import SubnetType from "./SubnetType";
import DhcpOptions from "./DhcpOptions";
import IPConfig from "./IPConfig";
import IPAddress from "../../../common/v1/config/IPAddress";
import VirtualSwitch from "./VirtualSwitch";
import Vpc from "./Vpc";
import IPUsage from "./IPUsage";
import MigrationState from "./MigrationState";
