import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource manages the Switch configuration.
 *
 * It can be used to define specific configuration at the device level or to override Org/Site Network template settings.
 *
 * > **WARNING** For **adopted** devices, make sure to set `managed`=`true` to allow Mist to manage the switch
 *
 * ## Import
 *
 * Using `pulumi import`, import `mist_device_switch` with:
 *
 * Switch Configuration can be imported by specifying the site_id and the device_id
 *
 * ```sh
 * $ pulumi import junipermist:device/switch:Switch switch_one 17b46405-3a6d-4715-8bb4-6bb6d06f316a.d3c42998-9012-4859-9743-6b9bee475309
 * ```
 */
export declare class Switch extends pulumi.CustomResource {
    /**
     * Get an existing Switch 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?: SwitchState, opts?: pulumi.CustomResourceOptions): Switch;
    /**
     * Returns true if the given object is an instance of Switch.  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 Switch;
    readonly aclPolicies: pulumi.Output<outputs.device.SwitchAclPolicy[] | undefined>;
    /**
     * ACL Tags to identify traffic source or destination. Key name is the tag name
     */
    readonly aclTags: pulumi.Output<{
        [key: string]: outputs.device.SwitchAclTags;
    } | undefined>;
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    readonly additionalConfigCmds: pulumi.Output<string[] | undefined>;
    readonly deviceId: pulumi.Output<string>;
    readonly dhcpSnooping: pulumi.Output<outputs.device.SwitchDhcpSnooping | undefined>;
    readonly dhcpdConfig: pulumi.Output<outputs.device.SwitchDhcpdConfig | undefined>;
    /**
     * For a claimed switch, we control the configs by default. This option (disables the behavior)
     */
    readonly disableAutoConfig: pulumi.Output<boolean>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    readonly dnsServers: pulumi.Output<string[]>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    readonly dnsSuffixes: pulumi.Output<string[]>;
    /**
     * Property key is the destination CIDR (e.g. "10.0.0.0/8")
     */
    readonly extraRoutes: pulumi.Output<{
        [key: string]: outputs.device.SwitchExtraRoutes;
    } | undefined>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64")
     */
    readonly extraRoutes6: pulumi.Output<{
        [key: string]: outputs.device.SwitchExtraRoutes6;
    } | undefined>;
    readonly image1Url: pulumi.Output<string>;
    readonly image2Url: pulumi.Output<string>;
    readonly image3Url: pulumi.Output<string>;
    /**
     * Junos IP Config
     */
    readonly ipConfig: pulumi.Output<outputs.device.SwitchIpConfig | undefined>;
    /**
     * Local port override, overriding the port configuration from `portConfig`. Property key is the port name or range (e.g.
     * "ge-0/0/0-10")
     */
    readonly localPortConfig: pulumi.Output<{
        [key: string]: outputs.device.SwitchLocalPortConfig;
    } | undefined>;
    /**
     * Device MAC address
     */
    readonly mac: pulumi.Output<string>;
    /**
     * For an adopted switch, we don’t overwrite their existing configs automatically
     */
    readonly managed: pulumi.Output<boolean>;
    /**
     * Map where the device belongs to
     */
    readonly mapId: pulumi.Output<string | undefined>;
    /**
     * Enable mistNac to use RadSec
     */
    readonly mistNac: pulumi.Output<outputs.device.SwitchMistNac | undefined>;
    /**
     * Device Model
     */
    readonly model: pulumi.Output<string>;
    readonly name: pulumi.Output<string>;
    /**
     * Property key is network name
     */
    readonly networks: pulumi.Output<{
        [key: string]: outputs.device.SwitchNetworks;
    } | undefined>;
    readonly notes: pulumi.Output<string | undefined>;
    /**
     * List of NTP servers specific to this device. By default, those in Site Settings will be used
     */
    readonly ntpServers: pulumi.Output<string[]>;
    /**
     * Switch OOB IP Config: - If HA configuration: key parameter will be nodeX (eg: node1) - If there are 2 routing engines,
     * re1 mgmt IP has to be set separately (if desired): key parameter = `re1`
     */
    readonly oobIpConfig: pulumi.Output<outputs.device.SwitchOobIpConfig | undefined>;
    readonly orgId: pulumi.Output<string>;
    /**
     * Junos OSPF areas
     */
    readonly ospfAreas: pulumi.Output<{
        [key: string]: outputs.device.SwitchOspfAreas;
    } | undefined>;
    /**
     * Property key is the network name. Defines the additional IP Addresses configured on the device.
     */
    readonly otherIpConfigs: pulumi.Output<{
        [key: string]: outputs.device.SwitchOtherIpConfigs;
    } | undefined>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    readonly portConfig: pulumi.Output<{
        [key: string]: outputs.device.SwitchPortConfig;
    } | undefined>;
    /**
     * Property key is the port mirroring instance name. `portMirroring` can be added under device/site settings. It takes
     * interface and ports as input for ingress, interface as input for egress and can take interface and port as output. A
     * maximum 4 mirroring ports is allowed
     */
    readonly portMirroring: pulumi.Output<{
        [key: string]: outputs.device.SwitchPortMirroring;
    } | undefined>;
    /**
     * Property key is the port usage name. Defines the profiles of port configuration configured on the switch
     */
    readonly portUsages: pulumi.Output<{
        [key: string]: outputs.device.SwitchPortUsages;
    } | undefined>;
    /**
     * Junos Radius config
     */
    readonly radiusConfig: pulumi.Output<outputs.device.SwitchRadiusConfig | undefined>;
    readonly remoteSyslog: pulumi.Output<outputs.device.SwitchRemoteSyslog | undefined>;
    readonly role: pulumi.Output<string | undefined>;
    /**
     * Used for OSPF / BGP / EVPN
     */
    readonly routerId: pulumi.Output<string>;
    /**
     * Device Serial
     */
    readonly serial: pulumi.Output<string>;
    readonly siteId: pulumi.Output<string>;
    readonly snmpConfig: pulumi.Output<outputs.device.SwitchSnmpConfig | undefined>;
    readonly stpConfig: pulumi.Output<outputs.device.SwitchStpConfig | undefined>;
    /**
     * Switch settings
     */
    readonly switchMgmt: pulumi.Output<outputs.device.SwitchSwitchMgmt | undefined>;
    /**
     * Device Type. enum: `switch`
     */
    readonly type: pulumi.Output<string>;
    /**
     * Whether to use it for snmp / syslog / tacplus / radius
     */
    readonly useRouterIdAsSourceIp: pulumi.Output<boolean>;
    /**
     * Dictionary of name->value, the vars can then be used in Wlans. This can overwrite those from Site Vars
     */
    readonly vars: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Required for preprovisioned Virtual Chassis
     */
    readonly virtualChassis: pulumi.Output<outputs.device.SwitchVirtualChassis | undefined>;
    readonly vrfConfig: pulumi.Output<outputs.device.SwitchVrfConfig | undefined>;
    /**
     * Property key is the network name
     */
    readonly vrfInstances: pulumi.Output<{
        [key: string]: outputs.device.SwitchVrfInstances;
    } | undefined>;
    /**
     * Junos VRRP config
     */
    readonly vrrpConfig: pulumi.Output<outputs.device.SwitchVrrpConfig | undefined>;
    /**
     * X in pixel
     */
    readonly x: pulumi.Output<number | undefined>;
    /**
     * Y in pixel
     */
    readonly y: pulumi.Output<number | undefined>;
    /**
     * Create a Switch 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: SwitchArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Switch resources.
 */
export interface SwitchState {
    aclPolicies?: pulumi.Input<pulumi.Input<inputs.device.SwitchAclPolicy>[]>;
    /**
     * ACL Tags to identify traffic source or destination. Key name is the tag name
     */
    aclTags?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchAclTags>;
    }>;
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[]>;
    deviceId?: pulumi.Input<string>;
    dhcpSnooping?: pulumi.Input<inputs.device.SwitchDhcpSnooping>;
    dhcpdConfig?: pulumi.Input<inputs.device.SwitchDhcpdConfig>;
    /**
     * For a claimed switch, we control the configs by default. This option (disables the behavior)
     */
    disableAutoConfig?: pulumi.Input<boolean>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    dnsSuffixes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Property key is the destination CIDR (e.g. "10.0.0.0/8")
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchExtraRoutes>;
    }>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64")
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchExtraRoutes6>;
    }>;
    image1Url?: pulumi.Input<string>;
    image2Url?: pulumi.Input<string>;
    image3Url?: pulumi.Input<string>;
    /**
     * Junos IP Config
     */
    ipConfig?: pulumi.Input<inputs.device.SwitchIpConfig>;
    /**
     * Local port override, overriding the port configuration from `portConfig`. Property key is the port name or range (e.g.
     * "ge-0/0/0-10")
     */
    localPortConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchLocalPortConfig>;
    }>;
    /**
     * Device MAC address
     */
    mac?: pulumi.Input<string>;
    /**
     * For an adopted switch, we don’t overwrite their existing configs automatically
     */
    managed?: pulumi.Input<boolean>;
    /**
     * Map where the device belongs to
     */
    mapId?: pulumi.Input<string>;
    /**
     * Enable mistNac to use RadSec
     */
    mistNac?: pulumi.Input<inputs.device.SwitchMistNac>;
    /**
     * Device Model
     */
    model?: pulumi.Input<string>;
    name?: pulumi.Input<string>;
    /**
     * Property key is network name
     */
    networks?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchNetworks>;
    }>;
    notes?: pulumi.Input<string>;
    /**
     * List of NTP servers specific to this device. By default, those in Site Settings will be used
     */
    ntpServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Switch OOB IP Config: - If HA configuration: key parameter will be nodeX (eg: node1) - If there are 2 routing engines,
     * re1 mgmt IP has to be set separately (if desired): key parameter = `re1`
     */
    oobIpConfig?: pulumi.Input<inputs.device.SwitchOobIpConfig>;
    orgId?: pulumi.Input<string>;
    /**
     * Junos OSPF areas
     */
    ospfAreas?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchOspfAreas>;
    }>;
    /**
     * Property key is the network name. Defines the additional IP Addresses configured on the device.
     */
    otherIpConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchOtherIpConfigs>;
    }>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    portConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortConfig>;
    }>;
    /**
     * Property key is the port mirroring instance name. `portMirroring` can be added under device/site settings. It takes
     * interface and ports as input for ingress, interface as input for egress and can take interface and port as output. A
     * maximum 4 mirroring ports is allowed
     */
    portMirroring?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortMirroring>;
    }>;
    /**
     * Property key is the port usage name. Defines the profiles of port configuration configured on the switch
     */
    portUsages?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortUsages>;
    }>;
    /**
     * Junos Radius config
     */
    radiusConfig?: pulumi.Input<inputs.device.SwitchRadiusConfig>;
    remoteSyslog?: pulumi.Input<inputs.device.SwitchRemoteSyslog>;
    role?: pulumi.Input<string>;
    /**
     * Used for OSPF / BGP / EVPN
     */
    routerId?: pulumi.Input<string>;
    /**
     * Device Serial
     */
    serial?: pulumi.Input<string>;
    siteId?: pulumi.Input<string>;
    snmpConfig?: pulumi.Input<inputs.device.SwitchSnmpConfig>;
    stpConfig?: pulumi.Input<inputs.device.SwitchStpConfig>;
    /**
     * Switch settings
     */
    switchMgmt?: pulumi.Input<inputs.device.SwitchSwitchMgmt>;
    /**
     * Device Type. enum: `switch`
     */
    type?: pulumi.Input<string>;
    /**
     * Whether to use it for snmp / syslog / tacplus / radius
     */
    useRouterIdAsSourceIp?: pulumi.Input<boolean>;
    /**
     * Dictionary of name->value, the vars can then be used in Wlans. This can overwrite those from Site Vars
     */
    vars?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Required for preprovisioned Virtual Chassis
     */
    virtualChassis?: pulumi.Input<inputs.device.SwitchVirtualChassis>;
    vrfConfig?: pulumi.Input<inputs.device.SwitchVrfConfig>;
    /**
     * Property key is the network name
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchVrfInstances>;
    }>;
    /**
     * Junos VRRP config
     */
    vrrpConfig?: pulumi.Input<inputs.device.SwitchVrrpConfig>;
    /**
     * X in pixel
     */
    x?: pulumi.Input<number>;
    /**
     * Y in pixel
     */
    y?: pulumi.Input<number>;
}
/**
 * The set of arguments for constructing a Switch resource.
 */
