dex-connector 3.1.13

connections to dexes
Documentation
# DEX Connector

A Rust library for connecting to multiple decentralized exchanges (DEX) with conditional feature support.

## Supported DEX Protocols

- **Hyperliquid**: Native Rust implementation (always available)
- **Lighter**: Go SDK integration (conditional feature)
- **Others**: Extensible architecture for additional protocols

## Feature Flags

### `lighter-sdk` (default: **disabled** for safety)
Enables Lighter Go SDK integration with external shared library dependency.

**When enabled:**
- Full Lighter DEX functionality
- Requires `libsigner.so` shared library
- Go FFI bindings available
- **Architecture-specific**: Must match target platform

**When disabled:**
- Lighter functions return runtime errors
- No shared library dependencies
- Reduced binary size
- Safe for all architectures

## Build Options

### Default Build (Safe for All Architectures)
```bash
cargo build
```
Builds without native dependencies. Hyperliquid and other connectors work normally.

### With Lighter SDK Support
```bash
cargo build --features lighter-sdk
```

### Cross-Platform Development

**Development Environment (x86_64):**
```bash
# Install x86_64 Go libraries
cd /path/to/lighter-go
go build -buildmode=c-shared -trimpath -o ./build/signer-amd64.so ./sharedlib/sharedlib.go

# Build with Lighter support
export LIGHTER_GO_PATH=/path/to/lighter-go/build
export LD_LIBRARY_PATH=$LIGHTER_GO_PATH:$LD_LIBRARY_PATH
cargo build --features lighter-sdk
```

**Production Environment (ARM64):**
```bash
# Build ARM64 Go libraries
cd /path/to/lighter-go
go build -buildmode=c-shared -trimpath -o ./build/signer-arm64.so ./sharedlib/sharedlib.go

# Set environment and build
export LIGHTER_GO_PATH=/path/to/lighter-go/build
export LD_LIBRARY_PATH=$LIGHTER_GO_PATH:$LD_LIBRARY_PATH
cargo build --features lighter-sdk
```

**Important:** Always ensure `libsigner.so` matches your target architecture. Using x86_64 libraries on ARM64 (or vice versa) will cause segmentation faults.

## Usage Examples

### Creating Connectors

```rust
use dex_connector::*;

// Hyperliquid (always available)
let hyperliquid = create_hyperliquid_connector(
    api_key,
    secret_key,
    base_url,
    websocket_url,
)?;

// Lighter (requires lighter-sdk feature)
let lighter = create_lighter_connector(
    api_key,
    api_key_index,
    api_private_key,
    account_index,
    base_url,
    websocket_url,
)?;
```

### Feature-Conditional Code

The `lighter-sdk` feature enables integration with the Lighter Go shared library for cryptographic operations. When this feature is not available, the connector will return appropriate error messages.

## Dependencies

### Always Required
- Standard Rust crypto libraries
- HTTP/WebSocket clients
- Serde for JSON handling

### Conditional (lighter-sdk feature)
- `libc` for FFI
- External Go shared library (`libsigner.so`)

## Architecture

```
dex-connector/
├── src/
│   ├── lib.rs                    # Public API and traits
│   ├── dex_connector.rs          # Core connector trait
│   ├── hyperliquid_connector.rs  # Hyperliquid implementation
│   └── lighter_connector.rs      # Lighter implementation (conditional)
├── Cargo.toml                    # Feature flag configuration
└── README.md                     # This file
```

## Integration Notes

### For Library Users
- **Default**: Safe build without native dependencies
- **Enable lighter-sdk**: Only when you have matching architecture libraries
- **Handle errors**: Gracefully handle disabled feature runtime errors
- **Cross-platform**: Always rebuild `libsigner.so` for target architecture

### For Contributors
- Mark Lighter-specific code with `#[cfg(feature = "lighter-sdk")]`
- Provide meaningful error messages for disabled features
- Keep core functionality independent of optional features

## Error Handling

When `lighter-sdk` feature is disabled, Lighter-related functions return:
```rust
Err(DexError::Other(
    "Lighter Go SDK not available. Build with --features lighter-sdk to enable."
))
```

This allows applications to handle missing functionality gracefully.