> For the complete documentation index, see [llms.txt](https://fifo-docs.gitbook.io/colibri/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fifo-docs.gitbook.io/colibri/colibri-core/processes.md).

# Processes

Processes are the atomic building blocks of Colibri. Each process is a plain function with:

* **Clear inputs and outputs** — Typed interfaces for predictable behavior
* **Standardized errors** — Every failure is wrapped in a typed [`ColibriError`](/colibri/colibri-core/error.md)
* **No orchestration coupling** — Processes do not depend on `convee`

## Available processes

| Process                                                                                                | Responsibility                                            |
| ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- |
| [BuildTransaction](/colibri/colibri-core/processes/build-transaction.md)                               | Build operations, fees and transaction preconditions      |
| [SimulateTransaction](/colibri/colibri-core/processes/simulate-transaction.md)                         | Obtain resource and authorization recommendations         |
| [SignAuthEntries](/colibri/colibri-core/processes/sign-auth-entries.md)                                | Sign contract authorization entries                       |
| [AssembleForEnforcement](/colibri/colibri-core/processes/assemble-for-enforcement.md)                  | Prepare delegated credentials for enforcement             |
| [EnforceSimulation](/colibri/colibri-core/processes/enforce-simulation.md)                             | Validate delegated authorization with a second simulation |
| [AssembleTransaction](/colibri/colibri-core/processes/assemble-transaction.md)                         | Apply final simulation data, resource controls and fees   |
| [EnvelopeSigningRequirements](/colibri/colibri-core/processes/envelope-signing-requirements.md)        | Resolve account thresholds and required signatures        |
| [SignEnvelope](/colibri/colibri-core/processes/sign-envelope.md)                                       | Authorize the final transaction envelope                  |
| [SendTransaction](/colibri/colibri-core/processes/send-transaction.md)                                 | Submit and wait for confirmation                          |
| [ParseClassicTransactionOutcome](/colibri/colibri-core/processes/parse-classic-transaction-outcome.md) | Decode confirmed classic operation results                |
| [WrapFeeBump](/colibri/colibri-core/processes/wrap-fee-bump.md)                                        | Wrap an inner transaction with a separate fee payer       |

## Process Structure

Each process is exported directly from [`@colibri/core`](/colibri/colibri-core/overview.md):

```typescript
import { BTX_ERRORS, buildTransaction } from "@colibri/core";

const transaction = await buildTransaction(input);
```

If you need stable ids or plugin targets for orchestration, use the matching step wrapper from [`steps`](/colibri/colibri-core/steps.md#available-steps) or one of the built-in [pipelines](/colibri/colibri-core/pipelines.md).

## When to Use Processes Directly

Use processes directly when you need:

* Fine-grained control over one operation
* Custom orchestration outside the built-in pipelines
* Direct unit testing of business logic
* A reusable function that should stay independent from pipeline/plugin concerns
