# Module BSV::Wallet::Wire::Validation <a id="module-BSV-Wallet-Wire-Validation"></a>

Branded-type validators for BRC-100 parameters.

Each method raises InvalidParameterError on failure and returns nil on
success. Port of ts-sdk/src/wallet/validationHelpers.ts.

The existing ProtoWallet::Validators module delegates here so there is a
single source of truth for all parameter validation logic.

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

## Public Class Methods
### `acquisition_protocol!(name, value)` <a id="method-c-acquisition_protocol-21"></a> <a id="acquisition_protocol!-class_method"></a>
Validates a certificate acquisition protocol: 'direct' or 'issuance'.
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `base64_string!(name, value)` <a id="method-c-base64_string-21"></a> <a id="base64_string!-class_method"></a>
Validates that `value` is a Base64-encoded string.
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `basket_string!(name, value)` <a id="method-c-basket_string-21"></a> <a id="basket_string!-class_method"></a>
Validates a basket name (1..300 characters).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `description_5_to_50!(name, value)` <a id="method-c-description_5_to_50-21"></a> <a id="description_5_to_50!-class_method"></a>
Validates a description string (5..50 printable characters).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `hex_string!(name, value, length: = nil)` <a id="method-c-hex_string-21"></a> <a id="hex_string!-class_method"></a>
Validates that `value` is a hex string (even length, hex chars only).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@param** `length` [Integer, nil] expected number of hex chars (nil = any)
- **@raise** [InvalidParameterError]

### `key_id_string_1_to_800!(name, value)` <a id="method-c-key_id_string_1_to_800-21"></a> <a id="key_id_string_1_to_800!-class_method"></a>
Validates a BRC-43 key ID string (1..800 bytes).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `label_string!(name, value)` <a id="method-c-label_string-21"></a> <a id="label_string!-class_method"></a>
Validates a label string (1..150 characters, no spaces).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `originator_domain!(name, value)` <a id="method-c-originator_domain-21"></a> <a id="originator_domain!-class_method"></a>
Validates an originator domain (1..250 bytes UTF-8). The originator must fit
in a single-byte length field in the wire frame.
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `outpoint_string!(name, value)` <a id="method-c-outpoint_string-21"></a> <a id="outpoint_string!-class_method"></a>
Validates an outpoint string in the form "<64-hex-txid>.<vout>".
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `positive_integer_or_zero!(name, value)` <a id="method-c-positive_integer_or_zero-21"></a> <a id="positive_integer_or_zero!-class_method"></a>
Validates a non-negative integer.
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `protocol_string_5_to_400!(name, value)` <a id="method-c-protocol_string_5_to_400-21"></a> <a id="protocol_string_5_to_400!-class_method"></a>
Validates a BRC-43 protocol name string (5..400 chars, lowercase).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `pub_key_hex!(name, value)` <a id="method-c-pub_key_hex-21"></a> <a id="pub_key_hex!-class_method"></a>
Validates a compressed public key in hex form (66 chars, 02/03 prefix).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `satoshi_value!(name, value)` <a id="method-c-satoshi_value-21"></a> <a id="satoshi_value!-class_method"></a>
Validates a satoshi amount (0..21_000_000 * 10^8).
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]

### `wallet_counterparty!(name, value)` <a id="method-c-wallet_counterparty-21"></a> <a id="wallet_counterparty!-class_method"></a>
Validates a wallet counterparty: 'self', 'anyone', or a 66-char hex pubkey.
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate

### `wallet_protocol!(name, value)` <a id="method-c-wallet_protocol-21"></a> <a id="wallet_protocol!-class_method"></a>
Validates a BRC-43 protocol ID: [security_level (0-2), protocol_name (5-400
chars)].
- **@param** `name` [String] parameter name for error messages
- **@param** `value` [Object] the value to validate
- **@raise** [InvalidParameterError]
