# StateGraph

A collection of connected states.

A StateGraph is used to keep track of all states that are connected (have
transitions between them). It does not include the substatemachines in
a Parallel's branches: those are their own StateGraphs, but the graphs
themselves have a hierarchical relationship as well.

By assigning states to a definitive StateGraph, we verify that no state
machines are constructed. In particular:

- Every state object can only ever be in 1 StateGraph, and not inadvertently
  be used in two graphs.
- Every stateId must be unique across all states in the entire state
  machine.

All policy statements in all states in all substatemachines are bubbled so
that the top-level StateMachine instantiation can read them all and add
them to the IAM Role.

You do not need to instantiate this class; it is used internally.

- Source: [`aws-stepfunctions/lib/state-graph.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-stepfunctions/lib/state-graph.ts#L32)
- Type last changed: v2.178.0 · 6 Feb 2025

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_stepfunctions as stepfunctions } from 'aws-cdk-lib';

declare const state: stepfunctions.State;
const stateGraph = new stepfunctions.StateGraph(state, 'graphDescription');
```

## Initializer

```ts
new StateGraph(startState: State, graphDescription: string)
```

## Properties

- `policyStatements`: [PolicyStatement](/cdk/api/v2/docs/aws-cdk-lib.aws_iam.PolicyStatement.html)[] (required) — The accumulated policy statements.

- `startState`: [State](/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.State.html) (required) — state that gets executed when the state machine is launched.

- `timeout`: [Duration](/cdk/api/v2/docs/aws-cdk-lib.Duration.html) — Set a timeout to render into the graph JSON.

  **Default:** No timeout

  Read/write. Only makes sense on the top-level graph, subgraphs
  do not support this feature.

## Methods

- `bind(stateMachine: StateMachine): void` — Binds this StateGraph to the StateMachine it defines and updates state machine permissions if there are DistributedMap states.

- `registerPolicyStatement(statement: PolicyStatement): void` — Register a Policy Statement used by states in this graph.

- `registerState(state: State): void` — Register a state as part of this graph.

  Called by State.bindToGraph().

- `registerSuperGraph(graph: StateGraph): void` — Register this graph as a child of the given graph.

  Resource changes will be bubbled up to the given graph.

- `toGraphJson(queryLanguage?: QueryLanguage): json` — Return the Amazon States Language JSON for this graph.

- `toString(): string` — Return a string description of this graph.
