import { Value } from '../../../cloudformation/Value';
import { OriginCustomHeaderProps } from './OriginCustomHeaderProps';
import { OriginShieldProps } from './OriginShieldProps';
import { S3OriginConfigProps } from './S3OriginConfigProps';
import { CustomOriginConfigProps } from './CustomOriginConfigProps';
/**
  An origin.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html">the AWS Docs</a>
*/
export interface OriginProps {
    /** <code>ConnectionTimeout</code>  <a name="cfn-cloudfront-distribution-origin-connectiontimeout"></a>
  The number of seconds that CloudFront waits when trying to establish a connection to the origin. The minimum timeout is 1 second, the maximum is 10 seconds, and the default (if you don’t specify otherwise) is 10 seconds.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-timeout">Origin Connection Timeout</a> in the
  Amazon CloudFront Developer Guide: 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> */
    connectionTimeout?: Value<number>;
    /** <code>OriginAccessControlId</code>  <a name="cfn-cloudfront-distribution-origin-originaccesscontrolid"></a>
  The unique identifier of an origin access control for this origin.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html">Restricting access to an Amazon S3 origin</a> in the
  Amazon CloudFront Developer Guide: 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> */
    originAccessControlId?: Value<string>;
    /** <code>ConnectionAttempts</code>  <a name="cfn-cloudfront-distribution-origin-connectionattempts"></a>
  The number of times that CloudFront attempts to connect to the origin. The minimum number is 1, the maximum is 3, and the default (if you don’t specify otherwise) is 3.<br />
  For a custom origin (including an Amazon S3 bucket that’s configured with static website hosting), this value also specifies the number of times that CloudFront attempts to get a response from the origin, in the case of an <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout">Origin Response Timeout</a>.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-attempts">Origin Connection Attempts</a> in the
  Amazon CloudFront Developer Guide: 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> */
    connectionAttempts?: Value<number>;
    /** <code>OriginCustomHeaders</code>  <a name="cfn-cloudfront-distribution-origin-origincustomheaders"></a>
  A list of HTTP header names and values that CloudFront adds to the requests that it sends to the origin.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/add-origin-custom-headers.html">Adding Custom Headers to Origin Requests</a> in the
  Amazon CloudFront Developer Guide: 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> */
    originCustomHeaders?: OriginCustomHeaderProps[];
    /** <code>DomainName</code>  <a name="cfn-cloudfront-distribution-origin-domainname"></a>
  The domain name for the origin.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName">Origin Domain Name</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> */
    domainName: Value<string>;
    /** <code>OriginShield</code>  <a name="cfn-cloudfront-distribution-origin-originshield"></a>
  CloudFront Origin Shield. Using Origin Shield can help reduce the load on your origin.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html">Using Origin Shield</a> in the
  Amazon CloudFront Developer Guide: 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> */
    originShield?: OriginShieldProps;
    /** <code>S3OriginConfig</code>  <a name="cfn-cloudfront-distribution-origin-s3originconfig"></a>
  Use this type to specify an origin that is an Amazon S3 bucket that is not configured with static website hosting. To specify any other type of origin, including an Amazon S3 bucket that is configured with static website hosting, use the <code>CustomOriginConfig</code> type instead.<br />
  
  Required: Conditional<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> */
    s3OriginConfig?: S3OriginConfigProps;
    /** <code>OriginPath</code>  <a name="cfn-cloudfront-distribution-origin-originpath"></a>
  An optional path that CloudFront appends to the origin domain name when CloudFront requests content from the origin.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginPath">Origin Path</a> in the
  Amazon CloudFront Developer Guide: 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> */
    originPath?: Value<string>;
    /** <code>Id</code>  <a name="cfn-cloudfront-distribution-origin-id"></a>
  A unique identifier for the origin. This value must be unique within the distribution.<br />
  Use this value to specify the <code>TargetOriginId</code> in a <code>CacheBehavior</code> or <code>DefaultCacheBehavior</code>.<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> */
    id: Value<string>;
    /** <code>CustomOriginConfig</code>  <a name="cfn-cloudfront-distribution-origin-customoriginconfig"></a>
  Use this type to specify an origin that is not an Amazon S3 bucket, with one exception. If the Amazon S3 bucket is configured with static website hosting, use this type. If the Amazon S3 bucket is not configured with static website hosting, use the <code>S3OriginConfig</code> type instead.<br />
  
  Required: Conditional<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> */
    customOriginConfig?: CustomOriginConfigProps;
}
