import { Value } from '../../cloudformation/Value';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type PermissionAttributes = {
    Id: Attribute<string>;
};
export type Permission = AwsResource<'AWS::Lambda::Permission', PermissionProperties, PermissionAttributes>;
/**
  The <code>AWS::Lambda::Permission</code> resource grants an AWS service or another account permission to use a function. You can apply the policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">the AWS Docs</a>
*/
export declare function permission(permissionProps: PermissionProperties): Permission;
/**
  The <code>AWS::Lambda::Permission</code> resource grants an AWS service or another account permission to use a function. You can apply the policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">the AWS Docs</a>
*/
export interface PermissionProperties {
    /** <p> */
    functionName: Value<string>;
    /** <code>Action</code>  <a name="cfn-lambda-permission-action"></a>
  The action that the principal can use on the function. For example, <code>lambda:InvokeFunction</code> or <code>lambda:GetFunction</code>.<br />
  
  Required: Yes<br />
  
  Pattern: <code>(lambda:[*]|lambda:[a-zA-Z]+|[*])</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>EventSourceToken</code>  <a name="cfn-lambda-permission-eventsourcetoken"></a>
  For Alexa Smart Home functions, a token that the invoker must supply.<br />
  
  Required: No<br />
  
  Minimum: <code>0</code><br />
  
  Maximum: <code>256</code><br />
  
  Pattern: <code>[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> */
    eventSourceToken?: Value<string>;
    /** <code>FunctionUrlAuthType</code>  <a name="cfn-lambda-permission-functionurlauthtype"></a>
  The type of authentication that your function URL uses. Set to <code>AWS_IAM</code> if you want to restrict access to authenticated users only. Set to <code>NONE</code> if you want to bypass IAM authentication to create a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html">Security and auth model for Lambda function URLs</a>.<br />
  
  Required: No<br />
  
  Allowed values: <code>AWS_IAM | NONE</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> */
    functionUrlAuthType?: Value<'AWS_IAM' | 'NONE'>;
    /** <code>SourceArn</code>  <a name="cfn-lambda-permission-sourcearn"></a>
  For AWS services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.<br />
  Note that Lambda configures the comparison using the <code>StringLike</code> operator.<br />
  
  Required: No<br />
  
  Pattern: <code>arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)</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> */
    sourceArn?: Value<string>;
    /** <code>SourceAccount</code>  <a name="cfn-lambda-permission-sourceaccount"></a>
  For AWS service, the ID of the AWS account that owns the resource. Use this together with <code>SourceArn</code> to ensure that the specified account owns the resource. It is possible for an Amazon S3 bucket to be deleted by its owner and recreated by another account.<br />
  
  Required: No<br />
  
  Maximum: <code>12</code><br />
  
  Pattern: <code>\d{12}</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> */
    sourceAccount?: Value<string>;
    /** <code>PrincipalOrgID</code>  <a name="cfn-lambda-permission-principalorgid"></a>
  The identifier for your organization in AWS Organizations. Use this to grant permissions to all the AWS accounts under this organization.<br />
  
  Required: No<br />
  
  Minimum: <code>12</code><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> */
    principalOrgID?: Value<string>;
    /** <code>Principal</code>  <a name="cfn-lambda-permission-principal"></a>
  The AWS service or AWS account that invokes the function. If you specify a service, use <code>SourceArn</code> or <code>SourceAccount</code> to limit who can invoke the function through that service.<br />
  
  Required: Yes<br />
  
  Pattern: <code>[^\s]+</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>;
}
