# For Market Makers

{% hint style="info" %}
**Good to know:** depending on the product you're building, it can be useful to explicitly document use cases. Got a product that can be used by a bunch of people in different ways? Maybe consider splitting it out!
{% endhint %}

## Programatic Trading Integrations

Fermi’s “promised-capital” primitive decouples inventory from liquidity provision. Lock any Solana SPL asset (or a basket) in a vault once; mint transferable vouchers that count as margin for any number of open orders. A single USDC can therefore back bids across twenty markets while it is simultaneously earning yield elsewhere—capital efficiency you normally only get on centralized prime brokers.

Makers earn a rebate schedule that scales with posted depth and time-at-best, paid in the taker’s quote asset; they also collect a share of Continuum’s sequencing fees for each block their liquidity helps settle. Because execution is provably FIFO, you can quote tighter spreads with lower adverse-selection risk, and you never need to over-pay gas to “guard” your position against sniping.

{% tabs %}
{% tab title="Rust" %}

#### Using the Rust Client Crate in Custom Rust Scripts <a href="#using-the-rust-client-crate-in-custom-rust-scripts" id="using-the-rust-client-crate-in-custom-rust-scripts"></a>

You can use the Fermi sequencer client crate to write your own Rust scripts:

```
use sequencer_client::market;
use sequencer_client::order_place;
use sequencer_client::order_cancel;
use sequencer_client::types::OrderSide;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // Create HTTP client
    let client = reqwest::Client::new();
    let server_url = "http://localhost:8082";
    
    // List markets
    let markets = market::list_markets(&client, server_url).await?;
    
    // Find a specific market
    let market = markets.iter()
        .find(|m| m.name == "SOL/USDC")
        .ok_or("SOL/USDC market not found")?;
    
    // Place a buy order
    order_place::place_order(
        &client,
        server_url,
        "./keypairs/your_keypair.json",
        OrderSide::Buy,
        100,  // Price
        1000, // Quantity
        &market.uuid,
        123   // Order ID
    ).await?;
    
    Ok(())
}
```

Key features for custom script development:

* Market operations: list, create, view orderbooks
* Order operations: place buy/sell orders, cancel orders
* Automated workflows: market making, testing, simulation

Dependencies required:

* `reqwest` for HTTP communication
* `tokio` for async runtime
* `serde` and `serde_json` for serialization
* `ed25519-dalek` for cryptographic signing

{% endtab %}

{% tab title="TS" %}
You can find the TS sdk on the following link: <https://github.com/zerooo111/fermi-hybrid-sdk>
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fermilabs.xyz/usage/for-market-makers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
