import * as pulumi from "@pulumi/pulumi";
import { output as outputs } from "../types";
/**
 * Use this data source to get the available IAM [Permissions](https://support.huaweicloud.com/intl/en-us/productdesc-iam/iam_01_0023.html#section5),
 * including roles and policies.
 *
 * > **NOTE:** You *must* have IAM read privileges to use this data source.
 *
 * ## Example Usage
 * ### Full Permissions of ECS Service
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const ecsFull = pulumi.output(huaweicloud.Iam.getPermissions({
 *     name: "ECS FullAccess",
 * }));
 * ```
 * ### All System Defined Permissions of ELB Service
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const elbAll = pulumi.output(huaweicloud.Iam.getPermissions({
 *     catalog: "ELB",
 * }));
 * ```
 * ### All Administrator Permissions
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const allAdm = pulumi.output(huaweicloud.Iam.getPermissions({
 *     name: "Administrator",
 * }));
 * ```
 * ### All Custom Policies
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const custom = pulumi.output(huaweicloud.Iam.getPermissions({
 *     type: "custom",
 * }));
 * ```
 */
export declare function getPermissions(args?: GetPermissionsArgs, opts?: pulumi.InvokeOptions): Promise<GetPermissionsResult>;
/**
 * A collection of arguments for invoking getPermissions.
 */
export interface GetPermissionsArgs {
    /**
     * Specifies the service catalog of the permission.
     */
    catalog?: string;
    /**
     * Specifies the permission name or filter condition.
     * + Permission name: For example, if you set this parameter to **ECS FullAccess**, information about the permission will
     * be returned.
     * + Filter condition: For example, if you set this parameter to **Administrator**, all administrator permissions that
     * meet the conditions will be returned.
     */
    name?: string;
    /**
     * Specifies the type of the permission. The default value is **system**, and valid values are
     * as follows:
     * + **system**: The system-defined permissions (including system-defined policies and roles).
     * We can get all **System-defined Permissions** from [HuaweiCloud](https://support.huaweicloud.com/intl/en-us/usermanual-permissions/iam_01_0001.html).
     * + **system-policy**: The system-defined policies.
     * + **system-role**: The system-defined roles.
     * + **custom**: The custom policies.
     */
    type?: string;
}
/**
 * A collection of values returned by getPermissions.
 */
export interface GetPermissionsResult {
    /**
     * The service catalog of the permission.
     */
    readonly catalog?: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    /**
     * The permission name.
     */
    readonly name?: string;
    /**
     * An array of available permissions. The structure is documented below.
     */
    readonly permissions: outputs.Iam.GetPermissionsPermission[];
    readonly type?: string;
}
export declare function getPermissionsOutput(args?: GetPermissionsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetPermissionsResult>;
/**
 * A collection of arguments for invoking getPermissions.
 */
export interface GetPermissionsOutputArgs {
    /**
     * Specifies the service catalog of the permission.
     */
    catalog?: pulumi.Input<string>;
    /**
     * Specifies the permission name or filter condition.
     * + Permission name: For example, if you set this parameter to **ECS FullAccess**, information about the permission will
     * be returned.
     * + Filter condition: For example, if you set this parameter to **Administrator**, all administrator permissions that
     * meet the conditions will be returned.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the type of the permission. The default value is **system**, and valid values are
     * as follows:
     * + **system**: The system-defined permissions (including system-defined policies and roles).
     * We can get all **System-defined Permissions** from [HuaweiCloud](https://support.huaweicloud.com/intl/en-us/usermanual-permissions/iam_01_0001.html).
     * + **system-policy**: The system-defined policies.
     * + **system-role**: The system-defined roles.
     * + **custom**: The custom policies.
     */
    type?: pulumi.Input<string>;
}
