import { CfnResource, Resolvable } from '../../base';
export declare type JobTemplate_Type = 'AWS::IoT::JobTemplate';
export declare const JobTemplate_Type = "AWS::IoT::JobTemplate";
/**
 * Job templates enable you to preconfigure jobs so that you can deploy
 * them to multiple sets of target devices. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html}
 */
export default function JobTemplate(props: JobTemplate_Properties): CfnResource<JobTemplate_Properties>;
/**
 * Job templates enable you to preconfigure jobs so that you can deploy
 * them to multiple sets of target devices. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html}
 */
export declare type JobTemplate_Properties = {
    Arn?: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-jobarn}
     */
    JobArn?: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-jobtemplateid}
     */
    JobTemplateId: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-description}
     */
    Description: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-document}
     */
    Document?: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-documentsource}
     */
    DocumentSource?: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-timeoutconfig}
     */
    TimeoutConfig?: {
        InProgressTimeoutInMinutes: InProgressTimeoutInMinutes;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-jobexecutionsrolloutconfig}
     */
    JobExecutionsRolloutConfig?: {
        ExponentialRolloutRate?: ExponentialRolloutRate;
        MaximumPerMinute?: MaximumPerMinute;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-abortconfig}
     */
    AbortConfig?: {
        CriteriaList: AbortCriteria[];
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-presignedurlconfig}
     */
    PresignedUrlConfig?: {
        RoleArn: RoleArn;
        ExpiresInSec?: ExpiresInSec;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-jobtemplate.html#cfn-iot-jobtemplate-tags}
     */
    Tags?: Tag[];
};
export declare type ExponentialRolloutRate = {
    BaseRatePerMinute: BaseRatePerMinute;
    IncrementFactor: IncrementFactor;
    RateIncreaseCriteria: {
        [k: string]: unknown;
    };
};
export declare type BaseRatePerMinute = Resolvable<number>;
export declare type IncrementFactor = Resolvable<number>;
export declare type RateIncreaseCriteria = {
    NumberOfNotifiedThings?: NumberOfNotifiedThings;
    NumberOfSucceededThings?: NumberOfSucceededThings;
};
export declare type NumberOfNotifiedThings = Resolvable<number>;
export declare type NumberOfSucceededThings = Resolvable<number>;
export declare type MaximumPerMinute = Resolvable<number>;
export declare type AbortCriteria = {
    Action: Action;
    FailureType: FailureType;
    MinNumberOfExecutedThings: MinNumberOfExecutedThings;
    ThresholdPercentage: ThresholdPercentage;
};
export declare type Action = Resolvable<'CANCEL'>;
export declare type FailureType = Resolvable<'FAILED' | 'REJECTED' | 'TIMED_OUT' | 'ALL'>;
export declare type MinNumberOfExecutedThings = Resolvable<number>;
export declare type ThresholdPercentage = Resolvable<number>;
export declare type InProgressTimeoutInMinutes = Resolvable<number>;
export declare type RoleArn = Resolvable<string>;
export declare type ExpiresInSec = Resolvable<number>;
export declare type Tag = {
    Key: Resolvable<string>;
    Value: Resolvable<string>;
};
