import type { Construct } from 'constructs';
import * as ga from './globalaccelerator.generated';
import type { ListenerOptions } from './listener';
import { Listener } from './listener';
import * as cdk from '../../core';
import type { IAcceleratorRef } from '../../interfaces/generated/aws-globalaccelerator-interfaces.generated';
/**
 * The interface of the Accelerator
 */
export interface IAccelerator extends cdk.IResource, IAcceleratorRef {
    /**
     * The ARN of the accelerator.
     *
     * @attribute
     */
    readonly acceleratorArn: string;
    /**
     * The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static
     * IP addresses.
     *
     * @attribute
     */
    readonly dnsName: string;
    /**
     * The DNS name that Global Accelerator creates that points to a dual-stack accelerator's four static IP addresses:
     * two IPv4 addresses and two IPv6 addresses.
     *
     * @attribute
     */
    readonly dualStackDnsName?: string;
    /**
     * The array of IPv4 addresses in the IP address set. An IP address set can have a maximum of two IP addresses.
     *
     * @attribute
     */
    readonly ipv4Addresses?: string[];
    /**
     * The array of IPv6 addresses in the IP address set. An IP address set can have a maximum of two IP addresses.
     *
     * @attribute
     */
    readonly ipv6Addresses?: string[];
}
/**
 * Construct properties of the Accelerator
 */
export interface AcceleratorProps {
    /**
     * The name of the accelerator
     *
     * @default - resource ID
     */
    readonly acceleratorName?: string;
    /**
     * Indicates whether the accelerator is enabled.
     *
     * @default true
     */
    readonly enabled?: boolean;
    /**
     * IP addresses associated with the accelerator.
     *
     * Optionally, if you've added your own IP address pool to Global Accelerator (BYOIP), you can choose IP
     * addresses from your own pool to use for the accelerator's static IP addresses when you create an accelerator.
     * You can specify one or two addresses, separated by a comma. Do not include the /32 suffix.
     *
     * Only one IP address from each of your IP address ranges can be used for each accelerator. If you specify
     * only one IP address from your IP address range, Global Accelerator assigns a second static IP address for
     * the accelerator from the AWS IP address pool.
     *
     * Note that you can't update IP addresses for an existing accelerator. To change them, you must create a
     * new accelerator with the new addresses.
     *
     * @default - undefined. IP addresses will be from Amazon's pool of IP addresses.
     */
    readonly ipAddresses?: string[];
    /**
     * The IP address type that an accelerator supports.
     *
     * For a standard accelerator, the value can be IPV4 or DUAL_STACK.
     *
     * @default - "IPV4"
     */
    readonly ipAddressType?: IpAddressType;
}
/**
 * Attributes required to import an existing accelerator to the stack
 */
export interface AcceleratorAttributes {
    /**
     * The ARN of the accelerator
     */
    readonly acceleratorArn: string;
    /**
     * The DNS name of the accelerator
     */
    readonly dnsName: string;
    /**
     * The DNS name that points to the dual-stack accelerator's four static IP addresses: two IPv4 addresses and two IPv6 addresses.
     *
     * @default - undefined
     */
    readonly dualStackDnsName?: string;
    /**
     * The array of IPv4 addresses in the IP address set
     *
     * @default - undefined
     */
    readonly ipv4Addresses?: string[];
    /**
     * The array of IPv6 addresses in the IP address set
     *
     * @default - undefined
     */
    readonly ipv6Addresses?: string[];
}
/**
 * The IP address type that an accelerator supports.
 */
export declare enum IpAddressType {
    /**
     * IPV4
     */
    IPV4 = "IPV4",
    /**
     * DUAL_STACK
     */
    DUAL_STACK = "DUAL_STACK"
}
/**
 * The Accelerator construct
 */
export declare class Accelerator extends cdk.Resource implements IAccelerator {
    /** Uniquely identifies this class. */
    static readonly PROPERTY_INJECTION_ID: string;
    /**
     * import from attributes
     */
    static fromAcceleratorAttributes(scope: Construct, id: string, attrs: AcceleratorAttributes): IAccelerator;
    /**
     * The ARN of the accelerator.
     */
    readonly acceleratorArn: string;
    /**
     * The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static
     * IP addresses.
     */
    readonly dnsName: string;
    /**
     * The DNS name that points to the dual-stack accelerator's four static IP addresses:
     * two IPv4 addresses and two IPv6 addresses.
     */
    readonly dualStackDnsName?: string;
    /**
     * The array of IPv4 addresses in the IP address set
     */
    readonly ipv4Addresses?: string[];
    /**
     * The array of IPv6 addresses in the IP address set
     */
    readonly ipv6Addresses?: string[];
    get acceleratorRef(): ga.AcceleratorReference;
    constructor(scope: Construct, id: string, props?: AcceleratorProps);
    /**
     * Add a listener to the accelerator
     */
    addListener(id: string, options: ListenerOptions): Listener;
    private validateAcceleratorName;
    private validateIpAddresses;
}
