# Classic Transaction

<figure><img src="https://1878311582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrN5WLmmo14XNSVjsb16D%2Fuploads%2FYx7NGx2qm7AIvJMWhjx0%2Fimage.png?alt=media&#x26;token=615901d9-ef1e-46ce-9c91-6ac6cdf829c5" alt=""><figcaption></figcaption></figure>

The ClassicTransaction pipeline is a multi-belt pipeline that covers the entire lifecycle process of a Classic Transaction. It implements the following inner pipelines in sequence:

1. Build Transaction
2. Classic Signing Requirements
3. Sign Transaction
4. Submit Transaction

## Input

```typescript
type SorobanTransactionPipelineInput = {
  txInvocation: TransactionInvocation
  operations: xdr.Operation[]
  options?: {
    executionPlugins?: SupportedInnerPlugins[]
  }
}
```

* **txInvocation**: A Transaction Invocation object containing the core parameters to build the transaction, such as fee, source account, signers, etc.
* **operations**:  An array of operations.
* **options**: An optional 'options' object with parameters to customize this transaction's execution. Refer to the 'Options' section down below for further details.

## Options

The options object provided in the input parameter for a Classic Transaction pipeline execution can be used to customize this execution's behavior accordingly.

* **executionsPlugins**: Accepts an array of plugins supported by the Classic Transaction pipeline and its inner pipelines to be used in this single transaction execution. This allows for a single-use customization to be used on target transactions and specific scenarios.

## Supported Plugins

As Classic Transaction is composed of inner pipelines, it supports a more robust plugin integration with three possible ways of customizing the pipeline behavior:

**Classic Pipeline plugin:**

Provided when instantiating the pipeline, plugins that are of type `ClassicTransactionPipelineType` pipeline or `Generic` can be used to modify the main pipeline during the `preProcess`, `postProcess` or `processError` phases.

**Classic Pipeline Supported plugins:**

Provided when instantiating the pipeline, plugins that are of the type of one of the inner pipelines will be included in the inner pipeline during execution.

**Execution Plugins:**

Provided in the input options, plugins that are of the type of one of the inner pipelines will be included in the inner pipeline only during this single execution.
