> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://ensforge.com/api/mcp` to find what you need.

# createExecutionAdapter

Create a validated typed execution adapter.

## Import

```ts
import { createExecutionAdapter } from "@ensforge/hca";
```

## Usage

```ts
const execution = createExecutionAdapter(definition);
```

## Parameters

```ts
definition: ExecutionAdapterDefinition<P, A, S, Extensions>;
```

The definition supplies identity, capabilities, payload schemas, a versioned submission codec, policy and provider operations. Prepared and authorized payloads remain provider-owned. The required members are listed below.

## Return Type

`TypedExecutionAdapter<P, A, S, Extensions>`

## Error

Invalid identity, configuration and unsupported authorization remain explicit errors. Provider transport
and simulation failures must be reconciled before repeating a submission.

## Related

* [Guides](/hca/getting-started)
* [Compatibility](/hca/compatibility)

## Provider contract

`createExecutionAdapter(definition)` validates a typed provider definition:

| Member                                    | Responsibility                                                                |
| ----------------------------------------- | ----------------------------------------------------------------------------- |
| `id`, `chainId`, `profileId`              | Identify the provider and supported deployment                                |
| `configurationFingerprint`                | Stable, public configuration identity across restarts                         |
| `capabilities`                            | Explicitly advertise supported authorization, deployment and funding features |
| `supports`                                | Check a prepared ENS HCA plan                                                 |
| `prepare`                                 | Produce provider payload and a bounded execution review                       |
| `authorize`                               | Obtain authorization for that reviewed payload                                |
| `submit`                                  | Broadcast and return a tracking locator/reference                             |
| `getStatus`                               | Reconcile provider progress with receipts                                     |
| `schemas.prepared`, `schemas.authorized`  | Validate opaque provider payloads                                             |
| `submission.schema`, `submission.version` | Persist tracking fields with a versioned codec                                |
| `policy`                                  | Optional caller policy for reviewing execution                                |
| `extensions`                              | Optional provider-specific session, funding or recovery features              |

The returned adapter also exposes `serializeSubmission` and `restoreSubmission`. Restoring requires
expected chain, HCA, deployment profile and plan fingerprint. Never persist private keys, API keys,
authorized transaction payloads or whole provider clients. A submission codec should retain only
fields needed for tracking.

The concrete definition and returned interfaces are `ExecutionAdapterDefinition` and
`TypedExecutionAdapter` from `@ensforge/hca`. Built-in providers retain their richer return types;
Rhinestone exposes `execution.extensions.sessions` and `execution.crossChain`.