export interface SwitchArgs {
    aclPolicies?: pulumi.Input<pulumi.Input<inputs.device.SwitchAclPolicy>[]>;
    /**
     * ACL Tags to identify traffic source or destination. Key name is the tag name
     */
    aclTags?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchAclTags>;
    }>;
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[]>;
    deviceId: pulumi.Input<string>;
    dhcpSnooping?: pulumi.Input<inputs.device.SwitchDhcpSnooping>;
    dhcpdConfig?: pulumi.Input<inputs.device.SwitchDhcpdConfig>;
    /**
     * For a claimed switch, we control the configs by default. This option (disables the behavior)
     */
    disableAutoConfig?: pulumi.Input<boolean>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    dnsSuffixes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Property key is the destination CIDR (e.g. "10.0.0.0/8")
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchExtraRoutes>;
    }>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64")
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchExtraRoutes6>;
    }>;
    /**
     * Junos IP Config
     */
    ipConfig?: pulumi.Input<inputs.device.SwitchIpConfig>;
    /**
     * Local port override, overriding the port configuration from `portConfig`. Property key is the port name or range (e.g.
     * "ge-0/0/0-10")
     */
    localPortConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchLocalPortConfig>;
    }>;
    /**
     * For an adopted switch, we don’t overwrite their existing configs automatically
     */
    managed?: pulumi.Input<boolean>;
    /**
     * Map where the device belongs to
     */
    mapId?: pulumi.Input<string>;
    /**
     * Enable mistNac to use RadSec
     */
    mistNac?: pulumi.Input<inputs.device.SwitchMistNac>;
    name?: pulumi.Input<string>;
    /**
     * Property key is network name
     */
    networks?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchNetworks>;
    }>;
    notes?: pulumi.Input<string>;
    /**
     * List of NTP servers specific to this device. By default, those in Site Settings will be used
     */
    ntpServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Switch OOB IP Config: - If HA configuration: key parameter will be nodeX (eg: node1) - If there are 2 routing engines,
     * re1 mgmt IP has to be set separately (if desired): key parameter = `re1`
     */
    oobIpConfig?: pulumi.Input<inputs.device.SwitchOobIpConfig>;
    /**
     * Junos OSPF areas
     */
    ospfAreas?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchOspfAreas>;
    }>;
    /**
     * Property key is the network name. Defines the additional IP Addresses configured on the device.
     */
    otherIpConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchOtherIpConfigs>;
    }>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    portConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortConfig>;
    }>;
    /**
     * Property key is the port mirroring instance name. `portMirroring` can be added under device/site settings. It takes
     * interface and ports as input for ingress, interface as input for egress and can take interface and port as output. A
     * maximum 4 mirroring ports is allowed
     */
    portMirroring?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortMirroring>;
    }>;
    /**
     * Property key is the port usage name. Defines the profiles of port configuration configured on the switch
     */
    portUsages?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchPortUsages>;
    }>;
    /**
     * Junos Radius config
     */
    radiusConfig?: pulumi.Input<inputs.device.SwitchRadiusConfig>;
    remoteSyslog?: pulumi.Input<inputs.device.SwitchRemoteSyslog>;
    role?: pulumi.Input<string>;
    /**
     * Used for OSPF / BGP / EVPN
     */
    routerId?: pulumi.Input<string>;
    siteId: pulumi.Input<string>;
    snmpConfig?: pulumi.Input<inputs.device.SwitchSnmpConfig>;
    stpConfig?: pulumi.Input<inputs.device.SwitchStpConfig>;
    /**
     * Switch settings
     */
    switchMgmt?: pulumi.Input<inputs.device.SwitchSwitchMgmt>;
    /**
     * Whether to use it for snmp / syslog / tacplus / radius
     */
    useRouterIdAsSourceIp?: pulumi.Input<boolean>;
    /**
     * Dictionary of name->value, the vars can then be used in Wlans. This can overwrite those from Site Vars
     */
    vars?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Required for preprovisioned Virtual Chassis
     */
    virtualChassis?: pulumi.Input<inputs.device.SwitchVirtualChassis>;
    vrfConfig?: pulumi.Input<inputs.device.SwitchVrfConfig>;
    /**
     * Property key is the network name
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.SwitchVrfInstances>;
    }>;
    /**
     * Junos VRRP config
     */
    vrrpConfig?: pulumi.Input<inputs.device.SwitchVrrpConfig>;
    /**
     * X in pixel
     */
    x?: pulumi.Input<number>;
    /**
     * Y in pixel
     */
    y?: pulumi.Input<number>;
}
