import * as pulumi from "@pulumi/pulumi";
/**
 * Manages an SMS server template resource within HuaweiCloud.
 *
 * ## Example Usage
 * ### A template will create networks during migration
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const demoAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const demoServerTemplate = new huaweicloud.sms.ServerTemplate("demoServerTemplate", {availabilityZone: demoAvailabilityZones.then(demoAvailabilityZones => demoAvailabilityZones.names?[0])});
 * ```
 * ### A template will use the existing networks during migration
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const config = new pulumi.Config();
 * const vpcId = config.requireObject("vpcId");
 * const subentId = config.requireObject("subentId");
 * const secgroupId = config.requireObject("secgroupId");
 * const demoAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const demoServerTemplate = new huaweicloud.sms.ServerTemplate("demoServerTemplate", {
 *     availabilityZone: demoAvailabilityZones.then(demoAvailabilityZones => demoAvailabilityZones.names?[0]),
 *     vpcId: vpcId,
 *     subnetIds: [subentId],
 *     securityGroupIds: [secgroupId],
 * });
 * ```
 *
 * ## Import
 *
 * SMS server templates can be imported by `id`, e.g.
 *
 * ```sh
 *  $ pulumi import huaweicloud:Sms/serverTemplate:ServerTemplate demo 4618ccaf-b4d7-43b9-b958-3df3b885126d
 * ```
 */
export declare class ServerTemplate extends pulumi.CustomResource {
    /**
     * Get an existing ServerTemplate 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?: ServerTemplateState, opts?: pulumi.CustomResourceOptions): ServerTemplate;
    /**
     * Returns true if the given object is an instance of ServerTemplate.  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 ServerTemplate;
    /**
     * Specifies the availability zone where the target server is located.
     */
    readonly availabilityZone: pulumi.Output<string>;
    /**
     * Specifies the bandwidth size in Mbit/s about the public IP address
     * that will be used for migration.
     * The valid value is range from `1` to `2,000`.
     */
    readonly bandwidthSize: pulumi.Output<number | undefined>;
    /**
     * Specifies the flavor ID for the target server.
     */
    readonly flavor: pulumi.Output<string | undefined>;
    /**
     * Specifies the server template name.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Specifies the project ID where the target server is located.
     * If omitted, the default project in the region will be used.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * Specifies the region where the target server is located.
     * If omitted, the provider-level region will be used.
     */
    readonly region: pulumi.Output<string>;
    /**
     * Specifies an array of one or more security group IDs to associate with
     * the target server.
     * If omitted or set to ["autoCreate"], a new security group will be created automatically during migration.
     */
    readonly securityGroupIds: pulumi.Output<string[]>;
    /**
     * Specifies an array of one or more subnet IDs to attach to the target server.
     * If omitted or set to ["autoCreate"], a new subnet will be created automatically during migration.
     */
    readonly subnetIds: pulumi.Output<string[]>;
    /**
     * Specifies the name of the target server. Defaults to the template name.
     */
    readonly targetServerName: pulumi.Output<string>;
    /**
     * Specifies the disk type of the target server.
     * Available values are: **SAS**, **SSD**, defaults to **SAS**.
     */
    readonly volumeType: pulumi.Output<string | undefined>;
    /**
     * Specifies the ID of the VPC which the target server belongs to.
     * If omitted or set to "autoCreate", a new VPC will be created automatically during migration.
     */
    readonly vpcId: pulumi.Output<string>;
    /**
     * The name of the VPC which the target server belongs to.
     */
    readonly vpcName: pulumi.Output<string>;
    /**
     * Create a ServerTemplate 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: ServerTemplateArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ServerTemplate resources.
 */
export interface ServerTemplateState {
    /**
     * Specifies the availability zone where the target server is located.
     */
    availabilityZone?: pulumi.Input<string>;
    /**
     * Specifies the bandwidth size in Mbit/s about the public IP address
     * that will be used for migration.
     * The valid value is range from `1` to `2,000`.
     */
    bandwidthSize?: pulumi.Input<number>;
    /**
     * Specifies the flavor ID for the target server.
     */
    flavor?: pulumi.Input<string>;
    /**
     * Specifies the server template name.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the project ID where the target server is located.
     * If omitted, the default project in the region will be used.
     */
    projectId?: pulumi.Input<string>;
    /**
     * Specifies the region where the target server is located.
     * If omitted, the provider-level region will be used.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies an array of one or more security group IDs to associate with
     * the target server.
     * If omitted or set to ["autoCreate"], a new security group will be created automatically during migration.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies an array of one or more subnet IDs to attach to the target server.
     * If omitted or set to ["autoCreate"], a new subnet will be created automatically during migration.
     */
    subnetIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the name of the target server. Defaults to the template name.
     */
    targetServerName?: pulumi.Input<string>;
    /**
     * Specifies the disk type of the target server.
     * Available values are: **SAS**, **SSD**, defaults to **SAS**.
     */
    volumeType?: pulumi.Input<string>;
    /**
     * Specifies the ID of the VPC which the target server belongs to.
     * If omitted or set to "autoCreate", a new VPC will be created automatically during migration.
     */
    vpcId?: pulumi.Input<string>;
    /**
     * The name of the VPC which the target server belongs to.
     */
    vpcName?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a ServerTemplate resource.
 */
export interface ServerTemplateArgs {
    /**
     * Specifies the availability zone where the target server is located.
     */
    availabilityZone: pulumi.Input<string>;
    /**
     * Specifies the bandwidth size in Mbit/s about the public IP address
     * that will be used for migration.
     * The valid value is range from `1` to `2,000`.
     */
    bandwidthSize?: pulumi.Input<number>;
    /**
     * Specifies the flavor ID for the target server.
     */
    flavor?: pulumi.Input<string>;
    /**
     * Specifies the server template name.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the project ID where the target server is located.
     * If omitted, the default project in the region will be used.
     */
    projectId?: pulumi.Input<string>;
    /**
     * Specifies the region where the target server is located.
     * If omitted, the provider-level region will be used.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies an array of one or more security group IDs to associate with
     * the target server.
     * If omitted or set to ["autoCreate"], a new security group will be created automatically during migration.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies an array of one or more subnet IDs to attach to the target server.
     * If omitted or set to ["autoCreate"], a new subnet will be created automatically during migration.
     */
    subnetIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the name of the target server. Defaults to the template name.
     */
    targetServerName?: pulumi.Input<string>;
    /**
     * Specifies the disk type of the target server.
     * Available values are: **SAS**, **SSD**, defaults to **SAS**.
     */
    volumeType?: pulumi.Input<string>;
    /**
     * Specifies the ID of the VPC which the target server belongs to.
     * If omitted or set to "autoCreate", a new VPC will be created automatically during migration.
     */
    vpcId?: pulumi.Input<string>;
}
