import { Value } from '../../cloudformation/Value';
import { LoggingConfigurationProps } from './statemachine/LoggingConfigurationProps';
import { S3LocationProps } from './statemachine/S3LocationProps';
import { TagsEntryProps } from './statemachine/TagsEntryProps';
import { TracingConfigurationProps } from './statemachine/TracingConfigurationProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type StateMachineAttributes = {
    StateMachineRevisionId: Attribute<string>;
    Arn: Attribute<string>;
    Name: Attribute<string>;
};
export type StateMachine = AwsResource<'AWS::StepFunctions::StateMachine', StateMachineProperties, StateMachineAttributes>;
/**
  Provisions a state machine. A state machine consists of a collection of states that can do work (<code>Task</code> states), determine to which states to transition next (<code>Choice</code> states), stop an execution with an error (<code>Fail</code> states), and so on. State machines are specified using a JSON-based, structured language.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html">the AWS Docs</a>
*/
export declare function stateMachine(stateMachineProps: StateMachineProperties): StateMachine;
/**
  Provisions a state machine. A state machine consists of a collection of states that can do work (<code>Task</code> states), determine to which states to transition next (<code>Choice</code> states), stop an execution with an error (<code>Fail</code> states), and so on. State machines are specified using a JSON-based, structured language.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html">the AWS Docs</a>
*/
export interface StateMachineProperties {
    /** <code>DefinitionString</code>  <a name="cfn-stepfunctions-statemachine-definitionstring"></a>
  The Amazon States Language definition of the state machine. The state machine definition must be in JSON. See <a href="https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html">Amazon States Language</a>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    definitionString?: Value<string>;
    /** <code>LoggingConfiguration</code>  <a name="cfn-stepfunctions-statemachine-loggingconfiguration"></a>
  Defines what execution history events are logged and where they are logged.<br />
  By default, the <code>level</code> is set to <code>OFF</code>. For more information see <a href="https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html">Log Levels</a> in the AWS Step Functions User Guide.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    loggingConfiguration?: LoggingConfigurationProps;
    /** <code>DefinitionSubstitutions</code>  <a name="cfn-stepfunctions-statemachine-definitionsubstitutions"></a>
  A map (string to string) that specifies the mappings for placeholder variables in the state machine definition. This enables the customer to inject values obtained at runtime, for example from intrinsic functions, in the state machine definition. Variables can be template parameter names, resource logical IDs, resource attributes, or a variable in a key-value map.<br />
  Substitutions must follow the syntax: <code>${key_name}</code> or <code>${variable_1,variable_2,...}</code>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    definitionSubstitutions?: Value<{
        [key: string]: Value<any>;
    }>;
    /** <code>Definition</code>  <a name="cfn-stepfunctions-statemachine-definition"></a>
  The Amazon States Language definition of the state machine. The state machine definition must be in JSON or YAML, and the format of the object must match the format of your CloudFormation template file. See <a href="https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html">Amazon States Language</a>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    definition?: Value<any>;
    /** <code>DefinitionS3Location</code>  <a name="cfn-stepfunctions-statemachine-definitions3location"></a>
  The name of the S3 bucket where the state machine definition is stored. The state machine definition must be a JSON or YAML file.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    definitionS3Location?: S3LocationProps;
    /** <code>StateMachineName</code>  <a name="cfn-stepfunctions-statemachine-statemachinename"></a>
  The name of the state machine.<br />
  A name must
  not: ontain: */
    stateMachineName?: Value<string>;
    /** <code>RoleArn</code>  <a name="cfn-stepfunctions-statemachine-rolearn"></a>
  The Amazon Resource Name (ARN) of the IAM role to use for this state machine.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    roleArn: Value<string>;
    /** <code>Tags</code>  <a name="cfn-stepfunctions-statemachine-tags"></a>
  The list of tags to add to a resource.<br />
  Tags may only contain Unicode letters, digits, white space, or these symbols: <code>_ . : / = + - @</code>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    tags?: TagsEntryProps[];
    /** <code>StateMachineType</code>  <a name="cfn-stepfunctions-statemachine-statemachinetype"></a>
  Determines whether a <code>STANDARD</code> or <code>EXPRESS</code> state machine is created. The default is <code>STANDARD</code>. You cannot update the <code>type</code> of a state machine once it has been created. For more information on <code>STANDARD</code> and <code>EXPRESS</code> workflows, see <a href="https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html">Standard Versus Express Workflows</a> in the AWS Step Functions Developer Guide.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    stateMachineType?: Value<string>;
    /** <code>TracingConfiguration</code>  <a name="cfn-stepfunctions-statemachine-tracingconfiguration"></a>
  Selects whether or not the state machine’s AWS X-Ray tracing is enabled.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    tracingConfiguration?: TracingConfigurationProps;
}
