/**
 * The RoutingPolicy model module.
 * @module Ntnx/RoutingPolicy
 * @version 4.0.1
 * @class RoutingPolicy
 * @extends NetworkingBaseModel
 *
 * @param { string } name Name of the routing policy.
 *
 * @param { Number } priority Priority of the routing policy.
 *
 * @param { RoutingPolicyRule[] } policies
 *
 * @param { string } vpcExtId ExtId of the VPC extId to which the routing policy belongs.
 */
export default class RoutingPolicy extends NetworkingBaseModel {
    /**
     * Constructs a new <code>RoutingPolicy</code>.
     * Schema to configure a routing policy.
     * @alias module:Ntnx/RoutingPolicy
     * @extends module:Ntnx/NetworkingBaseModel
     *
     * @param { string } name Name of the routing policy.
     *
     * @param { Number } priority Priority of the routing policy.
     *
     * @param { RoutingPolicyRule[] } policies
     *
     * @param { string } vpcExtId ExtId of the VPC extId to which the routing policy belongs.
    */
    constructor(name: string, priority: number, policies: RoutingPolicyRule[], vpcExtId: string);
    name: string;
    priority: number;
    policies: RoutingPolicyRule[];
    vpcExtId: string;
    /**
     * Returns Name of the routing policy.
     * @return {string}
     */
    getName(): string;
    /**
     * Sets Name of the routing policy.
     * @param {string} name Name of the routing policy.
     */
    setName(name: string): void;
    /**
     * Returns A description of the routing policy.
     * @return {string}
     */
    getDescription(): string;
    /**
     * Sets A description of the routing policy.
     * @param {string} description A description of the routing policy.
     */
    setDescription(description: string): void;
    description: string;
    /**
     * Returns Priority of the routing policy.
     * minimum: 1
     * maximum: 1000
     * @return {Number}
     */
    getPriority(): number;
    /**
     * Sets Priority of the routing policy.
     * @param {Number} priority Priority of the routing policy.
     */
    setPriority(priority: number): void;
    /**
     * @return {RoutingPolicyRule[]}
     */
    getPolicies(): RoutingPolicyRule[];
    /**
     * @param {RoutingPolicyRule[]} policies
     */
    setPolicies(policies: RoutingPolicyRule[]): void;
    /**
     * Returns ExtId of the VPC extId to which the routing policy belongs.
     * @return {string}
     */
    getVpcExtId(): string;
    /**
     * Sets ExtId of the VPC extId to which the routing policy belongs.
     * @param {string} vpcExtId ExtId of the VPC extId to which the routing policy belongs.
     */
    setVpcExtId(vpcExtId: string): void;
    /**
     * @return {VpcName}
     */
    getVpc(): VpcName;
    /**
     * @param {VpcName} vpc
     */
    setVpc(vpc: VpcName): void;
    vpc: VpcName;
    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;
        };
        vpc?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            name?: string;
        };
        vpcExtId?: string;
        policies?: {
            $reserved: any;
            $objectType: string;
            $unknownFields: any;
            isBidirectional?: boolean;
            policyAction?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                nexthopIpAddress?: {
                    $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;
                    };
                };
                rerouteParams?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    egressServiceIp?: {
                        $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;
                        };
                    };
                    ingressServiceIp?: {
                        $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;
                        };
                    };
                    rerouteFallbackAction?: string;
                    serviceIp?: {
                        $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;
                        };
                    };
                }[];
                actionType?: string;
            };
            policyMatch?: {
                $reserved: any;
                $objectType: string;
                $unknownFields: any;
                protocolParameters?: any;
                protocolType?: string;
                destination?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    subnetPrefix?: {
                        $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;
                            };
                        };
                    };
                    addressType?: string;
                };
                source?: {
                    $reserved: any;
                    $objectType: string;
                    $unknownFields: any;
                    subnetPrefix?: {
                        $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;
                            };
                        };
                    };
                    addressType?: string;
                };
            };
        }[];
        priority?: number;
        description?: string;
        name?: string;
    };
    #private;
}
import NetworkingBaseModel from "./NetworkingBaseModel";
import RoutingPolicyRule from "./RoutingPolicyRule";
import VpcName from "./VpcName";
