import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource manages the Gateway configuration.
 *
 * It can be used to define specific configuration at the device level or to override Org Gateway template settings.
 *
 * > **WARNING** For **adopted** devices, make sure to set `managed`=`true` to allow Mist to manage the gateway
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as junipermist from "@pulumi/juniper-mist";
 *
 * const gatewayOne = new junipermist.device.Gateway("gateway_one", {
 *     name: "gateway_one",
 *     deviceId: clusterOne.deviceId,
 *     siteId: clusterOne.siteId,
 *     oobIpConfig: {
 *         type: "dhcp",
 *     },
 *     dnsServers: ["8.8.8.8"],
 *     additionalConfigCmds: [
 *         "annotate system \" -- custom-main -- Template level --\"",
 *         "delete apply-groups custom-main",
 *         "delete groups custom-main",
 *         "set groups custom-main",
 *         "set groups custom-main system services ssh root-login allow",
 *         "set apply-groups custom-main",
 *     ],
 * });
 * ```
 *
 * ## Import
 *
 * Using `pulumi import`, import `mist_device_gateway` with:
 *
 * Gateway Configuration can be imported by specifying the site_id and the device_id
 *
 * ```sh
 * $ pulumi import junipermist:device/gateway:Gateway gateway_one 17b46405-3a6d-4715-8bb4-6bb6d06f316a.d3c42998-9012-4859-9743-6b9bee475309
 * ```
 */
export declare class Gateway extends pulumi.CustomResource {
    /**
     * Get an existing Gateway 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?: GatewayState, opts?: pulumi.CustomResourceOptions): Gateway;
    /**
     * Returns true if the given object is an instance of Gateway.  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 Gateway;
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    readonly additionalConfigCmds: pulumi.Output<string[] | undefined>;
    readonly bgpConfig: pulumi.Output<{
        [key: string]: outputs.device.GatewayBgpConfig;
    } | undefined>;
    readonly deviceId: pulumi.Output<string>;
    readonly dhcpdConfig: pulumi.Output<outputs.device.GatewayDhcpdConfig | undefined>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    readonly dnsServers: pulumi.Output<string[] | undefined>;
    /**
     * Global dns settings. To keep compatibility, dns settings in `ipConfig` and `oobIpConfig` will overwrite this setting
     */
    readonly dnsSuffixes: pulumi.Output<string[] | undefined>;
    /**
     * Property key is the destination CIDR (e.g. "10.0.0.0/8"), the destination Network name or a variable (e.g. "{{myvar}}")
     */
    readonly extraRoutes: pulumi.Output<{
        [key: string]: outputs.device.GatewayExtraRoutes;
    } | undefined>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64"), the destination Network name or a variable (e.g.
     * "{{myvar}}")
     */
    readonly extraRoutes6: pulumi.Output<{
        [key: string]: outputs.device.GatewayExtraRoutes6;
    } | undefined>;
    /**
     * Property key is the profile name
     */
    readonly idpProfiles: pulumi.Output<{
        [key: string]: outputs.device.GatewayIdpProfiles;
    } | undefined>;
    readonly image1Url: pulumi.Output<string>;
    readonly image2Url: pulumi.Output<string>;
    readonly image3Url: pulumi.Output<string>;
    /**
     * Property key is the network name
     */
    readonly ipConfigs: pulumi.Output<{
        [key: string]: outputs.device.GatewayIpConfigs;
    } | undefined>;
    /**
     * Device MAC address
     */
    readonly mac: pulumi.Output<string>;
    readonly managed: pulumi.Output<boolean | undefined>;
    /**
     * Map where the device belongs to
     */
    readonly mapId: pulumi.Output<string | undefined>;
    /**
     * Device Model
     */
    readonly model: pulumi.Output<string>;
    readonly mspId: pulumi.Output<string | undefined>;
    readonly name: pulumi.Output<string>;
    readonly networks: pulumi.Output<outputs.device.GatewayNetwork[] | undefined>;
    readonly notes: pulumi.Output<string | undefined>;
    readonly ntpServers: pulumi.Output<string[] | undefined>;
    /**
     * Out-of-band (vme/em0/fxp0) IP config
     */
    readonly oobIpConfig: pulumi.Output<outputs.device.GatewayOobIpConfig>;
    readonly orgId: pulumi.Output<string>;
    /**
     * Property key is the path name
     */
    readonly pathPreferences: pulumi.Output<{
        [key: string]: outputs.device.GatewayPathPreferences;
    } | undefined>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    readonly portConfig: pulumi.Output<{
        [key: string]: outputs.device.GatewayPortConfig;
    } | undefined>;
    readonly portMirroring: pulumi.Output<outputs.device.GatewayPortMirroring | undefined>;
    /**
     * Auto assigned if not set
     */
    readonly routerId: pulumi.Output<string | undefined>;
    /**
     * Property key is the routing policy name
     */
    readonly routingPolicies: pulumi.Output<{
        [key: string]: outputs.device.GatewayRoutingPolicies;
    } | undefined>;
    /**
     * Device Serial
     */
    readonly serial: pulumi.Output<string>;
    readonly servicePolicies: pulumi.Output<outputs.device.GatewayServicePolicy[] | undefined>;
    readonly siteId: pulumi.Output<string>;
    /**
     * Property key is the tunnel name
     */
    readonly tunnelConfigs: pulumi.Output<{
        [key: string]: outputs.device.GatewayTunnelConfigs;
    } | undefined>;
    readonly tunnelProviderOptions: pulumi.Output<outputs.device.GatewayTunnelProviderOptions | undefined>;
    /**
     * Device Type. enum: `gateway`
     */
    readonly type: pulumi.Output<string>;
    /**
     * 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>;
    readonly vrfConfig: pulumi.Output<outputs.device.GatewayVrfConfig | undefined>;
    /**
     * Property key is the network name
     */
    readonly vrfInstances: pulumi.Output<{
        [key: string]: outputs.device.GatewayVrfInstances;
    } | undefined>;
    /**
     * X in pixel
     */
    readonly x: pulumi.Output<number | undefined>;
    /**
     * Y in pixel
     */
    readonly y: pulumi.Output<number | undefined>;
    /**
     * Create a Gateway 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: GatewayArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Gateway resources.
 */
export interface GatewayState {
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[]>;
    bgpConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayBgpConfig>;
    }>;
    deviceId?: pulumi.Input<string>;
    dhcpdConfig?: pulumi.Input<inputs.device.GatewayDhcpdConfig>;
    /**
     * 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"), the destination Network name or a variable (e.g. "{{myvar}}")
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayExtraRoutes>;
    }>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64"), the destination Network name or a variable (e.g.
     * "{{myvar}}")
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayExtraRoutes6>;
    }>;
    /**
     * Property key is the profile name
     */
    idpProfiles?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayIdpProfiles>;
    }>;
    image1Url?: pulumi.Input<string>;
    image2Url?: pulumi.Input<string>;
    image3Url?: pulumi.Input<string>;
    /**
     * Property key is the network name
     */
    ipConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayIpConfigs>;
    }>;
    /**
     * Device MAC address
     */
    mac?: pulumi.Input<string>;
    managed?: pulumi.Input<boolean>;
    /**
     * Map where the device belongs to
     */
    mapId?: pulumi.Input<string>;
    /**
     * Device Model
     */
    model?: pulumi.Input<string>;
    mspId?: pulumi.Input<string>;
    name?: pulumi.Input<string>;
    networks?: pulumi.Input<pulumi.Input<inputs.device.GatewayNetwork>[]>;
    notes?: pulumi.Input<string>;
    ntpServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Out-of-band (vme/em0/fxp0) IP config
     */
    oobIpConfig?: pulumi.Input<inputs.device.GatewayOobIpConfig>;
    orgId?: pulumi.Input<string>;
    /**
     * Property key is the path name
     */
    pathPreferences?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayPathPreferences>;
    }>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    portConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayPortConfig>;
    }>;
    portMirroring?: pulumi.Input<inputs.device.GatewayPortMirroring>;
    /**
     * Auto assigned if not set
     */
    routerId?: pulumi.Input<string>;
    /**
     * Property key is the routing policy name
     */
    routingPolicies?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayRoutingPolicies>;
    }>;
    /**
     * Device Serial
     */
    serial?: pulumi.Input<string>;
    servicePolicies?: pulumi.Input<pulumi.Input<inputs.device.GatewayServicePolicy>[]>;
    siteId?: pulumi.Input<string>;
    /**
     * Property key is the tunnel name
     */
    tunnelConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayTunnelConfigs>;
    }>;
    tunnelProviderOptions?: pulumi.Input<inputs.device.GatewayTunnelProviderOptions>;
    /**
     * Device Type. enum: `gateway`
     */
    type?: pulumi.Input<string>;
    /**
     * 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>;
    }>;
    vrfConfig?: pulumi.Input<inputs.device.GatewayVrfConfig>;
    /**
     * Property key is the network name
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayVrfInstances>;
    }>;
    /**
     * X in pixel
     */
    x?: pulumi.Input<number>;
    /**
     * Y in pixel
     */
    y?: pulumi.Input<number>;
}
/**
 * The set of arguments for constructing a Gateway resource.
 */
export interface GatewayArgs {
    /**
     * additional CLI commands to append to the generated Junos config. **Note**: no check is done
     */
    additionalConfigCmds?: pulumi.Input<pulumi.Input<string>[]>;
    bgpConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayBgpConfig>;
    }>;
    deviceId: pulumi.Input<string>;
    dhcpdConfig?: pulumi.Input<inputs.device.GatewayDhcpdConfig>;
    /**
     * 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"), the destination Network name or a variable (e.g. "{{myvar}}")
     */
    extraRoutes?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayExtraRoutes>;
    }>;
    /**
     * Property key is the destination CIDR (e.g. "2a02:1234:420a:10c9::/64"), the destination Network name or a variable (e.g.
     * "{{myvar}}")
     */
    extraRoutes6?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayExtraRoutes6>;
    }>;
    /**
     * Property key is the profile name
     */
    idpProfiles?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayIdpProfiles>;
    }>;
    /**
     * Property key is the network name
     */
    ipConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayIpConfigs>;
    }>;
    managed?: pulumi.Input<boolean>;
    /**
     * Map where the device belongs to
     */
    mapId?: pulumi.Input<string>;
    mspId?: pulumi.Input<string>;
    name?: pulumi.Input<string>;
    networks?: pulumi.Input<pulumi.Input<inputs.device.GatewayNetwork>[]>;
    notes?: pulumi.Input<string>;
    ntpServers?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Out-of-band (vme/em0/fxp0) IP config
     */
    oobIpConfig?: pulumi.Input<inputs.device.GatewayOobIpConfig>;
    /**
     * Property key is the path name
     */
    pathPreferences?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayPathPreferences>;
    }>;
    /**
     * Property key is the port name or range (e.g. "ge-0/0/0-10")
     */
    portConfig?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayPortConfig>;
    }>;
    portMirroring?: pulumi.Input<inputs.device.GatewayPortMirroring>;
    /**
     * Auto assigned if not set
     */
    routerId?: pulumi.Input<string>;
    /**
     * Property key is the routing policy name
     */
    routingPolicies?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayRoutingPolicies>;
    }>;
    servicePolicies?: pulumi.Input<pulumi.Input<inputs.device.GatewayServicePolicy>[]>;
    siteId: pulumi.Input<string>;
    /**
     * Property key is the tunnel name
     */
    tunnelConfigs?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayTunnelConfigs>;
    }>;
    tunnelProviderOptions?: pulumi.Input<inputs.device.GatewayTunnelProviderOptions>;
    /**
     * 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>;
    }>;
    vrfConfig?: pulumi.Input<inputs.device.GatewayVrfConfig>;
    /**
     * Property key is the network name
     */
    vrfInstances?: pulumi.Input<{
        [key: string]: pulumi.Input<inputs.device.GatewayVrfInstances>;
    }>;
    /**
     * X in pixel
     */
    x?: pulumi.Input<number>;
    /**
     * Y in pixel
     */
    y?: pulumi.Input<number>;
}
