import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Network Firewall Policy Security Rule resource in Oracle Cloud Infrastructure Network Firewall service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/network-firewall/latest/NetworkFirewallPolicySecurityRule
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/network_firewall
 *
 * Creates a new Security Rule for the Network Firewall Policy.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testNetworkFirewallPolicySecurityRule = new oci.networkfirewall.NetworkFirewallPolicySecurityRule("test_network_firewall_policy_security_rule", {
 *     action: networkFirewallPolicySecurityRuleAction,
 *     name: networkFirewallPolicySecurityRuleName,
 *     condition: {
 *         applications: networkFirewallPolicySecurityRuleConditionApplication,
 *         destinationAddresses: networkFirewallPolicySecurityRuleConditionDestinationAddress,
 *         services: networkFirewallPolicySecurityRuleConditionService,
 *         sourceAddresses: networkFirewallPolicySecurityRuleConditionSourceAddress,
 *         urls: networkFirewallPolicySecurityRuleConditionUrl,
 *     },
 *     networkFirewallPolicyId: testNetworkFirewallPolicy.id,
 *     description: networkFirewallPolicySecurityRuleDescription,
 *     inspection: networkFirewallPolicySecurityRuleInspection,
 *     positions: [{
 *         afterRule: networkFirewallPolicySecurityRulePositionAfterRule,
 *         beforeRule: networkFirewallPolicySecurityRulePositionBeforeRule,
 *     }],
 * });
 * ```
 *
 * ## Import
 *
 * NetworkFirewallPolicySecurityRules can be imported using the `name`, e.g.
 *
 * ```sh
 * $ pulumi import oci:NetworkFirewall/networkFirewallPolicySecurityRule:NetworkFirewallPolicySecurityRule test_network_firewall_policy_security_rule "networkFirewallPolicies/{networkFirewallPolicyId}/securityRules/{securityRuleName}"
 * ```
 */
export declare class NetworkFirewallPolicySecurityRule extends pulumi.CustomResource {
    /**
     * Get an existing NetworkFirewallPolicySecurityRule 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?: NetworkFirewallPolicySecurityRuleState, opts?: pulumi.CustomResourceOptions): NetworkFirewallPolicySecurityRule;
    /**
     * Returns true if the given object is an instance of NetworkFirewallPolicySecurityRule.  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 NetworkFirewallPolicySecurityRule;
    /**
     * (Updatable) Types of Action on the Traffic flow.
     * * ALLOW - Allows the traffic.
     * * DROP - Silently drops the traffic, e.g. without sending a TCP reset.
     * * REJECT - Rejects the traffic, sending a TCP reset to client and/or server as applicable.
     * * INSPECT - Inspects traffic for vulnerability as specified in `inspection`, which may result in rejection.
     */
    readonly action: pulumi.Output<string>;
    /**
     * (Updatable) Criteria to evaluate against network traffic. A match occurs when at least one item in the array associated with each specified property corresponds with the relevant aspect of the traffic. The resources mentioned must already be present in the policy before being referenced in the rule.
     */
    readonly condition: pulumi.Output<outputs.NetworkFirewall.NetworkFirewallPolicySecurityRuleCondition>;
    /**
     * (Updatable) The description of the security rule. This field can be used to add additional info.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * (Updatable) Type of inspection to affect the traffic flow.
     * * INTRUSION_DETECTION - Intrusion detection.
     * * INTRUSION_PREVENTION - Intrusion detection and prevention. Traffic classified as potentially malicious will be rejected as described in `type`.
     */
    readonly inspection: pulumi.Output<string | undefined>;
    /**
     * Name for the Security rule, must be unique within the policy.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Unique Network Firewall Policy identifier
     */
    readonly networkFirewallPolicyId: pulumi.Output<string>;
    /**
     * OCID of the Network Firewall Policy this security rule belongs to.
     */
    readonly parentResourceId: pulumi.Output<string>;
    /**
     * (Updatable) An object which defines the position of the rule. Only one of the following position references should be provided.
     */
    readonly positions: pulumi.Output<outputs.NetworkFirewall.NetworkFirewallPolicySecurityRulePosition[]>;
    readonly priorityOrder: pulumi.Output<string | undefined>;
    /**
     * Create a NetworkFirewallPolicySecurityRule 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: NetworkFirewallPolicySecurityRuleArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering NetworkFirewallPolicySecurityRule resources.
 */
export interface NetworkFirewallPolicySecurityRuleState {
    /**
     * (Updatable) Types of Action on the Traffic flow.
     * * ALLOW - Allows the traffic.
     * * DROP - Silently drops the traffic, e.g. without sending a TCP reset.
     * * REJECT - Rejects the traffic, sending a TCP reset to client and/or server as applicable.
     * * INSPECT - Inspects traffic for vulnerability as specified in `inspection`, which may result in rejection.
     */
    action?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Criteria to evaluate against network traffic. A match occurs when at least one item in the array associated with each specified property corresponds with the relevant aspect of the traffic. The resources mentioned must already be present in the policy before being referenced in the rule.
     */
    condition?: pulumi.Input<inputs.NetworkFirewall.NetworkFirewallPolicySecurityRuleCondition | undefined>;
    /**
     * (Updatable) The description of the security rule. This field can be used to add additional info.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Type of inspection to affect the traffic flow.
     * * INTRUSION_DETECTION - Intrusion detection.
     * * INTRUSION_PREVENTION - Intrusion detection and prevention. Traffic classified as potentially malicious will be rejected as described in `type`.
     */
    inspection?: pulumi.Input<string | undefined>;
    /**
     * Name for the Security rule, must be unique within the policy.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Unique Network Firewall Policy identifier
     */
    networkFirewallPolicyId?: pulumi.Input<string | undefined>;
    /**
     * OCID of the Network Firewall Policy this security rule belongs to.
     */
    parentResourceId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) An object which defines the position of the rule. Only one of the following position references should be provided.
     */
    positions?: pulumi.Input<pulumi.Input<inputs.NetworkFirewall.NetworkFirewallPolicySecurityRulePosition>[] | undefined>;
    priorityOrder?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a NetworkFirewallPolicySecurityRule resource.
 */
export interface NetworkFirewallPolicySecurityRuleArgs {
    /**
     * (Updatable) Types of Action on the Traffic flow.
     * * ALLOW - Allows the traffic.
     * * DROP - Silently drops the traffic, e.g. without sending a TCP reset.
     * * REJECT - Rejects the traffic, sending a TCP reset to client and/or server as applicable.
     * * INSPECT - Inspects traffic for vulnerability as specified in `inspection`, which may result in rejection.
     */
    action: pulumi.Input<string>;
    /**
     * (Updatable) Criteria to evaluate against network traffic. A match occurs when at least one item in the array associated with each specified property corresponds with the relevant aspect of the traffic. The resources mentioned must already be present in the policy before being referenced in the rule.
     */
    condition: pulumi.Input<inputs.NetworkFirewall.NetworkFirewallPolicySecurityRuleCondition>;
    /**
     * (Updatable) The description of the security rule. This field can be used to add additional info.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Type of inspection to affect the traffic flow.
     * * INTRUSION_DETECTION - Intrusion detection.
     * * INTRUSION_PREVENTION - Intrusion detection and prevention. Traffic classified as potentially malicious will be rejected as described in `type`.
     */
    inspection?: pulumi.Input<string | undefined>;
    /**
     * Name for the Security rule, must be unique within the policy.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Unique Network Firewall Policy identifier
     */
    networkFirewallPolicyId: pulumi.Input<string>;
    /**
     * (Updatable) An object which defines the position of the rule. Only one of the following position references should be provided.
     */
    positions?: pulumi.Input<pulumi.Input<inputs.NetworkFirewall.NetworkFirewallPolicySecurityRulePosition>[] | undefined>;
    priorityOrder?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=networkFirewallPolicySecurityRule.d.ts.map