stonfi_api_client 0.9.0

API client for Stonfi
Documentation
# stonfi_api_client

Thin typed wrapper for the [STON.fi API v1 and public export endpoints](https://api.ston.fi/swagger-ui).

Use this crate when an application needs typed access to STON.fi assets, pools,
farms, routers, swap/liquidity simulation, wallet views, stats, transactions, or
public export feeds. The crate does not execute swaps or manage transaction
submission; application code owns wallet signing, retries around business
workflows, persistence, and fallback behavior.

## Usage

```toml
[dependencies]
stonfi_api_client = "0.9"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

The minimum supported Rust version (MSRV) is 1.88.

Run requests inside an async Tokio runtime. Pass request parameter structs
directly where `Into<V1Request>` or `Into<ExportRequest>` is implemented, and
match response enums with a wildcard arm.

```rust,no_run
use stonfi_api_client::api_client::StonfiApiClient;
use stonfi_api_client::v1::{PoolsParams, V1Response};

# async fn example() -> Result<(), Box<dyn std::error::Error>> {
let client = StonfiApiClient::builder().build()?;
let response = client.v1.exec(PoolsParams::new()).await?;

match response {
    V1Response::Pools(pools) => {
        println!("pools: {}", pools.pool_list.len());
    }
    _ => {
        println!("unexpected STON.fi response variant");
    }
}
# Ok(())
# }
```

Use `ExportApiClient` for public export feeds:

```rust,no_run
use stonfi_api_client::api_client::StonfiApiClient;
use stonfi_api_client::export::{ExportRequest, ExportResponse};

# async fn example() -> Result<(), Box<dyn std::error::Error>> {
let client = StonfiApiClient::builder().build()?;
let response = client.export.exec(ExportRequest::Cmc).await?;

match response {
    ExportResponse::Cmc(pools) => println!("CMC pools: {}", pools.len()),
    _ => println!("unexpected STON.fi export response variant"),
}
# Ok(())
# }
```

## Supported Endpoints

| Group | Method                                        | Supported |
|-------|-----------------------------------------------|----------|
| AMM   | /v1/assets                                    ||
| AMM   | /v1/assets/query                              ||
| AMM   | /v1/assets/search                             ||
| AMM   | /v1/assets/{addr_str}                         ||
| AMM   | /v1/farms                                     ||
| AMM   | /v1/farms/by_pool/{pool_addr_str}             ||
| AMM   | /v1/farms/{addr_str}                          ||
| AMM   | /v1/jetton/{addr_str}/address                 ||
| AMM   | /v1/liquidity_provision/simulate              ||
| AMM   | /v1/markets                                   ||
| AMM   | /v1/pools/query                               ||
| AMM   | /v1/pools                                     ||
| AMM   | /v1/pools/by_market/{asset_0_addr_str}/{asset_1_addr_str} ||
| AMM   | /v1/pools/{addr_str}                          ||
| AMM   | /v1/reverse_swap/simulate                     ||
| AMM   | /v1/routers                                   ||
| AMM   | /v1/routers/{addr_str}                        ||
| AMM   | /v1/stats/dex                                 ||
| AMM   | /v1/stats/fee_accruals                        ||
| AMM   | /v1/stats/fee_withdrawals                     ||
| AMM   | /v1/stats/fees                                ||
| AMM   | /v1/stats/operations                          ||
| AMM   | /v1/stats/pool                                ||
| AMM   | /v1/stats/staking                             ||
| AMM   | /v1/swap/simulate                             ||
| AMM   | /v1/swap/status                               ||
| AMM   | /v1/transactions/query                        ||
| AMM   | /v1/transactions/{hash}/action_tree           ||
| AMM   | /v1/wallets/{addr_str}/assets                 ||
| AMM   | /v1/wallets/{addr_str}/assets/{asset_str}     ||
| AMM   | /v1/wallets/{addr_str}/farms                  ||
| AMM   | /v1/wallets/{addr_str}/farms/{farm_str}       ||
| AMM   | /v1/wallets/{addr_str}/fee_vaults             ||
| AMM   | /v1/wallets/{addr_str}/operations             ||
| AMM   | /v1/wallets/{addr_str}/pools                  ||
| AMM   | /v1/wallets/{addr_str}/pools/{pool_str}       ||
| AMM   | /v1/wallets/{addr_str}/stakes                 ||
| AMM   | /v1/wallets/{addr_str}/transactions/last      ||
| Export | /export/cmc/v1                               ||
| Export | /export/dexscreener/v1/asset/{address}       ||
| Export | /export/dexscreener/v1/events                ||
| Export | /export/dexscreener/v1/latest-block          ||
| Export | /export/dexscreener/v1/pair/{address}        ||

Public request and response types are marked `#[non_exhaustive]` for semver
headroom. Build public POD structs with `Default::default().with_<field>(...)`
or request parameter `new()` constructors, pass request parameters directly to
`V1ApiClient::exec` or `ExportApiClient::exec` where `Into<V1Request>` or
`Into<ExportRequest>` is implemented, and include a wildcard arm when matching
response enums.

Live API tests hit STON.fi directly. Asset metadata, pool counts, prices,
transaction state, and optional transaction fields can drift with upstream data.