import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource managed the Org Network Templates (Switch templates).
 *
 * A network template is a predefined configuration that provides a consistent and reusable set of network settings for devices within an organization. It includes various parameters such as ip addressing, vlan configurations, routing protocols, security policies, and other network-specific settings.\
 * Network templates simplify the deployment and management of switches by ensuring consistent configurations across multiple devices and sites. They help enforce standardization, reduce human error, and streamline troubleshooting and maintenance tasks.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as junipermist from "@pulumi/juniper-mist";
 *
 * const networktemplateOne = new junipermist.org.Networktemplate("networktemplate_one", {
 *     name: "networktemplate_one",
 *     orgId: terraformTest.id,
 *     dnsServers: [
 *         "8.8.8.8",
 *         "1.1.1.1",
 *     ],
 *     dnsSuffixes: ["mycorp.com"],
 *     ntpServers: ["pool.ntp.org"],
 *     additionalConfigCmds: [
 *         "set system hostname test",
 *         "set system services ssh root-login allow",
 *     ],
 *     networks: {
 *         network_one: {
 *             vlanId: "10",
 *         },
 *         network_two: {
 *             vlanId: "11",
 *         },
 *     },
 *     portUsages: {
 *         trunk: {
 *             allNetworks: true,
 *             enableQos: true,
 *             mode: "port_usage_one",
 *             portNetwork: "network_one",
 *         },
 *     },
 *     radiusConfig: {
 *         acctInterimInterval: 60,
 *         coaEnabled: true,
 *         network: "network_one",
 *         acctServers: [{
 *             host: "1.2.3.4",
 *             secret: "secret",
 *         }],
 *         authServers: [{
 *             host: "1.2.3.4",
 *             secret: "secret",
 *         }],
 *     },
 *     switchMatching: {
 *         enable: true,
 *         rules: [{
 *             name: "switch_rule_one",
 *             matchName: "corp",
 *             matchNameOffset: 3,
 *             matchRole: "core",
 *             portConfig: {
 *                 "ge-0/0/0-10": {
 *                     usage: "port_usage_one",
 *                 },
 *             },
 *         }],
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Using `pulumi import`, import `junipermist.org.Networktemplate` with:
 * Org Network Template can be imported by specifying the orgId and the networktemplateId
 *
 * ```sh
 * $ pulumi import junipermist:org/networktemplate:Networktemplate networktemplate_one 17b46405-3a6d-4715-8bb4-6bb6d06f316a.d3c42998-9012-4859-9743-6b9bee475309
 * ```
 */
export declare class Networktemplate extends pulumi.CustomResource {
    /**
     * Get an existing Networktemplate resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NetworktemplateState, opts?: pulumi.CustomResourceOptions): Networktemplate;
    /**
     * Returns true if the given object is an instance of Networktemplate.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Networktemplate;
    /**
     * ACL policy defaults provided by this network template
     */
    readonly aclPolicies: pulumi.Output<outputs.org.NetworktemplateAclPolicy[] | undefined>;
    /**
     * ACL tags available to access policies in this network template
     */
    readonly aclTags: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateAclTags;
    } | undefined>;
    /**
     * Additional CLI configuration commands provided by this network template
     */
    readonly additionalConfigCmds: pulumi.Output<string[] | undefined>;
    /**
     * BGP routing defaults for this network template. Property key is the BGP session name
     */
    readonly bgpConfig: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateBgpConfig;
    } | undefined>;
    /**
     * DHCP snooping defaults provided by this network template
     */
    readonly dhcpSnooping: pulumi.Output<outputs.org.NetworktemplateDhcpSnooping | undefined>;
    /**
     * DNS servers provided by this network template
     */
    readonly dnsServers: pulumi.Output<string[]>;
    /**
     * DNS search suffixes provided by this network template
     */
    readonly dnsSuffixes: pulumi.Output<string[]>;
    /**
     * Additional IPv4 route defaults in this network template
     */
    readonly extraRoutes: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateExtraRoutes;
    } | undefined>;
    /**
     * Additional IPv6 route defaults in this network template
     */
    readonly extraRoutes6: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateExtraRoutes6;
    } | undefined>;
    /**
     * Mist NAC defaults applied by this network template
     */
    readonly mistNac: pulumi.Output<outputs.org.NetworktemplateMistNac | undefined>;
    /**
     * Display name of the network template
     */
    readonly name: pulumi.Output<string>;
    /**
     * Layer 3 networks configured by this network template
     */
    readonly networks: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateNetworks;
    } | undefined>;
    /**
     * NTP servers provided by this network template
     */
    readonly ntpServers: pulumi.Output<string[]>;
    /**
     * Organization that owns this network template
     */
    readonly orgId: pulumi.Output<string>;
    /**
     * OSPF area defaults provided by this network template
     */
    readonly ospfAreas: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateOspfAreas;
    } | undefined>;
    /**
     * Port mirroring defaults provided by this network template
     */
    readonly portMirroring: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplatePortMirroring;
    } | undefined>;
    /**
     * Reusable switch port usage profiles provided by this network template
     */
    readonly portUsages: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplatePortUsages;
    } | undefined>;
    /**
     * RADIUS authentication and accounting defaults in this network template
     */
    readonly radiusConfig: pulumi.Output<outputs.org.NetworktemplateRadiusConfig | undefined>;
    /**
     * Remote syslog defaults provided by this network template
     */
    readonly remoteSyslog: pulumi.Output<outputs.org.NetworktemplateRemoteSyslog | undefined>;
    /**
     * By default, only the configuration generated by Mist is cleaned up during the configuration process. If `true`, all the existing configuration will be removed.
     */
    readonly removeExistingConfigs: pulumi.Output<boolean | undefined>;
    /**
     * Routing policy defaults applied by this network template
     */
    readonly routingPolicies: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateRoutingPolicies;
    } | undefined>;
    /**
     * SNMP defaults provided by this network template
     */
    readonly snmpConfig: pulumi.Output<outputs.org.NetworktemplateSnmpConfig | undefined>;
    /**
     * Matching rules that select switches for this network template
     */
    readonly switchMatching: pulumi.Output<outputs.org.NetworktemplateSwitchMatching | undefined>;
    /**
     * Management-plane defaults provided by this network template
     */
    readonly switchMgmt: pulumi.Output<outputs.org.NetworktemplateSwitchMgmt | undefined>;
    /**
     * VRF defaults applied by this network template
     */
    readonly vrfConfig: pulumi.Output<outputs.org.NetworktemplateVrfConfig | undefined>;
    /**
     * VRF instances configured by this network template
     */
    readonly vrfInstances: pulumi.Output<{
        [key: string]: outputs.org.NetworktemplateVrfInstances;
    } | undefined>;
    /**
     * Create a Networktemplate resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: NetworktemplateArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Networktemplate resources.
 */
