import * as pulumi from "@pulumi/pulumi";
import { output as outputs } from "../types";
/**
 * Use this data source to get the list of the available HuaweiCloud security group rules.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const config = new pulumi.Config();
 * const securityGroupId = config.requireObject("securityGroupId");
 * const test = huaweicloud.Vpc.getSecgroupRules({
 *     securityGroupId: securityGroupId,
 * });
 * ```
 */
export declare function getSecgroupRules(args: GetSecgroupRulesArgs, opts?: pulumi.InvokeOptions): Promise<GetSecgroupRulesResult>;
/**
 * A collection of arguments for invoking getSecgroupRules.
 */
export interface GetSecgroupRulesArgs {
    /**
     * Specifies the effective policy of the security group rule used for query.
     * The valid values are as follows:
     * + **allow**
     * + **deny**
     */
    action?: string;
    /**
     * Specifies the security group rule description used for query.
     */
    description?: string;
    /**
     * Specifies the direction of the security group rule used for query.
     * The valid values are as follows:
     * + **ingress**
     * + **egress**
     */
    direction?: string;
    /**
     * Specifies the security group rule protocol type used for query.
     * The value can be **tcp**, **udp**, **icmp**, **icmpv6** or IP protocol number, if empty, it indicates support for
     * all protocols.
     */
    protocol?: string;
    /**
     * Specifies the region in which to obtain the security group rules. If omitted, the
     * provider-level region will be used.
     */
    region?: string;
    /**
     * Specifies the remote security group ID used for query.
     */
    remoteGroupId?: string;
    /**
     * Specifies the security group rule ID used for query.
     */
    ruleId?: string;
    /**
     * Specifies the security group ID that the rule should belong to.
     */
    securityGroupId: string;
}
/**
 * A collection of values returned by getSecgroupRules.
 */
export interface GetSecgroupRulesResult {
    /**
     * The effective policy of the security group rule.
     */
    readonly action?: string;
    /**
     * The description of the security group rule.
     */
    readonly description?: string;
    /**
     * The direction of the security group rule.
     */
    readonly direction?: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    /**
     * The security group rule protocol type.
     */
    readonly protocol?: string;
    readonly region: string;
    /**
     * The remote security group ID.
     * This field is mutually exclusive with `remoteIpPrefix` and `remoteAddressGroupId`.
     */
    readonly remoteGroupId?: string;
    readonly ruleId?: string;
    /**
     * All security group rules that match the filter parameters.
     * The rules structure is documented below.
     */
    readonly rules: outputs.Vpc.GetSecgroupRulesRule[];
    /**
     * The security group ID that the rule should belong to.
     */
    readonly securityGroupId: string;
}
export declare function getSecgroupRulesOutput(args: GetSecgroupRulesOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetSecgroupRulesResult>;
/**
 * A collection of arguments for invoking getSecgroupRules.
 */
export interface GetSecgroupRulesOutputArgs {
    /**
     * Specifies the effective policy of the security group rule used for query.
     * The valid values are as follows:
     * + **allow**
     * + **deny**
     */
    action?: pulumi.Input<string>;
    /**
     * Specifies the security group rule description used for query.
     */
    description?: pulumi.Input<string>;
    /**
     * Specifies the direction of the security group rule used for query.
     * The valid values are as follows:
     * + **ingress**
     * + **egress**
     */
    direction?: pulumi.Input<string>;
    /**
     * Specifies the security group rule protocol type used for query.
     * The value can be **tcp**, **udp**, **icmp**, **icmpv6** or IP protocol number, if empty, it indicates support for
     * all protocols.
     */
    protocol?: pulumi.Input<string>;
    /**
     * Specifies the region in which to obtain the security group rules. If omitted, the
     * provider-level region will be used.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the remote security group ID used for query.
     */
    remoteGroupId?: pulumi.Input<string>;
    /**
     * Specifies the security group rule ID used for query.
     */
    ruleId?: pulumi.Input<string>;
    /**
     * Specifies the security group ID that the rule should belong to.
     */
    securityGroupId: pulumi.Input<string>;
}
