import * as core from "@terrascript/core";
export interface LogPublishingOptionsArgs extends core.SchemaArgs {
    cloudwatchLogGroupArn: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
    logType: string | core.StringOut;
}
export declare class LogPublishingOptions extends core.Schema<LogPublishingOptionsArgs> {
    cloudwatchLogGroupArn: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
    logType: string | core.StringOut;
}
export interface EncryptAtRestArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
    kmsKeyId?: string | core.StringOut;
}
export declare class EncryptAtRest extends core.Schema<EncryptAtRestArgs> {
    enabled: boolean | core.BooleanOut;
    kmsKeyId?: string | core.StringOut;
}
export interface DurationArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class Duration extends core.Schema<DurationArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface MaintenanceScheduleArgs extends core.SchemaArgs {
    cronExpressionForRecurrence: string | core.StringOut;
    duration: Duration;
    startAt: string | core.StringOut;
}
export declare class MaintenanceSchedule extends core.Schema<MaintenanceScheduleArgs> {
    cronExpressionForRecurrence: string | core.StringOut;
    duration: Duration;
    startAt: string | core.StringOut;
}
export interface AutoTuneOptionsArgs extends core.SchemaArgs {
    desiredState: string | core.StringOut;
    maintenanceSchedule?: core.Array<MaintenanceSchedule> | core.ArrayOut<MaintenanceSchedule>;
    rollbackOnDisable?: string | core.StringOut;
}
export declare class AutoTuneOptions extends core.Schema<AutoTuneOptionsArgs> {
    desiredState: string | core.StringOut;
    maintenanceSchedule?: core.Array<MaintenanceSchedule> | core.ArrayOut<MaintenanceSchedule>;
    rollbackOnDisable?: string | core.StringOut;
}
export interface ZoneAwarenessConfigArgs extends core.SchemaArgs {
    availabilityZoneCount?: number | core.NumberOut;
}
export declare class ZoneAwarenessConfig extends core.Schema<ZoneAwarenessConfigArgs> {
    availabilityZoneCount?: number | core.NumberOut;
}
export interface ColdStorageOptionsArgs extends core.SchemaArgs {
    enabled?: boolean | core.BooleanOut;
}
export declare class ColdStorageOptions extends core.Schema<ColdStorageOptionsArgs> {
    enabled?: boolean | core.BooleanOut;
}
export interface ClusterConfigArgs extends core.SchemaArgs {
    coldStorageOptions?: ColdStorageOptions;
    dedicatedMasterCount?: number | core.NumberOut;
    dedicatedMasterEnabled?: boolean | core.BooleanOut;
    dedicatedMasterType?: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType?: string | core.StringOut;
    warmCount?: number | core.NumberOut;
    warmEnabled?: boolean | core.BooleanOut;
    warmType?: string | core.StringOut;
    zoneAwarenessConfig?: ZoneAwarenessConfig;
    zoneAwarenessEnabled?: boolean | core.BooleanOut;
}
export declare class ClusterConfig extends core.Schema<ClusterConfigArgs> {
    coldStorageOptions?: ColdStorageOptions;
    dedicatedMasterCount?: number | core.NumberOut;
    dedicatedMasterEnabled?: boolean | core.BooleanOut;
    dedicatedMasterType?: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType?: string | core.StringOut;
    warmCount?: number | core.NumberOut;
    warmEnabled?: boolean | core.BooleanOut;
    warmType?: string | core.StringOut;
    zoneAwarenessConfig?: ZoneAwarenessConfig;
    zoneAwarenessEnabled?: boolean | core.BooleanOut;
}
export interface VpcOptionsArgs extends core.SchemaArgs {
    availabilityZones: core.Array<string> | core.ArrayOut<core.StringOut>;
    securityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    subnetIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    vpcId: string | core.StringOut;
}
export declare class VpcOptions extends core.Schema<VpcOptionsArgs> {
    availabilityZones: core.Array<string> | core.ArrayOut<core.StringOut>;
    securityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    subnetIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    vpcId: string | core.StringOut;
}
export interface EbsOptionsArgs extends core.SchemaArgs {
    ebsEnabled: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export declare class EbsOptions extends core.Schema<EbsOptionsArgs> {
    ebsEnabled: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export interface DomainEndpointOptionsArgs extends core.SchemaArgs {
    customEndpoint?: string | core.StringOut;
    customEndpointCertificateArn?: string | core.StringOut;
    customEndpointEnabled?: boolean | core.BooleanOut;
    enforceHttps?: boolean | core.BooleanOut;
    tlsSecurityPolicy?: string | core.StringOut;
}
export declare class DomainEndpointOptions extends core.Schema<DomainEndpointOptionsArgs> {
    customEndpoint?: string | core.StringOut;
    customEndpointCertificateArn?: string | core.StringOut;
    customEndpointEnabled?: boolean | core.BooleanOut;
    enforceHttps?: boolean | core.BooleanOut;
    tlsSecurityPolicy?: string | core.StringOut;
}
export interface CognitoOptionsArgs extends core.SchemaArgs {
    enabled?: boolean | core.BooleanOut;
    identityPoolId: string | core.StringOut;
    roleArn: string | core.StringOut;
    userPoolId: string | core.StringOut;
}
export declare class CognitoOptions extends core.Schema<CognitoOptionsArgs> {
    enabled?: boolean | core.BooleanOut;
    identityPoolId: string | core.StringOut;
    roleArn: string | core.StringOut;
    userPoolId: string | core.StringOut;
}
export interface NodeToNodeEncryptionArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
}
export declare class NodeToNodeEncryption extends core.Schema<NodeToNodeEncryptionArgs> {
    enabled: boolean | core.BooleanOut;
}
export interface SnapshotOptionsArgs extends core.SchemaArgs {
    automatedSnapshotStartHour: number | core.NumberOut;
}
export declare class SnapshotOptions extends core.Schema<SnapshotOptionsArgs> {
    automatedSnapshotStartHour: number | core.NumberOut;
}
export interface MasterUserOptionsArgs extends core.SchemaArgs {
    masterUserArn?: string | core.StringOut;
    masterUserName?: string | core.StringOut;
    masterUserPassword?: string | core.StringOut;
}
export declare class MasterUserOptions extends core.Schema<MasterUserOptionsArgs> {
    masterUserArn?: string | core.StringOut;
    masterUserName?: string | core.StringOut;
    masterUserPassword?: string | core.StringOut;
}
export interface AdvancedSecurityOptionsArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
    internalUserDatabaseEnabled?: boolean | core.BooleanOut;
    masterUserOptions?: MasterUserOptions;
}
export declare class AdvancedSecurityOptions extends core.Schema<AdvancedSecurityOptionsArgs> {
    enabled: boolean | core.BooleanOut;
    internalUserDatabaseEnabled?: boolean | core.BooleanOut;
    masterUserOptions?: MasterUserOptions;
}
export interface DomainArgs extends core.ResourceArgs {
    accessPolicies?: string | core.StringOut;
    advancedOptions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    advancedSecurityOptions?: AdvancedSecurityOptions;
    autoTuneOptions?: AutoTuneOptions;
    clusterConfig?: ClusterConfig;
    cognitoOptions?: CognitoOptions;
    domainEndpointOptions?: DomainEndpointOptions;
    domainName: string | core.StringOut;
    ebsOptions?: EbsOptions;
    elasticsearchVersion?: string | core.StringOut;
    encryptAtRest?: EncryptAtRest;
    logPublishingOptions?: core.Array<LogPublishingOptions> | core.ArrayOut<LogPublishingOptions>;
    nodeToNodeEncryption?: NodeToNodeEncryption;
    snapshotOptions?: SnapshotOptions;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    vpcOptions?: VpcOptions;
}
export declare class Domain extends core.Resource<DomainArgs> {
    accessPolicies?: string | core.StringOut;
    advancedOptions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    advancedSecurityOptions?: AdvancedSecurityOptions;
    arn: string | core.StringOut;
    autoTuneOptions?: AutoTuneOptions;
    clusterConfig?: ClusterConfig;
    cognitoOptions?: CognitoOptions;
    domainEndpointOptions?: DomainEndpointOptions;
    domainId: string | core.StringOut;
    domainName: string | core.StringOut;
    ebsOptions?: EbsOptions;
    elasticsearchVersion?: string | core.StringOut;
    encryptAtRest?: EncryptAtRest;
    endpoint: string | core.StringOut;
    id: string | core.StringOut;
    kibanaEndpoint: string | core.StringOut;
    logPublishingOptions?: core.Array<LogPublishingOptions> | core.ArrayOut<LogPublishingOptions>;
    nodeToNodeEncryption?: NodeToNodeEncryption;
    snapshotOptions?: SnapshotOptions;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    vpcOptions?: VpcOptions;
    constructor(name: string, args?: DomainArgs);
    getNamespace(): string;
}
//# sourceMappingURL=domain.d.ts.map