import { aws_certificatemanager, aws_cloudfront, aws_s3, aws_ssm } from 'aws-cdk-lib'
import { Construct } from 'constructs'
import { IEdgeLambda } from '../edge-lambdas'
export interface IStaticHostProps {
    /**
     * This will be used as the prefix in the hostname.
     */
    readonly hostnamePrefix: string;
    /**
     * Domain name for cloudfront to be hosted at.
     */
    readonly domainName: string;
    /**
     * SSL certificate to use with cloudfront. Should match domainName.
     */
    readonly websiteCertificate: aws_certificatemanager.ICertificate;
    /**
     * Should create a DNS record in route53 for the generated hostname. (hostnamePrefix.domainName)
     * Generally this should only be done with domains other than library.nd.edu.
     */
    readonly createDns?: boolean;
    /**
     * Hosted zone types (used to retrieve hosted zone ids) for the route53 record(s). Is required if createDns is true.
     * This is now an array to accommodate both a public hosted zone id and a private hosted zone id
     */
    readonly hostedZoneTypes?: string[];
    /**
     * Root page to be served.
     */
    readonly indexFilename?: string;
    /**
     * Edge lambdas to be configured for use with the CloudFront.
     */
    readonly edgeLambdas?: IEdgeLambda[];
    /**
     * Error page configuration for the CloudFront distribution.
     */
    readonly errorConfig?: aws_cloudfront.CfnDistribution.CustomErrorResponseProperty[];
    /**
     * (Optional) Bucket to write logs to. Will create a new bucket by default.
     */
    readonly logBucket?: aws_s3.Bucket;
}
export declare class StaticHost extends Construct {
  /**
     * The S3 bucket that will hold website contents.
     */
  readonly bucket: aws_s3.Bucket
  /**
     * The S3 bucket where log files are stored.
     */
  readonly logBucket: aws_s3.Bucket
  /**
     * The cloudfront distribution.
     */
  readonly cloudfront: aws_cloudfront.CloudFrontWebDistribution
  /**
     * The cloudfront distribution domain name.
     */
  readonly hostname: string
  /**
     * Parameter in SSM which will store the name of the site content s3 bucket.
     */
  readonly bucketNameParam: aws_ssm.StringParameter
  /**
     * Parameter in SSM which will store the id of the cloudfront distribution.
     */
  readonly distributionIdParam: aws_ssm.StringParameter
  /**
     * Props passed to constructor. Used for validation.
     */
  private readonly inProps
  constructor(scope: Construct, id: string, props: IStaticHostProps);
}
