cfmms 0.1.3

CFMM lib built in Rust enabling pair syncing and swap simulation with pools on Ethereum.
Documentation
# cffms-rs

Sync pairs and simulate swaps with constant function market makers on Ethereum.

- [Crates.io]https://crates.io/crates/pair_sync
- [Documentation in progress]https://docs.rs/pair_sync/0.1.0/pair_sync/


Filename: examples/sync-pairs.rs
```rust

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    //Add rpc endpoint here:
    let rpc_endpoint = "";
    let provider = Arc::new(Provider::<Http>::try_from(rpc_endpoint).unwrap());

    let mut dexes = vec![];

    //Add UniswapV2
    dexes.push(Dex::new(
        //Specify the factory address
        H160::from_str("0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f").unwrap(),
        //Specify the dex variant
        DexVariant::UniswapV2,
        //Specify the factory contract's creation block number
        2638438,
    ));

    //Add Sushiswap
    dexes.push(Dex::new(
        H160::from_str("0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac").unwrap(),
        DexVariant::UniswapV2,
        10794229,
    ));

    //Add UniswapV3
    dexes.push(Dex::new(
        H160::from_str("0x1F98431c8aD98523631AE4a59f267346ea31F984").unwrap(),
        DexVariant::UniswapV3,
        12369621,
    ));

    //Sync pairs
    sync::sync_pairs(dexes, provider).await?;

    Ok(())
}
```

## Supported Dexes

| Dex | Status |
|----------|------|
| UniswapV2 variants  |||
| UniswapV3  |||


## Running Examples

To run any of the examples, supply your node endpoint to the endpoint variable in each example file. For example in `sync-pairs.rs`:

```rust
    //Add rpc endpoint here:
    let rpc_endpoint = "";
```

Once you have supplied a node endpoint, you can simply run `cargo run --example <example_name>`.


## Filters

#### `filter_blacklisted_tokens`
- Removes any pair from a `Vec<Pair>` where either `token_a` or `token_b` matches a blacklisted address.

#### `filter_blacklisted_pools`
- Removes any pair from a `Vec<Pair>` where the `pair_address` matches a blacklisted address.

#### `filter_blacklisted_addresses`
- Removes any pair from a `Vec<Pair>` where either `token_a`, `token_b` or the `pair_address` matches a blacklisted address.

#### `filter_pools_below_usd_threshold`
- Removes any pair where the USD value of the pool is below the specified USD threshold.

#### `filter_pools_below_weth_threshold`
- Removes any pair where the USD value of the pool is below the specified WETH threshold.


## Upcoming Filters

#### `filter_fee_tokens`
- Removes any pair where  where either `token_a` or `token_b` is a token with fee on transfer.