# Class BSV::Network::Protocols::Arcade <a id="class-BSV-Network-Protocols-Arcade"></a>

**Inherits:** `BSV::Network::Protocol`

Arcade protocol implementation for submitting transactions to the BSV network.

Arcade is a sibling to ARC — both subclass Protocol directly. The request and
response shapes diverge enough to rule out a shared abstract base: Arcade uses
a narrower status taxonomy and a different broadcast response structure (no
txid on fresh submission; idempotent re-submit returns status plus txid plus
state).

## Example

    arcade = BSV::Network::Protocols::Arcade.new(
      base_url: 'https://arcade.gorillapool.io'
    )
    result = arcade.call(:broadcast, tx)
    result.http_success? # => true
    result.data['status'] # => "submitted"

- **@see** `https://github.com/bsv-blockchain/arcade` Arcade repository

## Constants
### `REJECTED_STATUSES` <a id="constant-REJECTED_STATUSES"></a> <a id="REJECTED_STATUSES-constant"></a>
Arcade response statuses that indicate a transaction was NOT accepted.
Narrower than ARC's taxonomy — Arcade has a single explicit rejection signal.

## Public Instance Methods
### `initialize(base_url:, api_key: = nil, auth: = nil, network: = nil, http_client: = nil, callback_url: = nil, callback_token: = nil)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
- **@param** `base_url` [String] Arcade base URL
- **@param** `api_key` [String, nil] legacy bearer token shorthand
- **@param** `auth` [Hash, Symbol, nil] auth config; takes precedence over +api_key:+
- **@param** `network` [String, nil] network name for base URL interpolation
- **@param** `http_client` [#request, nil] injectable HTTP client for testing
- **@param** `callback_url` [String, nil] optional X-CallbackUrl header value
- **@param** `callback_token` [String, nil] optional X-CallbackToken header value
- **@return** [Arcade] a new instance of Arcade
