export interface Tag {
    /** The key for the tag. Tag keys are case sensitive. Every DAX cluster can only have one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the */
    Key?: string;
    /** The value of the tag. Tag values are case-sensitive and can be null. */
    Value?: string;
}
export interface SSESpecification {
    /** Indicates whether server-side encryption is enabled (true) or disabled (false) on the cluster. */
    Enabled: boolean;
}
export interface ParameterNameValue {
    /** The name of the parameter. */
    ParameterName?: string;
    /** The value of the parameter. */
    ParameterValue?: string;
}
export interface CreateClusterInput {
    /** The cluster identifier. This parameter is stored as a lowercase string. Constraints: A name must contain from 1 to 20 alphanumeric characters or hyphens. The first character must be a letter. A name c */
    ClusterName: string;
    /** A valid Amazon Resource Name (ARN) that identifies an IAM role. At runtime, DAX will assume this role and use the role's permissions to access DynamoDB on your behalf. */
    IamRoleArn: string;
    /** The compute and memory capacity of the nodes in the cluster. */
    NodeType: string;
    /** The number of nodes in the DAX cluster. A replication factor of 1 will create a single-node cluster, without any read replicas. For additional fault tolerance, you can create a multiple node cluster w */
    ReplicationFactor: number;
    /** The Availability Zones (AZs) in which the cluster nodes will reside after the cluster has been created or updated. If provided, the length of this list must equal the ReplicationFactor parameter. If y */
    AvailabilityZones?: string[];
    /** The type of encryption the cluster's endpoint should support. Values are: NONE for no encryption TLS for Transport Layer Security */
    ClusterEndpointEncryptionType?: 'NONE' | 'TLS';
    /** A description of the cluster. */
    Description?: string;
    /** Specifies the IP protocol(s) the cluster uses for network communications. Values are: ipv4 - The cluster is accessible only through IPv4 addresses ipv6 - The cluster is accessible only through IPv6 ad */
    NetworkType?: 'ipv4' | 'ipv6' | 'dual_stack';
    /** The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent. The Amazon SNS topic owner must be same as the DAX cluster owner. */
    NotificationTopicArn?: string;
    /** The parameter group to be associated with the DAX cluster. */
    ParameterGroupName?: string;
    /** Specifies the weekly time range during which maintenance on the DAX cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance wind */
    PreferredMaintenanceWindow?: string;
    /** A list of security group IDs to be assigned to each node in the DAX cluster. (Each of the security group ID is system-generated.) If this parameter is not specified, DAX assigns the default VPC securi */
    SecurityGroupIds?: string[];
    /** Represents the settings used to enable server-side encryption on the cluster. */
    SSESpecification?: SSESpecification;
    /** The name of the subnet group to be used for the replication group. DAX clusters can only run in an Amazon VPC environment. All of the subnets that you specify in a subnet group must exist in the same  */
    SubnetGroupName?: string;
    /** A set of tags to associate with the DAX cluster. */
    Tags?: Tag[];
}
export interface CreateParameterGroupInput {
    /** The name of the parameter group to apply to all of the clusters in this replication group. */
    ParameterGroupName: string;
    /** A description of the parameter group. */
    Description?: string;
}
export interface CreateSubnetGroupInput {
    /** A name for the subnet group. This value is stored as a lowercase string. */
    SubnetGroupName: string;
    /** A list of VPC subnet IDs for the subnet group. */
    SubnetIds: string[];
    /** A description for the subnet group */
    Description?: string;
}
export interface DecreaseReplicationFactorInput {
    /** The name of the DAX cluster from which you want to remove nodes. */
    ClusterName: string;
    /** The new number of nodes for the DAX cluster. */
    NewReplicationFactor: number;
    /** The Availability Zone(s) from which to remove nodes. */
    AvailabilityZones?: string[];
    /** The unique identifiers of the nodes to be removed from the cluster. */
    NodeIdsToRemove?: string[];
}
export interface DeleteClusterInput {
    /** The name of the cluster to be deleted. */
    ClusterName: string;
}
export interface DeleteParameterGroupInput {
    /** The name of the parameter group to delete. */
    ParameterGroupName: string;
}
export interface DeleteSubnetGroupInput {
    /** The name of the subnet group to delete. */
    SubnetGroupName: string;
}
export interface DescribeClustersInput {
    /** The names of the DAX clusters being described. */
    ClusterNames?: string[];
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
}
export interface DescribeDefaultParametersInput {
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
}
export interface DescribeEventsInput {
    /** The number of minutes' worth of events to retrieve. */
    Duration?: number;
    /** The end of the time interval for which to retrieve events, specified in ISO 8601 format. */
    EndTime?: string;
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
    /** The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response. */
    SourceName?: string;
    /** The event source to retrieve events for. If no value is specified, all events are returned. */
    SourceType?: 'CLUSTER' | 'PARAMETER_GROUP' | 'SUBNET_GROUP';
    /** The beginning of the time interval to retrieve events for, specified in ISO 8601 format. */
    StartTime?: string;
}
export interface DescribeParameterGroupsInput {
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
    /** The names of the parameter groups. */
    ParameterGroupNames?: string[];
}
export interface DescribeParametersInput {
    /** The name of the parameter group. */
    ParameterGroupName: string;
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
    /** How the parameter is defined. For example, system denotes a system-defined parameter. */
    Source?: string;
}
export interface DescribeSubnetGroupsInput {
    /** The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. */
    MaxResults?: number;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to t */
    NextToken?: string;
    /** The name of the subnet group. */
    SubnetGroupNames?: string[];
}
export interface IncreaseReplicationFactorInput {
    /** The name of the DAX cluster that will receive additional nodes. */
    ClusterName: string;
    /** The new number of nodes for the DAX cluster. */
    NewReplicationFactor: number;
    /** The Availability Zones (AZs) in which the cluster nodes will be created. All nodes belonging to the cluster are placed in these Availability Zones. Use this parameter if you want to distribute the nod */
    AvailabilityZones?: string[];
}
export interface ListTagsInput {
    /** The name of the DAX resource to which the tags belong. */
    ResourceName: string;
    /** An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token. */
    NextToken?: string;
}
export interface RebootNodeInput {
    /** The name of the DAX cluster containing the node to be rebooted. */
    ClusterName: string;
    /** The system-assigned ID of the node to be rebooted. */
    NodeId: string;
}
export interface TagResourceInput {
    /** The name of the DAX resource to which tags should be added. */
    ResourceName: string;
    /** The tags to be assigned to the DAX resource. */
    Tags: Tag[];
}
export interface UntagResourceInput {
    /** The name of the DAX resource from which the tags should be removed. */
    ResourceName: string;
    /** A list of tag keys. If the DAX cluster has any tags with these keys, then the tags are removed from the cluster. */
    TagKeys: string[];
}
export interface UpdateClusterInput {
    /** The name of the DAX cluster to be modified. */
    ClusterName: string;
    /** A description of the changes being made to the cluster. */
    Description?: string;
    /** The Amazon Resource Name (ARN) that identifies the topic. */
    NotificationTopicArn?: string;
    /** The current state of the topic. A value of “active” means that notifications will be sent to the topic. A value of “inactive” means that notifications will not be sent to the topic. */
    NotificationTopicStatus?: string;
    /** The name of a parameter group for this cluster. */
    ParameterGroupName?: string;
    /** A range of time when maintenance of DAX cluster software will be performed. For example: sun:01:00-sun:09:00. Cluster maintenance normally takes less than 30 minutes, and is performed automatically wi */
    PreferredMaintenanceWindow?: string;
    /** A list of user-specified security group IDs to be assigned to each node in the DAX cluster. If this parameter is not specified, DAX assigns the default VPC security group to each node. */
    SecurityGroupIds?: string[];
}
export interface UpdateParameterGroupInput {
    /** The name of the parameter group. */
    ParameterGroupName: string;
    /** An array of name-value pairs for the parameters in the group. Each element in the array represents a single parameter. record-ttl-millis and query-ttl-millis are the only supported parameter names. Fo */
    ParameterNameValues: ParameterNameValue[];
}
export interface UpdateSubnetGroupInput {
    /** The name of the subnet group. */
    SubnetGroupName: string;
    /** A description of the subnet group. */
    Description?: string;
    /** A list of subnet IDs in the subnet group. */
    SubnetIds?: string[];
}
/** DAX service binding for Step Functions SDK integrations. */
export declare class DAX {
    constructor();
    createCluster<T>(params: CreateClusterInput): Promise<T>;
    createParameterGroup<T>(params: CreateParameterGroupInput): Promise<T>;
    createSubnetGroup<T>(params: CreateSubnetGroupInput): Promise<T>;
    decreaseReplicationFactor<T>(params: DecreaseReplicationFactorInput): Promise<T>;
    deleteCluster<T>(params: DeleteClusterInput): Promise<T>;
    deleteParameterGroup<T>(params: DeleteParameterGroupInput): Promise<T>;
    deleteSubnetGroup<T>(params: DeleteSubnetGroupInput): Promise<T>;
    describeClusters<T>(params: DescribeClustersInput): Promise<T>;
    describeDefaultParameters<T>(params: DescribeDefaultParametersInput): Promise<T>;
    describeEvents<T>(params: DescribeEventsInput): Promise<T>;
    describeParameterGroups<T>(params: DescribeParameterGroupsInput): Promise<T>;
    describeParameters<T>(params: DescribeParametersInput): Promise<T>;
    describeSubnetGroups<T>(params: DescribeSubnetGroupsInput): Promise<T>;
    increaseReplicationFactor<T>(params: IncreaseReplicationFactorInput): Promise<T>;
    listTags<T>(params: ListTagsInput): Promise<T>;
    rebootNode<T>(params: RebootNodeInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateCluster<T>(params: UpdateClusterInput): Promise<T>;
    updateParameterGroup<T>(params: UpdateParameterGroupInput): Promise<T>;
    updateSubnetGroup<T>(params: UpdateSubnetGroupInput): Promise<T>;
}
//# sourceMappingURL=DAX.d.ts.map