import * as core from "@terrascript/core";
export interface ColdStorageOptionsArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
}
export declare class ColdStorageOptions extends core.Schema<ColdStorageOptionsArgs> {
    enabled: boolean | core.BooleanOut;
}
export interface ZoneAwarenessConfigArgs extends core.SchemaArgs {
    availabilityZoneCount: number | core.NumberOut;
}
export declare class ZoneAwarenessConfig extends core.Schema<ZoneAwarenessConfigArgs> {
    availabilityZoneCount: number | core.NumberOut;
}
export interface ClusterConfigArgs extends core.SchemaArgs {
    coldStorageOptions: core.Array<ColdStorageOptions> | core.ArrayOut<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: core.Array<ZoneAwarenessConfig> | core.ArrayOut<ZoneAwarenessConfig>;
    zoneAwarenessEnabled: boolean | core.BooleanOut;
}
export declare class ClusterConfig extends core.Schema<ClusterConfigArgs> {
    coldStorageOptions: core.Array<ColdStorageOptions> | core.ArrayOut<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: core.Array<ZoneAwarenessConfig> | core.ArrayOut<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 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: core.Array<Duration> | core.ArrayOut<Duration>;
    startAt: string | core.StringOut;
}
export declare class MaintenanceSchedule extends core.Schema<MaintenanceScheduleArgs> {
    cronExpressionForRecurrence: string | core.StringOut;
    duration: core.Array<Duration> | core.ArrayOut<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 EncryptionAtRestArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
    kmsKeyId: string | core.StringOut;
}
export declare class EncryptionAtRest extends core.Schema<EncryptionAtRestArgs> {
    enabled: boolean | core.BooleanOut;
    kmsKeyId: string | core.StringOut;
}
export interface AdvancedSecurityOptionsArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
    internalUserDatabaseEnabled: boolean | core.BooleanOut;
}
export declare class AdvancedSecurityOptions extends core.Schema<AdvancedSecurityOptionsArgs> {
    enabled: boolean | core.BooleanOut;
    internalUserDatabaseEnabled: 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 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 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 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 DsDomainArgs {
    domainName: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class DsDomain extends core.Data<DsDomainArgs> {
    accessPolicies: string | core.StringOut;
    advancedOptions: core.Map<string, string> | core.MapOut<core.StringOut>;
    advancedSecurityOptions: core.Array<AdvancedSecurityOptions> | core.ArrayOut<AdvancedSecurityOptions>;
    arn: string | core.StringOut;
    autoTuneOptions: core.Array<AutoTuneOptions> | core.ArrayOut<AutoTuneOptions>;
    clusterConfig: core.Array<ClusterConfig> | core.ArrayOut<ClusterConfig>;
    cognitoOptions: core.Array<CognitoOptions> | core.ArrayOut<CognitoOptions>;
    created: boolean | core.BooleanOut;
    deleted: boolean | core.BooleanOut;
    domainId: string | core.StringOut;
    domainName: string | core.StringOut;
    ebsOptions: core.Array<EbsOptions> | core.ArrayOut<EbsOptions>;
    elasticsearchVersion: string | core.StringOut;
    encryptionAtRest: core.Array<EncryptionAtRest> | core.ArrayOut<EncryptionAtRest>;
    endpoint: string | core.StringOut;
    id: string | core.StringOut;
    kibanaEndpoint: string | core.StringOut;
    logPublishingOptions: core.Array<LogPublishingOptions> | core.ArrayOut<LogPublishingOptions>;
    nodeToNodeEncryption: core.Array<NodeToNodeEncryption> | core.ArrayOut<NodeToNodeEncryption>;
    processing: boolean | core.BooleanOut;
    snapshotOptions: core.Array<SnapshotOptions> | core.ArrayOut<SnapshotOptions>;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    vpcOptions: core.Array<VpcOptions> | core.ArrayOut<VpcOptions>;
    constructor(name: string, args?: DsDomainArgs);
    getNamespace(): string;
}
//# sourceMappingURL=ds_domain.d.ts.map