import type { Construct } from 'constructs';
import type { AlgorithmSpecification, Channel, OutputDataConfig, ResourceConfig, StoppingCondition, VpcConfig } from './base-types';
import * as ec2 from '../../../aws-ec2';
import * as iam from '../../../aws-iam';
import * as sfn from '../../../aws-stepfunctions';
interface SageMakerCreateTrainingJobOptions {
    /**
     * Training Job Name.
     */
    readonly trainingJobName: string;
    /**
     * Role for the Training Job. The role must be granted all necessary permissions for the SageMaker training job to
     * be able to operate.
     *
     * See https://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms
     *
     * @default - a role will be created.
     */
    readonly role?: iam.IRole;
    /**
     * Identifies the training algorithm to use.
     */
    readonly algorithmSpecification: AlgorithmSpecification;
    /**
     * Isolates the training container. No inbound or outbound network calls can be made to or from the training container.
     *
     * @default false
     */
    readonly enableNetworkIsolation?: boolean;
    /**
     * Algorithm-specific parameters that influence the quality of the model. Set hyperparameters before you start the learning process.
     * For a list of hyperparameters provided by Amazon SageMaker
     * @see https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html
     *
     * @default - No hyperparameters
     */
    readonly hyperparameters?: {
        [key: string]: any;
    };
    /**
     *  Describes the various datasets (e.g. train, validation, test) and the Amazon S3 location where stored.
     *
     * @default - No inputDataConfig
     */
    readonly inputDataConfig?: Channel[];
    /**
     * Tags to be applied to the train job.
     *
     * @default - No tags
     */
    readonly tags?: {
        [key: string]: string;
    };
    /**
     * Identifies the Amazon S3 location where you want Amazon SageMaker to save the results of model training.
     */
    readonly outputDataConfig: OutputDataConfig;
    /**
     * Specifies the resources, ML compute instances, and ML storage volumes to deploy for model training.
     *
     * @default - 1 instance of EC2 `M4.XLarge` with `10GB` volume
     */
    readonly resourceConfig?: ResourceConfig;
    /**
     * Sets a time limit for training.
     *
     * @default - max runtime of 1 hour
     */
    readonly stoppingCondition?: StoppingCondition;
    /**
     * Specifies the VPC that you want your training job to connect to.
     *
     * @default - No VPC
     */
    readonly vpcConfig?: VpcConfig;
    /**
     * Environment variables to set in the Docker container.
     *
     * @default - No environment variables
     */
    readonly environment?: {
        [key: string]: string;
    };
}
/**
 * Properties for creating an Amazon SageMaker training job using JSONPath
 */
export interface SageMakerCreateTrainingJobJsonPathProps extends sfn.TaskStateJsonPathBaseProps, SageMakerCreateTrainingJobOptions {
}
/**
 * Properties for creating an Amazon SageMaker training job using JSONata
 */
export interface SageMakerCreateTrainingJobJsonataProps extends sfn.TaskStateJsonataBaseProps, SageMakerCreateTrainingJobOptions {
}
/**
 * Properties for creating an Amazon SageMaker training job
 */
export interface SageMakerCreateTrainingJobProps extends sfn.TaskStateBaseProps, SageMakerCreateTrainingJobOptions {
}
/**
 * Class representing the SageMaker Create Training Job task.
 */
export declare class SageMakerCreateTrainingJob extends sfn.TaskStateBase implements iam.IGrantable, ec2.IConnectable {
    private readonly props;
    /**
     * Uniquely identifies this class.
     */
    static readonly PROPERTY_INJECTION_ID: string;
    /**
     * A Step Functions Task using JSONPath to create a SageMaker training job.
     */
    static jsonPath(scope: Construct, id: string, props: SageMakerCreateTrainingJobJsonPathProps): SageMakerCreateTrainingJob;
    /**
     * A Step Functions Task using JSONata to create a SageMaker training job.
     */
    static jsonata(scope: Construct, id: string, props: SageMakerCreateTrainingJobJsonataProps): SageMakerCreateTrainingJob;
    private static readonly SUPPORTED_INTEGRATION_PATTERNS;
    /**
     * Allows specify security group connections for instances of this fleet.
     */
    readonly connections: ec2.Connections;
    protected readonly taskPolicies?: iam.PolicyStatement[];
    protected readonly taskMetrics?: sfn.TaskMetricsConfig;
    /**
     * The Algorithm Specification
     */
    private readonly algorithmSpecification;
    /**
     * The Input Data Config.
     */
    private readonly inputDataConfig?;
    /**
     * The resource config for the task.
     */
    private readonly resourceConfig;
    /**
     * The resource config for the task.
     */
    private readonly stoppingCondition;
    private readonly vpc?;
    private securityGroup?;
    private readonly securityGroups;
    private readonly subnets?;
    private readonly integrationPattern;
    private _role?;
    private _grantPrincipal?;
    constructor(scope: Construct, id: string, props: SageMakerCreateTrainingJobProps);
    /**
     * The execution role for the Sagemaker training job.
     *
     * Only available after task has been added to a state machine.
     */
    get role(): iam.IRole;
    get grantPrincipal(): iam.IPrincipal;
    /**
     * Add the security group to all instances via the launch configuration
     * security groups array.
     *
     * @param securityGroup: The security group to add
     */
    addSecurityGroup(securityGroup: ec2.ISecurityGroup): void;
    /**
     * @internal
     */
    protected _renderTask(topLevelQueryLanguage?: sfn.QueryLanguage): any;
    private renderParameters;
    private renderAlgorithmSpecification;
    private renderInputDataConfig;
    private renderOutputDataConfig;
    private renderResourceConfig;
    private renderStoppingCondition;
    private renderHyperparameters;
    private renderVpcConfig;
    private validateAlgorithmName;
    private makePolicyStatements;
}
export {};
