# Class BSV::Wallet::CLI::Commands::Reject <a id="class-BSV-Wallet-CLI-Commands-Reject"></a>

**Inherits:** `BSV::Wallet::CLI::Commands::Base`

+bin/wallet reject <action_id>+ — abandon a pending action.

Aligns with the project's no-invalid-state invariant: pending actions are
rejectable, broadcast-accepted actions are not. Hard fail on non-rejectable
state; the action stays in its current valid state.

`action_id` is the wallet's INTEGER primary key (the <code>id:</code> field
from +bin/wallet list actions+), NOT the BRC-100 UUID reference. The native
CLI uses wallet vocab; the sibling <code>bin/brc100</code> surface uses
references. Both stable identifiers show up in +list actions+ output;
operators pick the one that matches their CLI.

Engine error handling:
*   `InvalidParameterError` (unknown action_id, e.g. typo or stale id) is
    translated to `UsageError` → exit 2, matching the CLI "bad argument" path.
    Same class as the up-front shape check.
*   `CannotRejectInternalActionError` (broadcast_intent == 'none') bubbles
    through <code>Wallet::Error</code> → exit 1: the action exists but cannot
    be rejected — a genuine engine-state condition.
*   `CannotRejectAcceptedActionError` (broadcast accepted on-chain) same:
    bubbles → exit 1. Operator response is investigation, not retry.

## Public Instance Methods
### `build_parser()` <a id="method-i-build_parser"></a> <a id="build_parser-instance_method"></a>
Not documented.

### `call(args)` <a id="method-i-call"></a> <a id="call-instance_method"></a>
- **@raise** [UsageError]

### `name()` <a id="method-i-name"></a> <a id="name-instance_method"></a>
Not documented.
