import { Value } from '../../cloudformation/Value';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type LayerVersionPermissionAttributes = {
    Id: Attribute<string>;
};
export type LayerVersionPermission = AwsResource<'AWS::Lambda::LayerVersionPermission', LayerVersionPermissionProperties, LayerVersionPermissionAttributes>;
/**
  The <code>AWS::Lambda::LayerVersionPermission</code> resource adds permissions to the resource-based policy of a version of an <a href="https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html">Lambda layer</a>. Use this action to grant layer usage permission to other accounts. You can grant permission to a single account, all AWS accounts, or all accounts in an organization.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html">the AWS Docs</a>
*/
export declare function layerVersionPermission(layerVersionPermissionProps: LayerVersionPermissionProperties): LayerVersionPermission;
/**
  The <code>AWS::Lambda::LayerVersionPermission</code> resource adds permissions to the resource-based policy of a version of an <a href="https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html">Lambda layer</a>. Use this action to grant layer usage permission to other accounts. You can grant permission to a single account, all AWS accounts, or all accounts in an organization.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html">the AWS Docs</a>
*/
export interface LayerVersionPermissionProperties {
    /** <code>Action</code>  <a name="cfn-lambda-layerversionpermission-action"></a>
  The API action that grants access to the layer. For example, <code>lambda:GetLayerVersion</code>.<br />
  
  Required: Yes<br />
  
  Maximum: <code>22</code><br />
  
  Pattern: <code>lambda:GetLayerVersion</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> */
    action: Value<string>;
    /** <code>LayerVersionArn</code>  <a name="cfn-lambda-layerversionpermission-layerversionarn"></a>
  The name or Amazon Resource Name (ARN) of the layer.<br />
  
  Required: Yes<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>140</code><br />
  
  Pattern: <code>(arn:[a-zA-Z0-9-]+:lambda:[a-zA-Z0-9-]+:\d{12}:layer:[a-zA-Z0-9-_]+)|[a-zA-Z0-9-_]+</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> */
    layerVersionArn: Value<string>;
    /** <code>OrganizationId</code>  <a name="cfn-lambda-layerversionpermission-organizationid"></a>
  With the principal set to <code>*</code>, grant permission to all accounts in the specified organization.<br />
  
  Required: No<br />
  
  Maximum: <code>34</code><br />
  
  Pattern: <code>o-[a-z0-9]{10,32}</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> */
    organizationId?: Value<string>;
    /** <code>Principal</code>  <a name="cfn-lambda-layerversionpermission-principal"></a>
  An account ID, or <code>*</code> to grant layer usage permission to all accounts in an organization, or all AWS accounts (if <code>organizationId</code> is not specified). For the last case, make sure that you really do want all AWS accounts to have usage permission to this layer.<br />
  
  Required: Yes<br />
  
  Pattern: <code>\d{12}|\*|arn:(aws[a-zA-Z-]*):iam::\d{12}:root</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> */
    principal: Value<string>;
}