export interface NetworktemplateState {
    /**
     * ACL policy defaults provided by this network template
     */
    aclPolicies?: pulumi.Input<pulumi.Input<inputs.org.NetworktemplateAclPolicy>[] | undefined>;
    /**
     * ACL tags available to access policies in this network template
     */
    aclTags?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateAclTags>;
    } | undefined>;
    /**
     * Additional CLI configuration commands provided by this network template
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * BGP routing defaults for this network template. Property key is the BGP session name
     */
    bgpConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateBgpConfig>;
    } | undefined>;
    /**
     * DHCP snooping defaults provided by this network template
     */
    dhcpSnooping?: pulumi.Input<inputs.org.NetworktemplateDhcpSnooping | undefined>;
    /**
     * DNS servers provided by this network template
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * DNS search suffixes provided by this network template
     */
    dnsSuffixes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Additional IPv4 route defaults in this network template
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateExtraRoutes>;
    } | undefined>;
    /**
     * Additional IPv6 route defaults in this network template
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateExtraRoutes6>;
    } | undefined>;
    /**
     * Mist NAC defaults applied by this network template
     */
    mistNac?: pulumi.Input<inputs.org.NetworktemplateMistNac | undefined>;
    /**
     * Display name of the network template
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Layer 3 networks configured by this network template
     */
    networks?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateNetworks>;
    } | undefined>;
    /**
     * NTP servers provided by this network template
     */
    ntpServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Organization that owns this network template
     */
    orgId?: pulumi.Input<string | undefined>;
    /**
     * OSPF area defaults provided by this network template
     */
    ospfAreas?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateOspfAreas>;
    } | undefined>;
    /**
     * Port mirroring defaults provided by this network template
     */
    portMirroring?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplatePortMirroring>;
    } | undefined>;
    /**
     * Reusable switch port usage profiles provided by this network template
     */
    portUsages?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplatePortUsages>;
    } | undefined>;
    /**
     * RADIUS authentication and accounting defaults in this network template
     */
    radiusConfig?: pulumi.Input<inputs.org.NetworktemplateRadiusConfig | undefined>;
    /**
     * Remote syslog defaults provided by this network template
     */
    remoteSyslog?: pulumi.Input<inputs.org.NetworktemplateRemoteSyslog | undefined>;
    /**
     * By default, only the configuration generated by Mist is cleaned up during the configuration process. If `true`, all the existing configuration will be removed.
     */
    removeExistingConfigs?: pulumi.Input<boolean | undefined>;
    /**
     * Routing policy defaults applied by this network template
     */
    routingPolicies?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateRoutingPolicies>;
    } | undefined>;
    /**
     * SNMP defaults provided by this network template
     */
    snmpConfig?: pulumi.Input<inputs.org.NetworktemplateSnmpConfig | undefined>;
    /**
     * Matching rules that select switches for this network template
     */
    switchMatching?: pulumi.Input<inputs.org.NetworktemplateSwitchMatching | undefined>;
    /**
     * Management-plane defaults provided by this network template
     */
    switchMgmt?: pulumi.Input<inputs.org.NetworktemplateSwitchMgmt | undefined>;
    /**
     * VRF defaults applied by this network template
     */
    vrfConfig?: pulumi.Input<inputs.org.NetworktemplateVrfConfig | undefined>;
    /**
     * VRF instances configured by this network template
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateVrfInstances>;
    } | undefined>;
}
/**
 * The set of arguments for constructing a Networktemplate resource.
 */
