import type { SchemaType } from '@collaborne/json-schema-to-type';
import { ContinuationRequired, CustomResource, Response } from '../custom-resource';
import { Logger } from '../logger';
declare const SCHEMA: {
    type: "object";
    properties: {
        DomainName: {
            type: "string";
        };
        CertificateTransparencyLoggingPreference: {
            type: "string";
            enum: string[];
        };
        DomainValidationOptions: {
            type: "array";
            items: {
                oneOf: readonly [{
                    type: "object";
                    properties: {
                        DomainName: {
                            type: "string";
                        };
                        ValidationDomain: {
                            type: "string";
                        };
                    };
                    required: ("DomainName" | "ValidationDomain")[];
                }, {
                    type: "object";
                    properties: {
                        DomainName: {
                            type: "string";
                        };
                        HostedZoneId: {
                            type: "string";
                        };
                    };
                    required: ("DomainName" | "HostedZoneId")[];
                }];
            };
        };
        Tags: {
            type: "array";
            items: {
                type: "object";
                properties: {
                    Key: {
                        type: "string";
                    };
                    Value: {
                        type: "string";
                    };
                };
                required: "Key"[];
            };
        };
    };
    additionalProperties: true;
    required: "DomainName"[];
};
interface ResourceAttributes {
    Arn: string;
    CertificateId: string;
}
export declare class ACMCertificate extends CustomResource<ResourceAttributes, typeof SCHEMA, Response<ResourceAttributes>> {
    private acm;
    private route53;
    constructor(logicalResourceId: string, logger: Logger);
    createResource(physicalResourceId: string, params: SchemaType<typeof SCHEMA>, continuationAttributes: Response<ResourceAttributes>): Promise<Response<ResourceAttributes> | ContinuationRequired<Response<ResourceAttributes>>>;
    deleteResource(physicalResourceId: string, params: SchemaType<typeof SCHEMA>): Promise<Response<ResourceAttributes>>;
    updateResource(physicalResourceId: string, params: SchemaType<typeof SCHEMA>, oldParams: unknown, continuationAttributes: Response<ResourceAttributes>): Promise<Response<ResourceAttributes> | ContinuationRequired<Response<ResourceAttributes>>>;
    private findCertificateArn;
    /**
     * Get the required resource records for validation
     */
    private getValidationResourceRecords;
    private createCertificate;
    private findChangedAttributes;
    protected maybeContinuation(response: Response<ResourceAttributes>): Promise<Response<ResourceAttributes> | ContinuationRequired<Response<ResourceAttributes>>>;
}
export {};
