# Module BSV::Wallet::Serializer::Common <a id="module-BSV-Wallet-Serializer-Common"></a>

Shared binary encoding helpers for BRC-103 per-call serializers.

Port of the shared helpers in go-sdk/wallet/serializer/serializer.go. All
methods operate on BSV::Wallet::Wire::Writer / Reader instances.

## Constants
### `COUNTERPARTY_ANYONE` <a id="constant-COUNTERPARTY_ANYONE"></a> <a id="COUNTERPARTY_ANYONE-constant"></a>
0x0C

### `COUNTERPARTY_SELF` <a id="constant-COUNTERPARTY_SELF"></a> <a id="COUNTERPARTY_SELF-constant"></a>
0x0B

### `PUBKEY_SIZE` <a id="constant-PUBKEY_SIZE"></a> <a id="PUBKEY_SIZE-constant"></a>
compressed secp256k1 public key

### `SEND_WITH_CODE_STATUSES` <a id="constant-SEND_WITH_CODE_STATUSES"></a> <a id="SEND_WITH_CODE_STATUSES-constant"></a>
Not documented.

### `SEND_WITH_STATUS_CODES` <a id="constant-SEND_WITH_STATUS_CODES"></a> <a id="SEND_WITH_STATUS_CODES-constant"></a>
Not documented.

### `SEND_WITH_STATUS_FAILED` <a id="constant-SEND_WITH_STATUS_FAILED"></a> <a id="SEND_WITH_STATUS_FAILED-constant"></a>
Not documented.

### `SEND_WITH_STATUS_SENDING` <a id="constant-SEND_WITH_STATUS_SENDING"></a> <a id="SEND_WITH_STATUS_SENDING-constant"></a>
Not documented.

### `SEND_WITH_STATUS_UNPROVEN` <a id="constant-SEND_WITH_STATUS_UNPROVEN"></a> <a id="SEND_WITH_STATUS_UNPROVEN-constant"></a>
Send-with result status codes (Go status.go).

## Public Class Methods
### `decode_outpoints(bytes)` <a id="method-c-decode_outpoints"></a> <a id="decode_outpoints-class_method"></a>
Decode a list of outpoints from binary (encoded as encode_outpoints).
- **@param** `bytes` [String, nil] binary data
- **@return** [Array<String>, nil] array of "txid_hex.vout" strings

### `encode_outpoints(outpoints)` <a id="method-c-encode_outpoints"></a> <a id="encode_outpoints-class_method"></a>
Encode a list of outpoints (varint count + 32-byte wire-order txid + varint
vout each). Returns nil bytes for nil input.
- **@param** `outpoints` [Array<String>, nil] array of "txid_hex.vout" strings
- **@return** [String, nil] binary or nil

### `read_counterparty(reader)` <a id="method-c-read_counterparty"></a> <a id="read_counterparty-class_method"></a>
Not documented.

### `read_key_related_params(reader)` <a id="method-c-read_key_related_params"></a> <a id="read_key_related_params-class_method"></a>
Not documented.

### `read_privileged_params(reader)` <a id="method-c-read_privileged_params"></a> <a id="read_privileged_params-class_method"></a>
Not documented.

### `read_protocol(reader)` <a id="method-c-read_protocol"></a> <a id="read_protocol-class_method"></a>
Not documented.

### `read_send_with_results(reader)` <a id="method-c-read_send_with_results"></a> <a id="read_send_with_results-class_method"></a>
Read a send_with_results array.
- **@param** `reader` [Wire::Reader]
- **@return** [Array<Hash>, nil]

### `to_binary(bytes)` <a id="method-c-to_binary"></a> <a id="to_binary-class_method"></a>
Coerce a byte payload to a binary String (ASCII-8BIT encoding).

Accepts either an Array<Integer> (as returned by ProtoWallet) or a String.
Serialisers use this so they remain compatible with both the in-process wallet
interface (Arrays) and the wire interface (Strings).

### `write_counterparty(writer, counterparty)` <a id="method-c-write_counterparty"></a> <a id="write_counterparty-class_method"></a>
Encode a counterparty: 'self' | 'anyone' | 66-char hex compressed pubkey.

Wire format:
    0x0B — self
    0x0C — anyone
    02/03 <32 bytes> — specific pubkey (first byte is the prefix of the 33-byte key)

### `write_key_related_params(writer, protocol_id:, key_id:, counterparty:, privileged: = nil, privileged_reason: = nil)` <a id="method-c-write_key_related_params"></a> <a id="write_key_related_params-class_method"></a>
Encode key-related params: protocol + key_id + counterparty + privileged
params.

### `write_privileged_params(writer, privileged, privileged_reason)` <a id="method-c-write_privileged_params"></a> <a id="write_privileged_params-class_method"></a>
Encode privileged flag + privileged_reason.

Wire format: optional_bool (0xFF=nil, 0x00=false, 0x01=true) + reason as
varint-len string, or 0xFF if reason is nil/empty (NegativeOneByte sentinel).

### `write_protocol(writer, protocol_id)` <a id="method-c-write_protocol"></a> <a id="write_protocol-class_method"></a>
Encode a BRC-43 protocol ID: [security_level (0-2), protocol_name].

Wire format: 1-byte security level + varint-len string.

### `write_send_with_results(writer, results)` <a id="method-c-write_send_with_results"></a> <a id="write_send_with_results-class_method"></a>
Write a send_with_results array: varint count + txid (32 bytes) + status byte
each. nil or empty → writes 0 count.
- **@param** `writer` [Wire::Writer]
- **@param** `results` [Array<Hash>, nil] array of { txid: String, status: Symbol }
