import { Value } from '../../cloudformation/Value';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type ServiceLinkedRoleAttributes = {
    RoleName: Attribute<string>;
};
export type ServiceLinkedRole = AwsResource<'AWS::IAM::ServiceLinkedRole', ServiceLinkedRoleProperties, ServiceLinkedRoleAttributes>;
/**
  Creates an IAM role that is linked to a specific AWS service. The service controls the attached policies and when the role can be deleted. This helps ensure that the service is not broken by an unexpectedly changed or deleted role, which could put your AWS resources into an unknown state. Allowing the service to control the role helps improve service stability and proper cleanup when a service and its role are no longer needed. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html">Using service-linked roles</a> in the <em>IAM User Guide</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html">the AWS Docs</a>
*/
export declare function serviceLinkedRole(serviceLinkedRoleProps?: ServiceLinkedRoleProperties): ServiceLinkedRole;
/**
  Creates an IAM role that is linked to a specific AWS service. The service controls the attached policies and when the role can be deleted. This helps ensure that the service is not broken by an unexpectedly changed or deleted role, which could put your AWS resources into an unknown state. Allowing the service to control the role helps improve service stability and proper cleanup when a service and its role are no longer needed. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html">Using service-linked roles</a> in the <em>IAM User Guide</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html">the AWS Docs</a>
*/
export interface ServiceLinkedRoleProperties {
    /** <code>CustomSuffix</code> for each request. Otherwise the request fails with a duplicate role name error. For example, you could add <code>-1</code> or <code>-debug</code> to the suffix.<br />
  Some services do not support the <code>CustomSuffix</code> parameter. If you provide an optional suffix and the operation fails, try the operation again without the suffix.<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>64</code><br />
  
  Pattern: <code>[\w+=,.@-]+</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    customSuffix?: Value<string>;
    /** <code>Description</code>  <a name="cfn-iam-servicelinkedrole-description"></a>
  The description of the role.<br />
  
  Required: No<br />
  
  Maximum: <code>1000</code><br />
  
  Pattern: <code>[\u0009\u000A\u000D\u0020-\u007E\u00A1-\u00FF]*</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    description?: Value<string>;
    /** <code>AWSServiceName</code>  <a name="cfn-iam-servicelinkedrole-awsservicename"></a>
  The service principal for the AWS service to which this role is attached. You use a string similar to a URL but without the http:// in front. For example: <code>elasticbeanstalk.amazonaws.com</code>.<br />
  Service principals are unique and case-sensitive. To find the exact service principal for your service-linked role, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html">AWS services that work with IAM</a> in the
  IAM User Guide: Look for the services that have **Yes **in the <strong>Service-Linked Role</strong> column. Choose the <strong>Yes</strong> link to view the service-linked role documentation for that service.<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>128</code><br />
  
  Pattern: <code>[\w+=,.@-]+</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    aWSServiceName?: Value<string>;
}
