import { FunctionConfigProps } from './function/FunctionConfigProps';
import { FunctionMetadataProps } from './function/FunctionMetadataProps';
import { Value } from '../../cloudformation/Value';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type FunctionAttributes = {
    FunctionARN: Attribute<string>;
    FunctionMetadata_FunctionARN: Attribute<string>;
    Stage: Attribute<string>;
};
export type Function = AwsResource<'AWS::CloudFront::Function', FunctionProperties, FunctionAttributes>;
/**
  Creates a CloudFront function.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-function.html">the AWS Docs</a>
*/
export declare function createFunction(functionProps: FunctionProperties): Function;
/**
  Creates a CloudFront function.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-function.html">the AWS Docs</a>
*/
export interface FunctionProperties {
    /** <code>FunctionConfig</code>  <a name="cfn-cloudfront-function-functionconfig"></a>
  Contains configuration information about a CloudFront function.<br />
  
  Required: Yes<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> */
    functionConfig: FunctionConfigProps;
    /** <code>FunctionMetadata</code>  <a name="cfn-cloudfront-function-functionmetadata"></a>
  Contains metadata about a CloudFront function.<br />
  
  Required: No<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> */
    functionMetadata?: FunctionMetadataProps;
    /** <code>AutoPublish</code>  <a name="cfn-cloudfront-function-autopublish"></a>
  A flag that determines whether to automatically publish the function to the <code>LIVE</code> stage when it’s created. To automatically publish to the <code>LIVE</code> stage, set this property to <code>true</code>.<br />
  
  Required: No<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> */
    autoPublish?: Value<boolean>;
    /** <code>FunctionCode</code>  <a name="cfn-cloudfront-function-functioncode"></a>
  The function code. For more information about writing a CloudFront function, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/writing-function-code.html">Writing function code for CloudFront Functions</a> in the
  Amazon CloudFront Developer Guide: br />
  
  Required: Yes<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> */
    functionCode: Value<string>;
    /** <code>Name</code>  <a name="cfn-cloudfront-function-name"></a>
  A name to identify the function.<br />
  
  Required: Yes<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>64</code><br />
  
  Pattern: <code>^[a-zA-Z0-9-_]{1,64}$</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> */
    name: Value<string>;
}
