> ## Documentation Index
> Fetch the complete documentation index at: https://docs.actioncodes.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Adapter

The `BaseChainAdapter` class is an abstract base class for implementing chain-specific protocol meta operations. It defines the required interface for encoding, decoding, injecting, and validating protocol meta in blockchain transactions.

***

## Type Parameter

* `T`: The chain-specific transaction type handled by the adapter.

***

## Abstract Methods

### encodeMeta

```ts theme={null}
abstract encodeMeta(meta: ProtocolMetaV1): any
```

Encodes protocol meta for this chain.

***

### decodeMeta

```ts theme={null}
abstract decodeMeta(tx: T): ProtocolMetaV1 | null
```

Decodes protocol meta from a chain-specific transaction.

***

### injectMeta

```ts theme={null}
abstract injectMeta(serializedTx: string, meta: ProtocolMetaV1): string
```

Injects protocol meta into a serialized transaction string.

***

### validate

```ts theme={null}
abstract validate(tx: T, authorities: string[], expectedPrefix?: string): boolean
```

Validates a transaction with protocol meta and authority list.

***

### hasIssuerSignature

```ts theme={null}
abstract hasIssuerSignature(tx: T, issuer: string): boolean
```

Checks if the issuer has signed the transaction.

***

### detectTampering

```ts theme={null}
detectTampering(tx: T, authorities: string[], expectedPrefix: string = 'DEFAULT'): boolean
```

Detects tampered transactions by cross-checking metadata and signatures. (Default implementation provided.)

***

### validateTransactionIntegrity

```ts theme={null}
protected abstract validateTransactionIntegrity(tx: T, meta: ProtocolMetaV1): boolean
```

Chain-specific transaction integrity validation. Override for additional logic.

***

### getCodeSignatureMessage

```ts theme={null}
getCodeSignatureMessage(code: string, timestamp: number, prefix: string = PROTOCOL_CODE_PREFIX): string
```

Returns the code signature message for signing and verification.

***

### verifyCodeSignature

```ts theme={null}
abstract verifyCodeSignature(actionCode: ActionCode): boolean
```

Verifies the code signature for the action code. Chain-specific implementation required.

***

### signWithProtocolKey

```ts theme={null}
abstract signWithProtocolKey(actionCode: ActionCode, key: any): Promise<ActionCode>
```

Signs the transaction with the protocol key using a callback approach. Chain-specific implementation required.

***

### verifyFinalizedTransaction

```ts theme={null}
abstract verifyFinalizedTransaction(tx: any, actionCode: ActionCode): boolean
```

Verifies the finalized transaction. Chain-specific implementation required.

***

### validateSignedMessage

```ts theme={null}
abstract validateSignedMessage(message: string, signedMessage: string, pubkey: string): boolean
```

Validates a signed message for sign-only mode. Chain-specific implementation required.

***
