import { IEnvironmentAware } from "../environment-aware";
import * as constructs from "constructs";
/**
 * Indicates that this resource can be referenced as a Alarm.
 *
 * @stability experimental
 */
export interface IAlarmRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Alarm resource.
     */
    readonly alarmRef: AlarmReference;
}
/**
 * A reference to a Alarm resource.
 *
 * @struct
 * @stability external
 */
export interface AlarmReference {
    /**
     * The AlarmName of the Alarm resource.
     */
    readonly alarmName: string;
    /**
     * The ARN of the Alarm resource.
     */
    readonly alarmArn: string;
}
/**
 * Indicates that this resource can be referenced as a Bucket.
 *
 * @stability experimental
 */
export interface IBucketRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Bucket resource.
     */
    readonly bucketRef: BucketReference;
}
/**
 * A reference to a Bucket resource.
 *
 * @struct
 * @stability external
 */
export interface BucketReference {
    /**
     * The BucketName of the Bucket resource.
     */
    readonly bucketName: string;
    /**
     * The ARN of the Bucket resource.
     */
    readonly bucketArn: string;
}
/**
 * Indicates that this resource can be referenced as a Certificate.
 *
 * @stability experimental
 */
export interface ICertificateRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Certificate resource.
     */
    readonly certificateRef: CertificateReference;
}
/**
 * A reference to a Certificate resource.
 *
 * @struct
 * @stability external
 */
export interface CertificateReference {
    /**
     * The CertificateName of the Certificate resource.
     */
    readonly certificateName: string;
    /**
     * The ARN of the Certificate resource.
     */
    readonly certificateArn: string;
}
/**
 * Indicates that this resource can be referenced as a Container.
 *
 * @stability experimental
 */
export interface IContainerRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Container resource.
     */
    readonly containerRef: ContainerReference;
}
/**
 * A reference to a Container resource.
 *
 * @struct
 * @stability external
 */
export interface ContainerReference {
    /**
     * The ServiceName of the Container resource.
     */
    readonly serviceName: string;
    /**
     * The ARN of the Container resource.
     */
    readonly containerArn: string;
}
/**
 * Indicates that this resource can be referenced as a Database.
 *
 * @stability experimental
 */
export interface IDatabaseRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Database resource.
     */
    readonly databaseRef: DatabaseReference;
}
/**
 * A reference to a Database resource.
 *
 * @struct
 * @stability external
 */
export interface DatabaseReference {
    /**
     * The RelationalDatabaseName of the Database resource.
     */
    readonly relationalDatabaseName: string;
    /**
     * The ARN of the Database resource.
     */
    readonly databaseArn: string;
}
/**
 * Indicates that this resource can be referenced as a Disk.
 *
 * @stability experimental
 */
export interface IDiskRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Disk resource.
     */
    readonly diskRef: DiskReference;
}
/**
 * A reference to a Disk resource.
 *
 * @struct
 * @stability external
 */
export interface DiskReference {
    /**
     * The DiskName of the Disk resource.
     */
    readonly diskName: string;
    /**
     * The ARN of the Disk resource.
     */
    readonly diskArn: string;
}
/**
 * Indicates that this resource can be referenced as a Distribution.
 *
 * @stability experimental
 */
export interface IDistributionRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Distribution resource.
     */
    readonly distributionRef: DistributionReference;
}
/**
 * A reference to a Distribution resource.
 *
 * @struct
 * @stability external
 */
export interface DistributionReference {
    /**
     * The DistributionName of the Distribution resource.
     */
    readonly distributionName: string;
    /**
     * The ARN of the Distribution resource.
     */
    readonly distributionArn: string;
}
/**
 * Indicates that this resource can be referenced as a Instance.
 *
 * @stability experimental
 */
export interface IInstanceRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Instance resource.
     */
    readonly instanceRef: InstanceReference;
}
/**
 * A reference to a Instance resource.
 *
 * @struct
 * @stability external
 */
export interface InstanceReference {
    /**
     * The InstanceName of the Instance resource.
     */
    readonly instanceName: string;
    /**
     * The ARN of the Instance resource.
     */
    readonly instanceArn: string;
}
/**
 * Indicates that this resource can be referenced as a LoadBalancer.
 *
 * @stability experimental
 */
