amp-rust 0.0.6

A Rust client for the Blockstream AMP API, providing interfaces for asset management, user operations, and token handling on the Liquid Network.
Documentation
# Changelog - Complete Enhanced Error Reporting

## Added - 8 New Enhanced Error Variants

### High Priority Enhancements

#### 1. Error::RequestFailedDetailed
- **Added**: Structured HTTP request failure reporting
- **Fields**: 
  - `method` - HTTP method (GET, POST, etc.)
  - `endpoint` - Full URL that was called
  - `status` - HTTP status code
  - `error_message` - Error details
- **Use Case**: API request failures with complete diagnostic context
- **Impact**: Significantly improves debugging of HTTP-level failures

#### 2. AmpError::RpcDetailed
- **Added**: Comprehensive Elements RPC error reporting
- **Fields**:
  - `rpc_method` - RPC method name
  - `params` - Parameters passed
  - `error_message` - Error description
  - `raw_response` - Complete raw RPC response
- **Use Case**: Blockchain operations, wallet queries, transaction broadcast
- **Impact**: Critical for debugging Elements node interactions

#### 3. AmpError::SerializationDetailed
- **Added**: Contextual JSON serialization error reporting
- **Fields**:
  - `operation` - "serialize" or "deserialize"
  - `data_type` - Type being processed
  - `context` - Operation description
  - `serde_error` - Original serde error
- **Use Case**: API response parsing, data conversions
- **Impact**: Helps identify schema mismatches and data issues

### Medium Priority Enhancements

#### 4. AmpError::ApiDetailed
- **Added**: Structured API operation error reporting
- **Fields**:
  - `endpoint` - API endpoint
  - `method` - HTTP method
  - `error_message` - Error details
- **Use Case**: Distribution operations, asset management
- **Impact**: Better API-level error diagnostics

#### 5. SignerError::LwkDetailed
- **Added**: Contextual LWK signing error reporting
- **Fields**:
  - `operation` - LWK operation type
  - `context` - Operation context
  - `error_message` - Error from LWK
- **Use Case**: Transaction signing, signer initialization
- **Impact**: Improves debugging of cryptographic operations

#### 6. SignerError::InvalidTransactionDetailed
- **Added**: Detailed transaction validation error reporting
- **Fields**:
  - `txid` - Transaction ID
  - `validation_details` - Specific validation failures
  - `error_message` - High-level description
- **Use Case**: Transaction structure validation
- **Impact**: Critical for debugging transaction construction issues

### Additional Enhancements

#### 7. SignerError::HexParseDetailed
- **Added**: Contextual hex parsing error reporting
- **Fields**:
  - `parsing_context` - What was being parsed
  - `hex_preview` - First 100 chars of hex string
  - `hex_error` - Original parsing error
- **Use Case**: Transaction hex parsing, address validation
- **Impact**: Helps identify malformed hex data

#### 8. SignerError::SerializationDetailed
- **Added**: Contextual mnemonic/wallet serialization errors
- **Fields**:
  - `operation` - "serialize" or "deserialize"
  - `data_type` - Type being processed
  - `context` - File path or operation
  - `serde_error` - Original error
- **Use Case**: Mnemonic storage, wallet persistence
- **Impact**: Improves debugging of wallet state issues

## Changed

### Error Method Updates

- **AmpError::with_context()**: Now handles `ApiDetailed` and `RpcDetailed` variants
- **AmpError::is_retryable()**: Now includes `RpcDetailed` in retryable conditions
- **AmpError::retry_instructions()**: Now provides instructions for `RpcDetailed` errors

## Testing

### New Test Files
- `tests/enhanced_errors_comprehensive_test.rs` - 12 comprehensive tests covering all variants
- `examples/enhanced_errors_showcase.rs` - Complete showcase of all error types

### Test Coverage
- ✅ All 8 enhanced variants have Display format tests
- ✅ All 8 enhanced variants have Debug format tests
- ✅ Context methods tested for all applicable variants
- ✅ Retryability logic tested for all applicable variants
- ✅ Integration with existing error handling verified

## Documentation

### New Documentation Files
- `docs/enhanced-errors-complete.md` - Complete reference for all enhanced errors
- `docs/error-inventory.md` - Full inventory of all error types in the crate

### Documentation Updates
- Complete usage guidelines
- Migration path from legacy variants
- Example integration code
- Backward compatibility notes

## Backward Compatibility

✅ **100% Backward Compatible**
- All legacy error variants remain functional
- No breaking changes
- Existing code continues to work without modifications
- Migration to enhanced variants is optional and incremental

## Statistics

- **Total Enhanced Variants**: 8
- **Total Error Enums**: 4 (Error, AmpError, TokenError, SignerError)
- **Lines of Code Added**: ~500
- **Tests Added**: 12
- **Examples Added**: 2
- **Documentation Pages**: 2

## Benefits Summary

1. **Faster Debugging** - Immediate visibility into error context
2. **Better Diagnostics** - Complete HTTP/RPC/operation context
3. **Production Ready** - Suitable for monitoring and alerting
4. **Developer Experience** - Clear, formatted error messages
5. **Data Preservation** - Raw responses included for analysis

## Migration Notes

### For Library Users

**No action required** - All existing code continues to work.

**Optional migration** - To benefit from enhanced errors:
1. Match on new detailed variants in error handling
2. Extract structured fields for logging/monitoring
3. Use enhanced context for user-facing error messages

### For Library Maintainers

**Future error creation** - Consider using enhanced variants when:
- Creating errors in RPC/API call sites
- Handling deserialization failures
- Reporting transaction validation errors
- Wrapping external library errors

The legacy variants remain available for simple cases where detailed context isn't needed.

## Examples

See:
- `examples/enhanced_errors_showcase.rs` for complete demonstration
- `tests/enhanced_errors_comprehensive_test.rs` for usage patterns
- `docs/enhanced-errors-complete.md` for detailed reference

## Verification

```bash
# Verify all tests pass
cargo test --lib

# Run enhanced error tests
cargo test --test enhanced_errors_comprehensive_test

# View showcase
cargo run --example enhanced_errors_showcase

# Check code quality
cargo clippy --lib -- -D warnings
cargo fmt --check
```

All checks pass successfully. ✅