# Classic Signing Requirements

<figure><img src="https://1878311582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrN5WLmmo14XNSVjsb16D%2Fuploads%2Fl7fy6iKoDr0ba8KURgbY%2Fimage.png?alt=media&#x26;token=dea9994a-2532-4428-a26e-06ac094ff92f" alt="" width="563"><figcaption></figcaption></figure>

This pipeline is responsible for analyzing a provided transaction to identify which signing thresholds need to be met for each account involved in the envelope according to a Stellar Classic transaction. The process will not analyze Soroban operations therefore it covers the following:

* Requirements to authorize the use of the envelope source account.
* Requirements for each classic operation contained in the envelope.

The output will bundle all the requirements in an array of `SignatureRequirement`.

For further details on Stellar signatures, refer to the [Signatures and Multisig official documentation](https://developers.stellar.org/docs/encyclopedia/signatures-multisig).

{% hint style="info" %}
Multisignature is currently not supported and should be added soon.
{% endhint %}

## Input

```typescript
type ClassicSignRequirementsPipelineInput = Transaction | FeeBumpTransaction
```

The Classic Signing Requirements pipeline accepts either a `Transaction` or `FeeBumpTransaction` object. When provided a Fee Bump object, it will only analyze the requirements of the outer envelope.

## **Output:**

```typescript
type ClassicSignRequirementsPipelineOutput = SignatureRequirement[]
```

The output directly returns an array of `SignatureRequirement` objects containing the necessary signatures to validate the transaction according to Stellar classic.

## SignatureRequirement

An object of type `SignatureRequirement` contains a public key and threshold level(low, medium or high) that indicates the required target threshold to authorize a transaction on behalf of that account.

```typescript
type SignatureRequirement = {
  publicKey: string
  thresholdLevel: SignatureThreshold
}

enum SignatureThreshold {
  low = 1,
  medium = 2,
  high = 3,
}
```