export interface ILoadBalancerRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a LoadBalancer resource.
     */
    readonly loadBalancerRef: LoadBalancerReference;
}
/**
 * A reference to a LoadBalancer resource.
 *
 * @struct
 * @stability external
 */
export interface LoadBalancerReference {
    /**
     * The LoadBalancerName of the LoadBalancer resource.
     */
    readonly loadBalancerName: string;
    /**
     * The ARN of the LoadBalancer resource.
     */
    readonly loadBalancerArn: string;
}
/**
 * Indicates that this resource can be referenced as a LoadBalancerTlsCertificate.
 *
 * @stability experimental
 */
export interface ILoadBalancerTlsCertificateRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a LoadBalancerTlsCertificate resource.
     */
    readonly loadBalancerTlsCertificateRef: LoadBalancerTlsCertificateReference;
}
/**
 * A reference to a LoadBalancerTlsCertificate resource.
 *
 * @struct
 * @stability external
 */
export interface LoadBalancerTlsCertificateReference {
    /**
     * The CertificateName of the LoadBalancerTlsCertificate resource.
     */
    readonly certificateName: string;
    /**
     * The LoadBalancerName of the LoadBalancerTlsCertificate resource.
     */
    readonly loadBalancerName: string;
    /**
     * The ARN of the LoadBalancerTlsCertificate resource.
     */
    readonly loadBalancerTlsCertificateArn: string;
}
/**
 * Indicates that this resource can be referenced as a StaticIp.
 *
 * @stability experimental
 */
export interface IStaticIpRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a StaticIp resource.
     */
    readonly staticIpRef: StaticIpReference;
}
/**
 * A reference to a StaticIp resource.
 *
 * @struct
 * @stability external
 */
export interface StaticIpReference {
    /**
     * The StaticIpName of the StaticIp resource.
     */
    readonly staticIpName: string;
    /**
     * The ARN of the StaticIp resource.
     */
    readonly staticIpArn: string;
}
/**
 * Indicates that this resource can be referenced as a DatabaseSnapshot.
 *
 * @stability experimental
 */
export interface IDatabaseSnapshotRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a DatabaseSnapshot resource.
     */
    readonly databaseSnapshotRef: DatabaseSnapshotReference;
}
/**
 * A reference to a DatabaseSnapshot resource.
 *
 * @struct
 * @stability external
 */
export interface DatabaseSnapshotReference {
    /**
     * The RelationalDatabaseSnapshotName of the DatabaseSnapshot resource.
     */
    readonly relationalDatabaseSnapshotName: string;
    /**
     * The ARN of the DatabaseSnapshot resource.
     */
    readonly databaseSnapshotArn: string;
}
/**
 * Indicates that this resource can be referenced as a DiskSnapshot.
 *
 * @stability experimental
 */
export interface IDiskSnapshotRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a DiskSnapshot resource.
     */
    readonly diskSnapshotRef: DiskSnapshotReference;
}
/**
 * A reference to a DiskSnapshot resource.
 *
 * @struct
 * @stability external
 */
export interface DiskSnapshotReference {
    /**
     * The DiskSnapshotName of the DiskSnapshot resource.
     */
    readonly diskSnapshotName: string;
    /**
     * The ARN of the DiskSnapshot resource.
     */
    readonly diskSnapshotArn: string;
}
/**
 * Indicates that this resource can be referenced as a Domain.
 *
 * @stability experimental
 */
export interface IDomainRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Domain resource.
     */
    readonly domainRef: DomainReference;
}
/**
 * A reference to a Domain resource.
 *
 * @struct
 * @stability external
 */
export interface DomainReference {
    /**
     * The DomainName of the Domain resource.
     */
    readonly domainName: string;
    /**
     * The ARN of the Domain resource.
     */
    readonly domainArn: string;
}
/**
 * Indicates that this resource can be referenced as a InstanceSnapshot.
 *
 * @stability experimental
 */
export interface IInstanceSnapshotRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a InstanceSnapshot resource.
     */
    readonly instanceSnapshotRef: InstanceSnapshotReference;
}
/**
 * A reference to a InstanceSnapshot resource.
 *
 * @struct
 * @stability external
 */
export interface InstanceSnapshotReference {
    /**
     * The InstanceSnapshotName of the InstanceSnapshot resource.
     */
    readonly instanceSnapshotName: string;
    /**
     * The ARN of the InstanceSnapshot resource.
     */
    readonly instanceSnapshotArn: string;
}
