import cdk = require('@aws-cdk/cdk');
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
     */
    interface AccessKeyResourceProps {
        /**
         * ``AWS::IAM::AccessKey.UserName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-username
         */
        userName: string | cdk.Token;
        /**
         * ``AWS::IAM::AccessKey.Serial``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-serial
         */
        serial?: number | cdk.Token;
        /**
         * ``AWS::IAM::AccessKey.Status``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-status
         */
        status?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
     */
    class AccessKeyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute SecretAccessKey
         */
        readonly accessKeySecretAccessKey: AccessKeySecretAccessKey;
        /**
         * Creates a new ``AWS::IAM::AccessKey``.
         *
         * @param parent     the ``cdk.Construct`` this ``AccessKeyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``AccessKeyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: AccessKeyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare class AccessKeySecretAccessKey extends cdk.Token {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
     */
    interface GroupResourceProps {
        /**
         * ``AWS::IAM::Group.GroupName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-groupname
         */
        groupName?: string | cdk.Token;
        /**
         * ``AWS::IAM::Group.ManagedPolicyArns``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-managepolicyarns
         */
        managedPolicyArns?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::Group.Path``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-path
         */
        path?: string | cdk.Token;
        /**
         * ``AWS::IAM::Group.Policies``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-policies
         */
        policies?: Array<GroupResource.PolicyProperty | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
     */
    class GroupResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly groupArn: GroupArn;
        /**
         * Creates a new ``AWS::IAM::Group``.
         *
         * @param parent     the ``cdk.Construct`` this ``GroupResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``GroupResource``
         */
        constructor(parent: cdk.Construct, name: string, properties?: GroupResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace GroupResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
         */
        interface PolicyProperty {
            /**
             * ``GroupResource.PolicyProperty.PolicyDocument``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
             */
            policyDocument: object | cdk.Token;
            /**
             * ``GroupResource.PolicyProperty.PolicyName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
             */
            policyName: string | cdk.Token;
        }
    }
}
export declare class GroupArn extends cdk.Arn {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
     */
    interface InstanceProfileResourceProps {
        /**
         * ``AWS::IAM::InstanceProfile.Roles``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-roles
         */
        roles: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::InstanceProfile.InstanceProfileName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-instanceprofilename
         */
        instanceProfileName?: string | cdk.Token;
        /**
         * ``AWS::IAM::InstanceProfile.Path``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-path
         */
        path?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
     */
    class InstanceProfileResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly instanceProfileArn: InstanceProfileArn;
        /**
         * Creates a new ``AWS::IAM::InstanceProfile``.
         *
         * @param parent     the ``cdk.Construct`` this ``InstanceProfileResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``InstanceProfileResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: InstanceProfileResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare class InstanceProfileArn extends cdk.Arn {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
     */
    interface ManagedPolicyResourceProps {
        /**
         * ``AWS::IAM::ManagedPolicy.PolicyDocument``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-policydocument
         */
        policyDocument: object | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.Description``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-description
         */
        description?: string | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.Groups``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-groups
         */
        groups?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.ManagedPolicyName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-managedpolicyname
         */
        managedPolicyName?: string | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.Path``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-ec2-dhcpoptions-path
         */
        path?: string | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.Roles``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-roles
         */
        roles?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::ManagedPolicy.Users``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-users
         */
        users?: Array<string | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
     */
    class ManagedPolicyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::IAM::ManagedPolicy``.
         *
         * @param parent     the ``cdk.Construct`` this ``ManagedPolicyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``ManagedPolicyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: ManagedPolicyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
     */
    interface PolicyResourceProps {
        /**
         * ``AWS::IAM::Policy.PolicyDocument``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policydocument
         */
        policyDocument: object | cdk.Token;
        /**
         * ``AWS::IAM::Policy.PolicyName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policyname
         */
        policyName: string | cdk.Token;
        /**
         * ``AWS::IAM::Policy.Groups``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-groups
         */
        groups?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::Policy.Roles``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-roles
         */
        roles?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::Policy.Users``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-users
         */
        users?: Array<string | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
     */
    class PolicyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::IAM::Policy``.
         *
         * @param parent     the ``cdk.Construct`` this ``PolicyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``PolicyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: PolicyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
     */
    interface RoleResourceProps {
        /**
         * ``AWS::IAM::Role.AssumeRolePolicyDocument``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-assumerolepolicydocument
         */
        assumeRolePolicyDocument: object | cdk.Token;
        /**
         * ``AWS::IAM::Role.ManagedPolicyArns``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns
         */
        managedPolicyArns?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::Role.MaxSessionDuration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-maxsessionduration
         */
        maxSessionDuration?: number | cdk.Token;
        /**
         * ``AWS::IAM::Role.Path``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path
         */
        path?: string | cdk.Token;
        /**
         * ``AWS::IAM::Role.Policies``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-policies
         */
        policies?: Array<RoleResource.PolicyProperty | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::Role.RoleName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-rolename
         */
        roleName?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
     */
    class RoleResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly roleArn: RoleArn;
        /**
         * @cloudformation_attribute RoleId
         */
        readonly roleId: RoleId;
        /**
         * Creates a new ``AWS::IAM::Role``.
         *
         * @param parent     the ``cdk.Construct`` this ``RoleResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``RoleResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: RoleResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace RoleResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
         */
        interface PolicyProperty {
            /**
             * ``RoleResource.PolicyProperty.PolicyDocument``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
             */
            policyDocument: object | cdk.Token;
            /**
             * ``RoleResource.PolicyProperty.PolicyName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
             */
            policyName: string | cdk.Token;
        }
    }
}
export declare class RoleArn extends cdk.Arn {
}
export declare class RoleId extends cdk.Token {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
     */
    interface UserResourceProps {
        /**
         * ``AWS::IAM::User.Groups``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-groups
         */
        groups?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::User.LoginProfile``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-loginprofile
         */
        loginProfile?: UserResource.LoginProfileProperty | cdk.Token;
        /**
         * ``AWS::IAM::User.ManagedPolicyArns``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-managepolicyarns
         */
        managedPolicyArns?: Array<string | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::User.Path``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-path
         */
        path?: string | cdk.Token;
        /**
         * ``AWS::IAM::User.Policies``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-policies
         */
        policies?: Array<UserResource.PolicyProperty | cdk.Token> | cdk.Token;
        /**
         * ``AWS::IAM::User.UserName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-username
         */
        userName?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
     */
    class UserResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly userArn: UserArn;
        /**
         * Creates a new ``AWS::IAM::User``.
         *
         * @param parent     the ``cdk.Construct`` this ``UserResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``UserResource``
         */
        constructor(parent: cdk.Construct, name: string, properties?: UserResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace UserResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html
         */
        interface LoginProfileProperty {
            /**
             * ``UserResource.LoginProfileProperty.Password``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html#cfn-iam-user-loginprofile-password
             */
            password: string | cdk.Token;
            /**
             * ``UserResource.LoginProfileProperty.PasswordResetRequired``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html#cfn-iam-user-loginprofile-passwordresetrequired
             */
            passwordResetRequired?: boolean | cdk.Token;
        }
    }
    namespace UserResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
         */
        interface PolicyProperty {
            /**
             * ``UserResource.PolicyProperty.PolicyDocument``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
             */
            policyDocument: object | cdk.Token;
            /**
             * ``UserResource.PolicyProperty.PolicyName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
             */
            policyName: string | cdk.Token;
        }
    }
}
export declare class UserArn extends cdk.Arn {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
     */
    interface UserToGroupAdditionResourceProps {
        /**
         * ``AWS::IAM::UserToGroupAddition.GroupName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html#cfn-iam-addusertogroup-groupname
         */
        groupName: string | cdk.Token;
        /**
         * ``AWS::IAM::UserToGroupAddition.Users``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html#cfn-iam-addusertogroup-users
         */
        users: Array<string | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
     */
    class UserToGroupAdditionResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::IAM::UserToGroupAddition``.
         *
         * @param parent     the ``cdk.Construct`` this ``UserToGroupAdditionResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``UserToGroupAdditionResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: UserToGroupAdditionResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
