#swap #bridge #api-bindings #request-response #api #web3 #symbiosis

symbiosis-api

Symbiosis API的高级绑定,用Rust编写

2个版本 (1个稳定版本)

1.0.0 2023年12月16日
0.1.0 2023年11月5日

#52 in #swap

GPL-3.0-or-later

43KB
933

symbiosis-api

Crates.io Documentation Codecov Build Status

Symbiosis API的高级绑定,用Rust编写。

Symbiosis API允许您将Symbiosis协议的功能集成到您的应用程序、平台或协议中。

通过集成Symbiosis API,您可以快速有效地为您的用户启用去中心化跨链兑换和跨链流动性管理。

此crate使用[reqwest] crate提供一个方便的高级HTTP客户端,用于与Symbiosis进行请求和响应,以及使用[serde]进行序列化和反序列化。

示例

让我们从以太坊上的ETH兑换到Mantle网络上的MNT开始。

use ethers_core::types::Chain;
use ethers_core::utils::parse_ether;
use symbiosis_api::cores::query::Query;
use symbiosis_api::{
    api::swapping,
    api::swapping::SwapResponse,
    symbiosis::Symbiosis,
    types::token::{Token, TokenAmount},
};

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    // Create the client.
    let client = Symbiosis::new("");

    // Create a simple endpoint.
    let eth = Token::builder().build()?;
    let mnt = Token::builder().chain_id(Chain::Mantle).build()?;
    let token_amount_in = TokenAmount::builder()
        .token(eth)
        .amount(parse_ether(1)?)
        .build()?;
    let endpoint = swapping::SwappingExactIn::builder()
        .token_amount_in(token_amount_in)
        .token_out(mnt)
        .from(
            "0xe99E80EE4792395b2F639eE0661150D2b6B1996d"
                .parse()
                .unwrap(),
        )
        .to("0xe99E80EE4792395b2F639eE0661150D2b6B1996d"
            .parse()
            .unwrap())
        .build()?;

    // Call the endpoint. The return type decides how to represent the value.
    let swapping: SwapResponse = endpoint.query(&client).await?;

    println!("{:?}", swapping);

    anyhow::Ok(())
}

有关更多示例,请参阅examples/目录。

此crate的设计基于https://plume.benboeckel.net/~/JustAnotherBlog/designing-rust-bindings-for-rest-ap-is

依赖项

~17–32MB
~522K SLoC