1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*!
This crate provides routines for interacting with the [Zilliqa] network.
Sending [JSON-RPC requests], sending transactions, deploying [scilla contracts],
and interacting with them is easily possible using this crate.

[Zilliqa]: https://www.zilliqa.com/
[JSON-RPC requests]: https://dev.zilliqa.com/api/introduction/api-introduction/
[scilla contracts]: https://scilla-lang.org/

Here are some examples to get you started working with this crate.

First, create the project in a new directory:

```text
$ mkdir zilliqa-rs-example
$ cd zilliqa-rs-example
$ cargo init
```

Second, `zilliqa-rs` and `tokio` to the dependencies:

```text
$ cargo add zilliqa-rs tokio
```

Third, edit `src/main.rs`. Delete what's there and replace it with each example.

# Sending JSON-RPC requests
The first step to do anything in zilliqa-rs is to create a `Provider`.
Here we create an HTTP provider and call `GetBalance` JSON-RPC request.
```rust
use zilliqa_rs::providers::{Http, Provider};
use zilliqa_rs::middlewares::Middleware;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let provider = Provider::<Http>::try_from("http://127.0.0.1:5555")?.with_chain_id(222);
    let balance = provider.get_balance("0x381f4008505e940ad7681ec3468a719060caf796").await;
    Ok(())
}
```
*/

pub mod contract;
pub mod core;
pub mod crypto;
pub mod error;
pub mod middlewares;
pub mod providers;
pub mod signers;
pub mod transaction;
pub use error::Error;

/// Run them with `cargo test --doc`
#[doc = include_str!("../README.md")]
#[cfg(doctest)]
pub struct ReadmeDoctests;