import type { DNSName } from "../../../common/CustomTypes/DNSName";
import type { Integer } from "../../../common/CustomTypes/Integer";
import type { AwsResourceCommon } from "../common";
import type { CloudFormationString } from "../IntrinsicFunctions";
export declare type RecordSetResourceType = 'AWS::Route53::RecordSet';
export interface RecordSet extends AwsResourceCommon {
    Type: RecordSetResourceType;
    Properties: RecordSetProperties;
}
export interface RecordSetPropertiesBase {
    Comment?: string;
    Failover?: string;
    GeoLocation?: object;
    HealthCheckId?: string;
    MultiValueAnswer?: boolean;
    Name: DNSName;
    Region?: string;
    ResourceRecords?: string[];
    SetIdentifier?: string;
    TTL?: string;
    Type: RecordSetType;
    Weight?: Integer;
}
export interface AliasRecordSetProperties extends RecordSetPropertiesBase {
    Type: RecordSetType;
    AliasTarget: AliasTarget;
    ResourceRecords?: undefined;
}
export interface DataRecordSetProperties extends RecordSetPropertiesBase {
    Type: RecordSetType;
    AliasTarget: CloudFormationString;
    ResourceRecords: string[];
}
export declare type HostedZoneSpecification = {
    HostedZoneId: CloudFormationString;
} | {
    HostedZoneName: DNSName;
};
export declare type RecordSetProperties = HostedZoneSpecification & (AliasRecordSetProperties | DataRecordSetProperties);
export declare type RecordSetType = 'A' | 'AAAA' | 'CAA' | 'CNAME' | 'MX' | 'NAPTR' | 'NS' | 'PTR' | 'SOA' | 'SPF' | 'SRV' | 'TXT';
export declare const CLOUD_FRONT_HOSTED_ZONE_ID = "Z2FDTNDATAQYW2";
export interface AliasTarget {
    DNSName: CloudFormationString;
    EvaluateTargetHealth?: boolean;
    HostedZoneId: CloudFormationString;
}
export declare function aliasTargetFromCloudFrontDistribution(resourceId: string): AliasTarget;
