import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Provides a resource to manage private zone resolver rule
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as volcengine from "@volcengine/pulumi";
 *
 * const foo = new volcengine.private_zone.ResolverRule("foo", {
 *     endpointId: 346,
 *     forwardIps: [{
 *         ip: "10.199.38.19",
 *         port: 33,
 *     }],
 *     projectName: "default",
 *     tags: [{
 *         key: "k1",
 *         value: "v1",
 *     }],
 *     type: "OUTBOUND",
 *     vpcs: [{
 *         region: "cn-beijing",
 *         vpcId: "vpc-13f9uuuqfdjb43n6nu5p1****",
 *     }],
 *     zoneNames: ["www.baidu.com"],
 * });
 * ```
 *
 * ## Import
 *
 * PrivateZoneResolverRule can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import volcengine:private_zone/resolverRule:ResolverRule default resource_id
 * ```
 */
export declare class ResolverRule extends pulumi.CustomResource {
    /**
     * Get an existing ResolverRule 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?: ResolverRuleState, opts?: pulumi.CustomResourceOptions): ResolverRule;
    /**
     * Returns true if the given object is an instance of ResolverRule.  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 ResolverRule;
    /**
     * Terminal node ID. This parameter is only valid and required when the Type parameter is OUTBOUND.
     */
    readonly endpointId: pulumi.Output<number | undefined>;
    /**
     * The endpoint trn of the private zone resolver rule. Format: trn:private_zone::accountId:endpoint/endpointId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly endpointTrn: pulumi.Output<string | undefined>;
    /**
     * IP address and port of external DNS server. You can add up to 10 IP addresses. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    readonly forwardIps: pulumi.Output<outputs.private_zone.ResolverRuleForwardIp[] | undefined>;
    /**
     * The operator of the exit IP address of the recursive DNS server. This parameter is only valid when the Type parameter is LINE and is a required parameter. MOBILE, TELECOM, UNICOM.
     */
    readonly line: pulumi.Output<string | undefined>;
    /**
     * The name of the rule.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The project name of the private zone resolver rule.
     */
    readonly projectName: pulumi.Output<string>;
    /**
     * Tags.
     */
    readonly tags: pulumi.Output<outputs.private_zone.ResolverRuleTag[] | undefined>;
    /**
     * Forwarding rule types. OUTBOUND: Forward to external DNS servers. LINE: Set the recursive DNS server used for recursive resolution to the recursive DNS server of the Volcano Engine PublicDNS, and customize the operator's exit IP address for the recursive DNS server.
     */
    readonly type: pulumi.Output<string>;
    /**
     * The vpc trns of the private zone resolver rule. Format: trn:vpc:region:accountId:vpc/vpcId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly vpcTrns: pulumi.Output<string[] | undefined>;
    /**
     * The parameter name <region> is a variable that represents the region where the VPC is located, such as cn-beijing. The parameter value can include one or more VPC IDs, such as vpc-2750bd1. For example, if you associate a VPC in the cn-beijing region with a domain name and the VPC ID is vpc-2d6si87atfh1c58ozfd0nzq8k, the parameter would be "cn-beijing":["vpc-2d6si87atfh1c58ozfd0nzq8k"]. You can add one or more regions. When the Type parameter is OUTBOUND, the VPC region must be the same as the region where the endpoint is located.
     */
    readonly vpcs: pulumi.Output<outputs.private_zone.ResolverRuleVpc[]>;
    /**
     * Domain names associated with forwarding rules. You can enter one or more domain names. Up to 500 domain names are supported. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    readonly zoneNames: pulumi.Output<string[] | undefined>;
    /**
     * Create a ResolverRule 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: ResolverRuleArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ResolverRule resources.
 */
export interface ResolverRuleState {
    /**
     * Terminal node ID. This parameter is only valid and required when the Type parameter is OUTBOUND.
     */
    endpointId?: pulumi.Input<number>;
    /**
     * The endpoint trn of the private zone resolver rule. Format: trn:private_zone::accountId:endpoint/endpointId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    endpointTrn?: pulumi.Input<string>;
    /**
     * IP address and port of external DNS server. You can add up to 10 IP addresses. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    forwardIps?: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleForwardIp>[]>;
    /**
     * The operator of the exit IP address of the recursive DNS server. This parameter is only valid when the Type parameter is LINE and is a required parameter. MOBILE, TELECOM, UNICOM.
     */
    line?: pulumi.Input<string>;
    /**
     * The name of the rule.
     */
    name?: pulumi.Input<string>;
    /**
     * The project name of the private zone resolver rule.
     */
    projectName?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleTag>[]>;
    /**
     * Forwarding rule types. OUTBOUND: Forward to external DNS servers. LINE: Set the recursive DNS server used for recursive resolution to the recursive DNS server of the Volcano Engine PublicDNS, and customize the operator's exit IP address for the recursive DNS server.
     */
    type?: pulumi.Input<string>;
    /**
     * The vpc trns of the private zone resolver rule. Format: trn:vpc:region:accountId:vpc/vpcId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    vpcTrns?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The parameter name <region> is a variable that represents the region where the VPC is located, such as cn-beijing. The parameter value can include one or more VPC IDs, such as vpc-2750bd1. For example, if you associate a VPC in the cn-beijing region with a domain name and the VPC ID is vpc-2d6si87atfh1c58ozfd0nzq8k, the parameter would be "cn-beijing":["vpc-2d6si87atfh1c58ozfd0nzq8k"]. You can add one or more regions. When the Type parameter is OUTBOUND, the VPC region must be the same as the region where the endpoint is located.
     */
    vpcs?: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleVpc>[]>;
    /**
     * Domain names associated with forwarding rules. You can enter one or more domain names. Up to 500 domain names are supported. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    zoneNames?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
 * The set of arguments for constructing a ResolverRule resource.
 */
export interface ResolverRuleArgs {
    /**
     * Terminal node ID. This parameter is only valid and required when the Type parameter is OUTBOUND.
     */
    endpointId?: pulumi.Input<number>;
    /**
     * The endpoint trn of the private zone resolver rule. Format: trn:private_zone::accountId:endpoint/endpointId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    endpointTrn?: pulumi.Input<string>;
    /**
     * IP address and port of external DNS server. You can add up to 10 IP addresses. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    forwardIps?: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleForwardIp>[]>;
    /**
     * The operator of the exit IP address of the recursive DNS server. This parameter is only valid when the Type parameter is LINE and is a required parameter. MOBILE, TELECOM, UNICOM.
     */
    line?: pulumi.Input<string>;
    /**
     * The name of the rule.
     */
    name?: pulumi.Input<string>;
    /**
     * The project name of the private zone resolver rule.
     */
    projectName?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleTag>[]>;
    /**
     * Forwarding rule types. OUTBOUND: Forward to external DNS servers. LINE: Set the recursive DNS server used for recursive resolution to the recursive DNS server of the Volcano Engine PublicDNS, and customize the operator's exit IP address for the recursive DNS server.
     */
    type: pulumi.Input<string>;
    /**
     * The vpc trns of the private zone resolver rule. Format: trn:vpc:region:accountId:vpc/vpcId. This field is only effected when creating resource.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    vpcTrns?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The parameter name <region> is a variable that represents the region where the VPC is located, such as cn-beijing. The parameter value can include one or more VPC IDs, such as vpc-2750bd1. For example, if you associate a VPC in the cn-beijing region with a domain name and the VPC ID is vpc-2d6si87atfh1c58ozfd0nzq8k, the parameter would be "cn-beijing":["vpc-2d6si87atfh1c58ozfd0nzq8k"]. You can add one or more regions. When the Type parameter is OUTBOUND, the VPC region must be the same as the region where the endpoint is located.
     */
    vpcs: pulumi.Input<pulumi.Input<inputs.private_zone.ResolverRuleVpc>[]>;
    /**
     * Domain names associated with forwarding rules. You can enter one or more domain names. Up to 500 domain names are supported. This parameter is only valid when the Type parameter is OUTBOUND and is a required parameter.
     */
    zoneNames?: pulumi.Input<pulumi.Input<string>[]>;
}
