circles-types 0.3.0

Core type definitions for the Circles protocol
Documentation
# circles-types

Shared types for the Circles protocol: RPC models, events, pathfinding structures, flow matrix types, contract bindings, and configuration. Used across all crates in this workspace.

## Highlights
- Alloy-backed primitives re-exported as `Address`, `TxHash`, `U256`, `U192`, etc.
- RPC/query models: `JsonRpcRequest/Response`, `QueryParams`, `PagedQueryParams`, `FilterPredicate`, `CirclesQueryResponse`.
- Pathfinding + flow: `FindPathParams`, `PathfindingResult`, `FlowMatrix`, `TransferStep`, `SimulatedBalance`.
- Events: `CirclesEvent`, `CirclesEventType` (25+ variants) with unknown-event fallback.
- Config: `CirclesConfig` shared across SDK/RPC/pathfinder/transfers.
- Profiles/trust/tokens/groups: `AvatarInfo`, `Profile`, `TrustRelation`, `TokenInfo`, `GroupRow`, and friends.

## Quickstart
```rust
use circles_types::{
    Address, AvatarInfo, AvatarType, CirclesConfig, FindPathParams, U256,
};

let config = CirclesConfig {
    circles_rpc_url: "https://rpc.aboutcircles.com/".into(),
    pathfinder_url: "https://pathfinder.aboutcircles.com/".into(),
    profile_service_url: "https://rpc.aboutcircles.com/profiles".into(),
    v1_hub_address: Address::ZERO,
    v2_hub_address: Address::ZERO,
    name_registry_address: Address::ZERO,
    base_group_mint_policy: Address::ZERO,
    standard_treasury: Address::ZERO,
    core_members_group_deployer: Address::ZERO,
    base_group_factory_address: Address::ZERO,
    lift_erc20_address: Address::ZERO,
    invitation_escrow_address: Address::ZERO,
    invitation_farm_address: Address::ZERO,
    referrals_module_address: Address::ZERO,
};

let params = FindPathParams {
    from: "0xabc...".parse()?,
    to: "0xdef...".parse()?,
    target_flow: U256::from(1_000_000_000_000_000_000u64), // 1 CRC
    use_wrapped_balances: Some(true),
    from_tokens: None,
    to_tokens: None,
    exclude_from_tokens: None,
    exclude_to_tokens: None,
    simulated_balances: None,
    max_transfers: None,
};

let avatar = AvatarInfo {
    block_number: 0,
    timestamp: None,
    transaction_index: 0,
    log_index: 0,
    transaction_hash: Default::default(),
    version: 2,
    avatar_type: AvatarType::CrcV2RegisterHuman,
    avatar: "0x123...".parse()?,
    token_id: None,
    has_v1: false,
    v1_token: None,
    cid_v0_digest: None,
    cid_v0: None,
    v1_stopped: None,
    is_human: true,
    name: None,
    symbol: None,
};
```

## Usage notes
- Designed for `serde` round-trips against Circles RPC responses and contract bindings generated in `crates/abis`.
- Unknown event types are preserved via `CrcUnknownEvent` to keep WS/HTTP parsing resilient.
- `FindPathParams.target_flow` is `U256` (RPC contract), but downstream helpers cap to `U192` for flow matrix safety.

## Links
- Workspace overview: [`../../README.md`]../../README.md
- TypeScript reference: https://github.com/aboutcircles/circles-sdk
- Alloy docs: https://alloy-rs.github.io/alloy/