import type { Construct } from 'constructs';
import type { IVpcOriginRef, VpcOriginReference } from './cloudfront.generated';
import type { OriginProtocolPolicy } from '../';
import { OriginSslPolicy } from '../';
import type { IInstance } from '../../aws-ec2';
import type { IApplicationLoadBalancer, INetworkLoadBalancer } from '../../aws-elasticloadbalancingv2';
import type { IResource, ITaggableV2, TagManager } from '../../core';
import { Resource } from '../../core';
/**
 * Represents a VPC origin.
 */
export interface IVpcOrigin extends IResource, IVpcOriginRef {
    /**
     * The VPC origin ARN.
     * @attribute
     */
    readonly vpcOriginArn: string;
    /**
     * The VPC origin ID.
     * @attribute
     */
    readonly vpcOriginId: string;
    /**
     * The domain name of the CloudFront VPC origin endpoint configuration.
     */
    readonly domainName?: string;
}
/**
 * VPC origin endpoint configuration.
 */
export interface VpcOriginOptions {
    /**
     * The HTTP port for the CloudFront VPC origin endpoint configuration.
     * @default 80
     */
    readonly httpPort?: number;
    /**
     * The HTTPS port of the CloudFront VPC origin endpoint configuration.
     * @default 443
     */
    readonly httpsPort?: number;
    /**
     * The name of the CloudFront VPC origin endpoint configuration.
     * @default - generated from the `id`
     */
    readonly vpcOriginName?: string;
    /**
     * The origin protocol policy for the CloudFront VPC origin endpoint configuration.
     * @default OriginProtocolPolicy.MATCH_VIEWER
     */
    readonly protocolPolicy?: OriginProtocolPolicy;
    /**
     * A list that contains allowed SSL/TLS protocols for this distribution.
     * @default - TLSv1.2
     */
    readonly originSslProtocols?: OriginSslPolicy[];
}
/**
 * VPC origin endpoint configuration.
 */
export interface VpcOriginProps extends VpcOriginOptions {
    /**
     * The VPC origin endpoint.
     */
    readonly endpoint: VpcOriginEndpoint;
}
/**
 * The properties to import from the VPC origin
 */
export interface VpcOriginAttributes {
    /**
     * The ARN of the VPC origin.
     *
     * At least one of vpcOriginArn and vpcOriginId must be provided.
     *
     * @default - derived from `vpcOriginId`.
     */
    readonly vpcOriginArn?: string;
    /**
     * The ID of the VPC origin.
     *
     * At least one of vpcOriginArn and vpcOriginId must be provided.
     *
     * @default - derived from `vpcOriginArn`.
     */
    readonly vpcOriginId?: string;
    /**
     * The domain name of the CloudFront VPC origin endpoint configuration.
     * @default - No domain name configured
     */
    readonly domainName?: string;
}
/**
 * Represents the VPC origin endpoint.
 */
export declare abstract class VpcOriginEndpoint {
    /**
     * A VPC origin endpoint from an EC2 instance.
     */
    static ec2Instance(instance: IInstance): VpcOriginEndpoint;
    /**
     * A VPC origin endpoint from an Application Load Balancer.
     */
    static applicationLoadBalancer(alb: IApplicationLoadBalancer): VpcOriginEndpoint;
    /**
     * A VPC origin endpoint from an Network Load Balancer.
     */
    static networkLoadBalancer(nlb: INetworkLoadBalancer): VpcOriginEndpoint;
    /**
     * The ARN of the CloudFront VPC origin endpoint configuration.
     */
    abstract readonly endpointArn: string;
    /**
     * The domain name of the CloudFront VPC origin endpoint configuration.
     * @default - No domain name configured
     */
    abstract readonly domainName?: string;
}
/**
 * A CloudFront VPC Origin configuration.
 *
 * @resource AWS::CloudFront::VpcOrigin
 */
export declare class VpcOrigin extends Resource implements IVpcOrigin, ITaggableV2 {
    /** Uniquely identifies this class. */
    static readonly PROPERTY_INJECTION_ID: string;
    /**
     * Import an existing VPC origin from its ID.
     */
    static fromVpcOriginId(scope: Construct, id: string, vpcOriginId: string): IVpcOrigin;
    /**
     * Import an existing VPC origin from its ARN.
     */
    static fromVpcOriginArn(scope: Construct, id: string, vpcOriginArn: string): IVpcOrigin;
    /**
     * Import an existing VPC origin from its attributes.
     */
    static fromVpcOriginAttributes(scope: Construct, id: string, attrs: VpcOriginAttributes): IVpcOrigin;
    /**
     * The VPC origin ARN.
     * @attribute
     */
    get vpcOriginArn(): string;
    /**
     * The VPC origin ID.
     * @attribute
     */
    readonly vpcOriginId: string;
    /**
     * The domain name of the CloudFront VPC origin endpoint configuration.
     */
    readonly domainName?: string;
    readonly vpcOriginRef: VpcOriginReference;
    readonly cdkTagManager: TagManager;
    private readonly resource;
    constructor(scope: Construct, id: string, props: VpcOriginProps);
    private validatePortNumber;
}
