import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class OriginGroup {
    Id: Value<string>;
    FailoverCriteria: OriginGroupFailoverCriteria;
    Members: OriginGroupMembers;
    constructor(properties: OriginGroup);
}
export declare class Restrictions {
    GeoRestriction: GeoRestriction;
    constructor(properties: Restrictions);
}
export declare class S3OriginConfig {
    OriginAccessIdentity?: Value<string>;
    constructor(properties: S3OriginConfig);
}
export declare class Logging {
    IncludeCookies?: Value<boolean>;
    Bucket: Value<string>;
    Prefix?: Value<string>;
    constructor(properties: Logging);
}
export declare class LambdaFunctionAssociation {
    IncludeBody?: Value<boolean>;
    EventType?: Value<string>;
    LambdaFunctionARN?: Value<string>;
    constructor(properties: LambdaFunctionAssociation);
}
export declare class ViewerCertificate {
    IamCertificateId?: Value<string>;
    SslSupportMethod?: Value<string>;
    MinimumProtocolVersion?: Value<string>;
    CloudFrontDefaultCertificate?: Value<boolean>;
    AcmCertificateArn?: Value<string>;
    constructor(properties: ViewerCertificate);
}
export declare class DefaultCacheBehavior {
    Compress?: Value<boolean>;
    ForwardedValues: ForwardedValues;
    MaxTTL?: Value<number>;
    FieldLevelEncryptionId?: Value<string>;
    AllowedMethods?: List<Value<string>>;
    DefaultTTL?: Value<number>;
    CachedMethods?: List<Value<string>>;
    LambdaFunctionAssociations?: List<LambdaFunctionAssociation>;
    TrustedSigners?: List<Value<string>>;
    TargetOriginId: Value<string>;
    SmoothStreaming?: Value<boolean>;
    MinTTL?: Value<number>;
    ViewerProtocolPolicy: Value<string>;
    constructor(properties: DefaultCacheBehavior);
}
export declare class ForwardedValues {
    Cookies?: Cookies;
    Headers?: List<Value<string>>;
    QueryString: Value<boolean>;
    QueryStringCacheKeys?: List<Value<string>>;
    constructor(properties: ForwardedValues);
}
export declare class OriginGroupFailoverCriteria {
    StatusCodes: StatusCodes;
    constructor(properties: OriginGroupFailoverCriteria);
}
export declare class CustomOriginConfig {
    OriginReadTimeout?: Value<number>;
    HTTPSPort?: Value<number>;
    OriginKeepaliveTimeout?: Value<number>;
    OriginSSLProtocols?: List<Value<string>>;
    HTTPPort?: Value<number>;
    OriginProtocolPolicy: Value<string>;
    constructor(properties: CustomOriginConfig);
}
export declare class OriginGroups {
    Quantity: Value<number>;
    Items?: List<OriginGroup>;
    constructor(properties: OriginGroups);
}
export declare class GeoRestriction {
    Locations?: List<Value<string>>;
    RestrictionType: Value<string>;
    constructor(properties: GeoRestriction);
}
export declare class Cookies {
    WhitelistedNames?: List<Value<string>>;
    Forward: Value<string>;
    constructor(properties: Cookies);
}
export declare class OriginGroupMembers {
    Quantity: Value<number>;
    Items: List<OriginGroupMember>;
    constructor(properties: OriginGroupMembers);
}
export declare class OriginGroupMember {
    OriginId: Value<string>;
    constructor(properties: OriginGroupMember);
}
export declare class CacheBehavior {
    Compress?: Value<boolean>;
    ForwardedValues: ForwardedValues;
    MaxTTL?: Value<number>;
    FieldLevelEncryptionId?: Value<string>;
    AllowedMethods?: List<Value<string>>;
    DefaultTTL?: Value<number>;
    PathPattern: Value<string>;
    CachedMethods?: List<Value<string>>;
    LambdaFunctionAssociations?: List<LambdaFunctionAssociation>;
    TrustedSigners?: List<Value<string>>;
    TargetOriginId: Value<string>;
    SmoothStreaming?: Value<boolean>;
    MinTTL?: Value<number>;
    ViewerProtocolPolicy: Value<string>;
    constructor(properties: CacheBehavior);
}
export declare class StatusCodes {
    Quantity: Value<number>;
    Items: List<Value<number>>;
    constructor(properties: StatusCodes);
}
export declare class OriginCustomHeader {
    HeaderValue: Value<string>;
    HeaderName: Value<string>;
    constructor(properties: OriginCustomHeader);
}
export declare class DistributionConfig {
    Enabled: Value<boolean>;
    DefaultRootObject?: Value<string>;
    ViewerCertificate?: ViewerCertificate;
    Restrictions?: Restrictions;
    Origins?: List<Origin>;
    PriceClass?: Value<string>;
    HttpVersion?: Value<string>;
    WebACLId?: Value<string>;
    DefaultCacheBehavior?: DefaultCacheBehavior;
    OriginGroups?: OriginGroups;
    IPV6Enabled?: Value<boolean>;
    CustomErrorResponses?: List<CustomErrorResponse>;
    Aliases?: List<Value<string>>;
    Comment?: Value<string>;
    CacheBehaviors?: List<CacheBehavior>;
    Logging?: Logging;
    constructor(properties: DistributionConfig);
}
export declare class CustomErrorResponse {
    ResponseCode?: Value<number>;
    ErrorCachingMinTTL?: Value<number>;
    ErrorCode: Value<number>;
    ResponsePagePath?: Value<string>;
    constructor(properties: CustomErrorResponse);
}
export declare class Origin {
    OriginCustomHeaders?: List<OriginCustomHeader>;
    DomainName: Value<string>;
    S3OriginConfig?: S3OriginConfig;
    OriginPath?: Value<string>;
    Id: Value<string>;
    CustomOriginConfig?: CustomOriginConfig;
    constructor(properties: Origin);
}
export interface DistributionProperties {
    DistributionConfig: DistributionConfig;
    Tags?: List<Inner_ResourceTag>;
}
export default class Inner_Distribution extends ResourceBase<DistributionProperties> {
    static OriginGroup: typeof OriginGroup;
    static Restrictions: typeof Restrictions;
    static S3OriginConfig: typeof S3OriginConfig;
    static Logging: typeof Logging;
    static LambdaFunctionAssociation: typeof LambdaFunctionAssociation;
    static ViewerCertificate: typeof ViewerCertificate;
    static DefaultCacheBehavior: typeof DefaultCacheBehavior;
    static ForwardedValues: typeof ForwardedValues;
    static OriginGroupFailoverCriteria: typeof OriginGroupFailoverCriteria;
    static CustomOriginConfig: typeof CustomOriginConfig;
    static OriginGroups: typeof OriginGroups;
    static GeoRestriction: typeof GeoRestriction;
    static Cookies: typeof Cookies;
    static OriginGroupMembers: typeof OriginGroupMembers;
    static OriginGroupMember: typeof OriginGroupMember;
    static CacheBehavior: typeof CacheBehavior;
    static StatusCodes: typeof StatusCodes;
    static OriginCustomHeader: typeof OriginCustomHeader;
    static DistributionConfig: typeof DistributionConfig;
    static CustomErrorResponse: typeof CustomErrorResponse;
    static Origin: typeof Origin;
    constructor(properties: DistributionProperties);
}
