export interface SchedulerRequest {
    /** The software PCS uses to manage cluster scaling and job scheduling. */
    type: 'SLURM';
    /** The version of the specified scheduling software that PCS uses to manage cluster scaling and job scheduling. For more information, see Slurm versions in PCS in the PCS User Guide. Valid Values: 23.11  */
    version: string;
}
export interface NetworkingRequest {
    /** The list of subnet IDs where PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and PCS resources. Subnet IDs have the form subnet-0123456789abcdef0. Su */
    subnetIds?: string[];
    /** A list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets. */
    securityGroupIds?: string[];
    /** The IP address version the cluster uses. The default is IPV4. */
    networkType?: 'IPV4' | 'IPV6';
}
export interface AccountingRequest {
    /** The default value for all purge settings for slurmdbd.conf. For more information, see the slurmdbd.conf documentation at SchedMD. The default value for defaultPurgeTimeInDays is -1. A value of -1 mean */
    defaultPurgeTimeInDays?: number;
    /** The default value for mode is NONE. A value of STANDARD means Slurm accounting is enabled. */
    mode: 'STANDARD' | 'NONE';
}
export interface SlurmRestRequest {
    /** The default value for mode is NONE. A value of STANDARD means the Slurm REST API is enabled. */
    mode: 'STANDARD' | 'NONE';
}
export interface ClusterSlurmConfigurationRequest {
    /** The time (in seconds) before an idle node is scaled down. Default: 600 */
    scaleDownIdleTimeInSeconds?: number;
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
    /** The accounting configuration includes configurable settings for Slurm accounting. */
    accounting?: AccountingRequest;
    /** The Slurm REST API configuration for the cluster. */
    slurmRest?: SlurmRestRequest;
}
export interface CustomLaunchTemplate {
    /** The ID of the EC2 launch template to use to provision instances. Example: lt-xxxx */
    id: string;
    /** The version of the EC2 launch template to use to provision instances. */
    version: string;
}
export interface ScalingConfigurationRequest {
    /** The lower bound of the number of instances allowed in the compute fleet. */
    minInstanceCount: number;
    /** The upper bound of the number of instances allowed in the compute fleet. */
    maxInstanceCount: number;
}
export interface InstanceConfig {
    /** The EC2 instance type that PCS can provision in the compute node group. Example: t2.xlarge */
    instanceType?: string;
}
export interface SpotOptions {
    /** The Amazon EC2 allocation strategy PCS uses to provision EC2 instances. PCS supports lowest price, capacity optimized, and price capacity optimized. For more information, see Use allocation strategies */
    allocationStrategy?: 'lowest-price' | 'capacity-optimized' | 'price-capacity-optimized';
}
export interface ComputeNodeGroupSlurmConfigurationRequest {
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
}
export interface ComputeNodeGroupConfiguration {
    /** The compute node group ID for the compute node group configuration. */
    computeNodeGroupId?: string;
}
export interface QueueSlurmConfigurationRequest {
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
}
export interface UpdateAccountingRequest {
    /** The default value for all purge settings for slurmdbd.conf. For more information, see the slurmdbd.conf documentation at SchedMD. The default value for defaultPurgeTimeInDays is -1. A value of -1 mean */
    defaultPurgeTimeInDays?: number;
    /** The default value for mode is NONE. A value of STANDARD means Slurm accounting is enabled. */
    mode?: 'STANDARD' | 'NONE';
}
export interface UpdateSlurmRestRequest {
    /** The default value for mode is NONE. A value of STANDARD means the Slurm REST API is enabled. */
    mode?: 'STANDARD' | 'NONE';
}
export interface UpdateClusterSlurmConfigurationRequest {
    /** The time (in seconds) before an idle node is scaled down. Default: 600 */
    scaleDownIdleTimeInSeconds?: number;
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
    /** The accounting configuration includes configurable settings for Slurm accounting. */
    accounting?: UpdateAccountingRequest;
    /** The Slurm REST API configuration for the cluster. */
    slurmRest?: UpdateSlurmRestRequest;
}
export interface UpdateComputeNodeGroupSlurmConfigurationRequest {
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
}
export interface UpdateQueueSlurmConfigurationRequest {
    /** Additional Slurm-specific configuration that directly maps to Slurm settings. */
    slurmCustomSettings?: any[];
}
export interface CreateClusterInput {
    /** A name to identify the cluster. Example: MyCluster */
    clusterName: string;
    /** The networking configuration used to set up the cluster's control plane. */
    networking: NetworkingRequest;
    /** The cluster management and job scheduling software associated with the cluster. */
    scheduler: SchedulerRequest;
    /** A value that determines the maximum number of compute nodes in the cluster and the maximum number of jobs (active and queued). SMALL: 32 compute nodes and 256 jobs MEDIUM: 512 compute nodes and 8192 j */
    size: 'SMALL' | 'MEDIUM' | 'LARGE';
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: ClusterSlurmConfigurationRequest;
    /** 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. */
    tags?: Record<string, string>;
}
export interface CreateComputeNodeGroupInput {
    /** The name or ID of the cluster to create a compute node group in. */
    clusterIdentifier: string;
    /** A name to identify the cluster. Example: MyCluster */
    computeNodeGroupName: string;
    customLaunchTemplate: CustomLaunchTemplate;
    /** The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have the pcs:RegisterComputeNodeGroup */
    iamInstanceProfileArn: string;
    /** A list of EC2 instance configurations that PCS can provision in the compute node group. */
    instanceConfigs: InstanceConfig[];
    /** Specifies the boundaries of the compute node group auto scaling. */
    scalingConfiguration: ScalingConfigurationRequest;
    /** The list of subnet IDs where the compute node group launches instances. Subnets must be in the same VPC as the cluster. */
    subnetIds: string[];
    /** The ID of the Amazon Machine Image (AMI) that PCS uses to launch compute nodes (Amazon EC2 instances). If you don't provide this value, PCS uses the AMI ID specified in the custom launch template. */
    amiId?: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** Specifies how EC2 instances are purchased on your behalf. PCS supports On-Demand Instances, Spot Instances, and Amazon EC2 Capacity Blocks for ML. For more information, see Amazon EC2 billing and purc */
    purchaseOption?: 'ONDEMAND' | 'SPOT' | 'CAPACITY_BLOCK';
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: ComputeNodeGroupSlurmConfigurationRequest;
    spotOptions?: SpotOptions;
    /** 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. */
    tags?: Record<string, string>;
}
export interface CreateQueueInput {
    /** The name or ID of the cluster for which to create a queue. */
    clusterIdentifier: string;
    /** A name to identify the queue. */
    queueName: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** The list of compute node group configurations to associate with the queue. Queues assign jobs to associated compute node groups. */
    computeNodeGroupConfigurations?: ComputeNodeGroupConfiguration[];
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: QueueSlurmConfigurationRequest;
    /** 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. */
    tags?: Record<string, string>;
}
export interface DeleteClusterInput {
    /** The name or ID of the cluster to delete. */
    clusterIdentifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
}
export interface DeleteComputeNodeGroupInput {
    /** The name or ID of the cluster of the compute node group. */
    clusterIdentifier: string;
    /** The name or ID of the compute node group to delete. */
    computeNodeGroupIdentifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
}
export interface DeleteQueueInput {
    /** The name or ID of the cluster of the queue. */
    clusterIdentifier: string;
    /** The name or ID of the queue to delete. */
    queueIdentifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
}
export interface GetClusterInput {
    /** The name or ID of the cluster. */
    clusterIdentifier: string;
}
export interface GetComputeNodeGroupInput {
    /** The name or ID of the cluster. */
    clusterIdentifier: string;
    /** The name or ID of the compute node group. */
    computeNodeGroupIdentifier: string;
}
export interface GetQueueInput {
    /** The name or ID of the cluster of the queue. */
    clusterIdentifier: string;
    /** The name or ID of the queue. */
    queueIdentifier: string;
}
export interface ListClustersInput {
    /** The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results. The default is 10 results, and the maximum allowed page size is 100 results. A value */
    maxResults?: number;
    /** The value of nextToken is a unique pagination token for each page of results returned. If nextToken is returned, there are more results available. Make the call again using the returned token to retri */
    nextToken?: string;
}
export interface ListComputeNodeGroupsInput {
    /** The name or ID of the cluster to list compute node groups for. */
    clusterIdentifier: string;
    /** The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results. The default is 10 results, and the maximum allowed page size is 100 results. A value */
    maxResults?: number;
    /** The value of nextToken is a unique pagination token for each page of results returned. If nextToken is returned, there are more results available. Make the call again using the returned token to retri */
    nextToken?: string;
}
export interface ListQueuesInput {
    /** The name or ID of the cluster to list queues for. */
    clusterIdentifier: string;
    /** The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results. The default is 10 results, and the maximum allowed page size is 100 results. A value */
    maxResults?: number;
    /** The value of nextToken is a unique pagination token for each page of results returned. If nextToken is returned, there are more results available. Make the call again using the returned token to retri */
    nextToken?: string;
}
export interface ListTagsForResourceInput {
    /** The Amazon Resource Name (ARN) of the resource for which to list tags. */
    resourceArn: string;
}
export interface RegisterComputeNodeGroupInstanceInput {
    /** The client-generated token to allow for retries. */
    bootstrapId: string;
    /** The name or ID of the cluster to register the compute node group instance in. */
    clusterIdentifier: string;
}
export interface TagResourceInput {
    /** The Amazon Resource Name (ARN) of the resource. */
    resourceArn: string;
    /** 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. */
    tags: Record<string, string>;
}
export interface UntagResourceInput {
    /** The Amazon Resource Name (ARN) of the resource. */
    resourceArn: string;
    /** 1 or more tag keys to remove from the resource. Specify only tag keys and not tag values. */
    tagKeys: string[];
}
export interface UpdateClusterInput {
    /** The name or ID of the cluster to update. */
    clusterIdentifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: UpdateClusterSlurmConfigurationRequest;
}
export interface UpdateComputeNodeGroupInput {
    /** The name or ID of the cluster of the compute node group. */
    clusterIdentifier: string;
    /** The name or ID of the compute node group. */
    computeNodeGroupIdentifier: string;
    /** The ID of the Amazon Machine Image (AMI) that PCS uses to launch instances. If not provided, PCS uses the AMI ID specified in the custom launch template. */
    amiId?: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    customLaunchTemplate?: CustomLaunchTemplate;
    /** The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have the pcs:RegisterComputeNodeGroup */
    iamInstanceProfileArn?: string;
    /** Specifies how EC2 instances are purchased on your behalf. PCS supports On-Demand Instances, Spot Instances, and Amazon EC2 Capacity Blocks for ML. For more information, see Amazon EC2 billing and purc */
    purchaseOption?: 'ONDEMAND' | 'SPOT' | 'CAPACITY_BLOCK';
    /** Specifies the boundaries of the compute node group auto scaling. */
    scalingConfiguration?: ScalingConfigurationRequest;
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: UpdateComputeNodeGroupSlurmConfigurationRequest;
    spotOptions?: SpotOptions;
    /** The list of subnet IDs where the compute node group provisions instances. The subnets must be in the same VPC as the cluster. */
    subnetIds?: string[];
}
export interface UpdateQueueInput {
    /** The name or ID of the cluster of the queue. */
    clusterIdentifier: string;
    /** The name or ID of the queue. */
    queueIdentifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** The list of compute node group configurations to associate with the queue. Queues assign jobs to associated compute node groups. */
    computeNodeGroupConfigurations?: ComputeNodeGroupConfiguration[];
    /** Additional options related to the Slurm scheduler. */
    slurmConfiguration?: UpdateQueueSlurmConfigurationRequest;
}
/** PCS service binding for Step Functions SDK integrations. */
export declare class PCS {
    constructor();
    createCluster<T>(params: CreateClusterInput): Promise<T>;
    createComputeNodeGroup<T>(params: CreateComputeNodeGroupInput): Promise<T>;
    createQueue<T>(params: CreateQueueInput): Promise<T>;
    deleteCluster<T>(params: DeleteClusterInput): Promise<T>;
    deleteComputeNodeGroup<T>(params: DeleteComputeNodeGroupInput): Promise<T>;
    deleteQueue<T>(params: DeleteQueueInput): Promise<T>;
    getCluster<T>(params: GetClusterInput): Promise<T>;
    getComputeNodeGroup<T>(params: GetComputeNodeGroupInput): Promise<T>;
    getQueue<T>(params: GetQueueInput): Promise<T>;
    listClusters<T>(params: ListClustersInput): Promise<T>;
    listComputeNodeGroups<T>(params: ListComputeNodeGroupsInput): Promise<T>;
    listQueues<T>(params: ListQueuesInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    registerComputeNodeGroupInstance<T>(params: RegisterComputeNodeGroupInstanceInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateCluster<T>(params: UpdateClusterInput): Promise<T>;
    updateComputeNodeGroup<T>(params: UpdateComputeNodeGroupInput): Promise<T>;
    updateQueue<T>(params: UpdateQueueInput): Promise<T>;
}
//# sourceMappingURL=PCS.d.ts.map