export interface NetworktemplateArgs {
    /**
     * ACL policy defaults provided by this network template
     */
    aclPolicies?: pulumi.Input<pulumi.Input<inputs.org.NetworktemplateAclPolicy>[] | undefined>;
    /**
     * ACL tags available to access policies in this network template
     */
    aclTags?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateAclTags>;
    } | undefined>;
    /**
     * Additional CLI configuration commands provided by this network template
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * BGP routing defaults for this network template. Property key is the BGP session name
     */
    bgpConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateBgpConfig>;
    } | undefined>;
    /**
     * DHCP snooping defaults provided by this network template
     */
    dhcpSnooping?: pulumi.Input<inputs.org.NetworktemplateDhcpSnooping | undefined>;
    /**
     * DNS servers provided by this network template
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * DNS search suffixes provided by this network template
     */
    dnsSuffixes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Additional IPv4 route defaults in this network template
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateExtraRoutes>;
    } | undefined>;
    /**
     * Additional IPv6 route defaults in this network template
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateExtraRoutes6>;
    } | undefined>;
    /**
     * Mist NAC defaults applied by this network template
     */
    mistNac?: pulumi.Input<inputs.org.NetworktemplateMistNac | undefined>;
    /**
     * Display name of the network template
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Layer 3 networks configured by this network template
     */
    networks?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateNetworks>;
    } | undefined>;
    /**
     * NTP servers provided by this network template
     */
    ntpServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Organization that owns this network template
     */
    orgId: pulumi.Input<string>;
    /**
     * OSPF area defaults provided by this network template
     */
    ospfAreas?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateOspfAreas>;
    } | undefined>;
    /**
     * Port mirroring defaults provided by this network template
     */
    portMirroring?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplatePortMirroring>;
    } | undefined>;
    /**
     * Reusable switch port usage profiles provided by this network template
     */
    portUsages?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplatePortUsages>;
    } | undefined>;
    /**
     * RADIUS authentication and accounting defaults in this network template
     */
    radiusConfig?: pulumi.Input<inputs.org.NetworktemplateRadiusConfig | undefined>;
    /**
     * Remote syslog defaults provided by this network template
     */
    remoteSyslog?: pulumi.Input<inputs.org.NetworktemplateRemoteSyslog | undefined>;
    /**
     * By default, only the configuration generated by Mist is cleaned up during the configuration process. If `true`, all the existing configuration will be removed.
     */
    removeExistingConfigs?: pulumi.Input<boolean | undefined>;
    /**
     * Routing policy defaults applied by this network template
     */
    routingPolicies?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateRoutingPolicies>;
    } | undefined>;
    /**
     * SNMP defaults provided by this network template
     */
    snmpConfig?: pulumi.Input<inputs.org.NetworktemplateSnmpConfig | undefined>;
    /**
     * Matching rules that select switches for this network template
     */
    switchMatching?: pulumi.Input<inputs.org.NetworktemplateSwitchMatching | undefined>;
    /**
     * Management-plane defaults provided by this network template
     */
    switchMgmt?: pulumi.Input<inputs.org.NetworktemplateSwitchMgmt | undefined>;
    /**
     * VRF defaults applied by this network template
     */
    vrfConfig?: pulumi.Input<inputs.org.NetworktemplateVrfConfig | undefined>;
    /**
     * VRF instances configured by this network template
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.org.NetworktemplateVrfInstances>;
    } | undefined>;
}
//# sourceMappingURL=networktemplate.d.ts.map