import { Resource } from '@aws-cdk/core';
import { Construct } from 'constructs';
/**
 * Represents a Origin Request Policy
 */
export interface IOriginRequestPolicy {
    /**
     * The ID of the origin request policy
     * @attribute
     */
    readonly originRequestPolicyId: string;
}
/**
 * Properties for creating a Origin Request Policy
 */
export interface OriginRequestPolicyProps {
    /**
     * A unique name to identify the origin request policy.
     * The name must only include '-', '_', or alphanumeric characters.
     * @default - generated from the `id`
     */
    readonly originRequestPolicyName?: string;
    /**
     * A comment to describe the origin request policy.
     * @default - no comment
     */
    readonly comment?: string;
    /**
     * The cookies from viewer requests to include in origin requests.
     * @default OriginRequestCookieBehavior.none()
     */
    readonly cookieBehavior?: OriginRequestCookieBehavior;
    /**
     * The HTTP headers to include in origin requests. These can include headers from viewer requests and additional headers added by CloudFront.
     * @default OriginRequestHeaderBehavior.none()
     */
    readonly headerBehavior?: OriginRequestHeaderBehavior;
    /**
     * The URL query strings from viewer requests to include in origin requests.
     * @default OriginRequestQueryStringBehavior.none()
     */
    readonly queryStringBehavior?: OriginRequestQueryStringBehavior;
}
/**
 * A Origin Request Policy configuration.
 *
 * @resource AWS::CloudFront::OriginRequestPolicy
 */
export declare class OriginRequestPolicy extends Resource implements IOriginRequestPolicy {
    /** This policy includes only the User-Agent and Referer headers. It doesn’t include any query strings or cookies. */
    static readonly USER_AGENT_REFERER_HEADERS: IOriginRequestPolicy;
    /** This policy includes the header that enables cross-origin resource sharing (CORS) requests when the origin is a custom origin. */
    static readonly CORS_CUSTOM_ORIGIN: IOriginRequestPolicy;
    /** This policy includes the headers that enable cross-origin resource sharing (CORS) requests when the origin is an Amazon S3 bucket. */
    static readonly CORS_S3_ORIGIN: IOriginRequestPolicy;
    /** This policy includes all values (query strings, headers, and cookies) in the viewer request. */
    static readonly ALL_VIEWER: IOriginRequestPolicy;
    /** This policy is designed for use with an origin that is an AWS Elemental MediaTailor endpoint. */
    static readonly ELEMENTAL_MEDIA_TAILOR: IOriginRequestPolicy;
    /** Imports a Origin Request Policy from its id. */
    static fromOriginRequestPolicyId(scope: Construct, id: string, originRequestPolicyId: string): IOriginRequestPolicy;
    /** Use an existing managed origin request policy. */
    private static fromManagedOriginRequestPolicy;
    readonly originRequestPolicyId: string;
    constructor(scope: Construct, id: string, props?: OriginRequestPolicyProps);
}
/**
 * Determines whether any cookies in viewer requests (and if so, which cookies)
 * are included in requests that CloudFront sends to the origin.
 */
export declare class OriginRequestCookieBehavior {
    /**
     * Cookies in viewer requests are not included in requests that CloudFront sends to the origin.
     * Any cookies that are listed in a CachePolicy are still included in origin requests.
     */
    static none(): OriginRequestCookieBehavior;
    /** All cookies in viewer requests are included in requests that CloudFront sends to the origin. */
    static all(): OriginRequestCookieBehavior;
    /** Only the provided `cookies` are included in requests that CloudFront sends to the origin. */
    static allowList(...cookies: string[]): OriginRequestCookieBehavior;
    /** The behavior of cookies: allow all, none or an allow list. */
    readonly behavior: string;
    /** The cookies to allow, if the behavior is an allow list. */
    readonly cookies?: string[];
    private constructor();
}
/**
 * Determines whether any HTTP headers (and if so, which headers) are included in requests that CloudFront sends to the origin.
 */
export declare class OriginRequestHeaderBehavior {
    /**
     * HTTP headers are not included in requests that CloudFront sends to the origin.
     * Any headers that are listed in a CachePolicy are still included in origin requests.
     */
    static none(): OriginRequestHeaderBehavior;
    /**
     * All HTTP headers in viewer requests are included in requests that CloudFront sends to the origin.
     * Additionally, any additional CloudFront headers provided are included; the additional headers are added by CloudFront.
     * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-cloudfront-headers.html
     */
    static all(...cloudfrontHeaders: string[]): OriginRequestHeaderBehavior;
    /** Listed headers are included in requests that CloudFront sends to the origin. */
    static allowList(...headers: string[]): OriginRequestHeaderBehavior;
    /** The behavior of headers: allow all, none or an allow list. */
    readonly behavior: string;
    /** The headers for the allow list or the included CloudFront headers, if applicable. */
    readonly headers?: string[];
    private constructor();
}
/**
 * Determines whether any URL query strings in viewer requests (and if so, which query strings)
 * are included in requests that CloudFront sends to the origin.
 */
export declare class OriginRequestQueryStringBehavior {
    /**
     * Query strings in viewer requests are not included in requests that CloudFront sends to the origin.
     * Any query strings that are listed in a CachePolicy are still included in origin requests.
     */
    static none(): OriginRequestQueryStringBehavior;
    /** All query strings in viewer requests are included in requests that CloudFront sends to the origin. */
    static all(): OriginRequestQueryStringBehavior;
    /** Only the provided `queryStrings` are included in requests that CloudFront sends to the origin. */
    static allowList(...queryStrings: string[]): OriginRequestQueryStringBehavior;
    /** The behavior of query strings -- allow all, none, or only an allow list. */
    readonly behavior: string;
    /** The query strings to allow, if the behavior is an allow list. */
    readonly queryStrings?: string[];
    private constructor();
}
