diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 53c4b89c3..87d4a5a6c 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -19,7 +19,8 @@ jobs: with: toolchain: nightly components: rustfmt - + - name: git submodule update + run: git submodule update --init --recursive - name: cargo fmt run: cargo +nightly fmt --all -- --check @@ -35,7 +36,8 @@ jobs: with: toolchain: stable components: clippy - + - name: git submodule update + run: git submodule update --init --recursive - name: cargo clippy run: cargo clippy --workspace --all-features -- -D warnings diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1091208e4..35f880b4f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,6 +18,7 @@ jobs: with: toolchain: 1.75.0 override: true - + - name: git submodule update + run: git submodule update --init --recursive - name: test run: cargo test --workspace --all-features --exclude documentation diff --git a/Cargo.lock b/Cargo.lock index e8999a446..bb8c5625b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,9 +29,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -217,10 +217,10 @@ version = "0.4.15" dependencies = [ "Inflector", "anyhow", - "arbiter-bindings", - "arbiter-core", - "arbiter-engine", - "arbiter-macros", + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.1", + "arbiter-engine 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "assert_cmd", "async-trait", "clap", @@ -250,11 +250,50 @@ dependencies = [ "serde", ] +[[package]] +name = "arbiter-bindings" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0333ea5e6f32bef018cd4a035ff0241899947d8e0c87346c868ec5d4bb51fc" +dependencies = [ + "ethers", + "serde", +] + +[[package]] +name = "arbiter-core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2864029729ccae7d474296d71b12ebc70c091562040a88b6d3fd3f52d8db6c7e" +dependencies = [ + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "async-stream", + "async-trait", + "bytes", + "crossbeam-channel", + "ethers", + "futures-locks", + "futures-timer", + "futures-util", + "hashbrown 0.14.3", + "hex", + "polars", + "rand", + "revm", + "revm-primitives 2.0.0", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "uint", +] + [[package]] name = "arbiter-core" version = "0.10.2" dependencies = [ - "arbiter-bindings", + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "assert_matches", "async-stream", "async-trait", @@ -287,9 +326,9 @@ name = "arbiter-engine" version = "0.2.0" dependencies = [ "anyhow", - "arbiter-bindings", - "arbiter-core", - "arbiter-macros", + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.1", + "arbiter-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "async-stream", "async-trait", "crossbeam-channel", @@ -307,6 +346,31 @@ dependencies = [ "tracing-test", ] +[[package]] +name = "arbiter-engine" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fe11da508518e823bf75dd0e4c20fed24214c09f2458e7db933c9f6dbfd885e" +dependencies = [ + "anyhow", + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.1", + "arbiter-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "async-stream", + "async-trait", + "crossbeam-channel", + "ethers", + "futures", + "futures-util", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "toml 0.8.10", + "tracing", +] + [[package]] name = "arbiter-macros" version = "0.1.1" @@ -315,6 +379,16 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "arbiter-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a685a9ee2090c7113919cb78d9e87e294b4f65e22f43c5938c301b853b78e411" +dependencies = [ + "quote", + "syn 2.0.48", +] + [[package]] name = "argminmax" version = "0.6.1" @@ -1406,8 +1480,8 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" name = "documentation" version = "0.0.1" dependencies = [ - "arbiter-bindings", - "arbiter-core", + "arbiter-bindings 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.1", "skeptic", "tokio", ] @@ -2302,9 +2376,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -3457,9 +3531,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "planus" @@ -5365,7 +5439,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.4", + "toml_edit 0.22.5", ] [[package]] @@ -5387,7 +5461,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -5398,7 +5472,7 @@ checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -5409,20 +5483,20 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.4" +version = "0.22.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" +checksum = "99e68c159e8f5ba8a28c4eb7b0c0c190d77bb479047ca713270048145a9ad28a" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.1", ] [[package]] @@ -6023,6 +6097,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90f4e0f530c4c69f62b80d839e9ef3855edc9cba471a160c4d692deed62b401" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" diff --git a/Cargo.toml b/Cargo.toml index 386f29904..3c784603f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,15 +30,15 @@ name = "arbiter" path = "bin/main.rs" [[example]] -name = "project" -path = "examples/project/main.rs" +name = "template" +path = "examples/arbiter-template/src/main.rs" [workspace.dependencies] # Local -arbiter-bindings = { path = "arbiter-bindings" } -arbiter-core = { path = "arbiter-core" } -arbiter-engine = { path = "arbiter-engine" } -arbiter-macros = { path = "arbiter-macros" } +arbiter-bindings = "0.1.4" +arbiter-core = "0.10.1" +arbiter-engine = "0.2.0" +arbiter-macros = "0.1.1" revm = { version = "5.0.0", features = ["ethersdb", "std", "serde"] } revm-primitives = "=2.0.0" diff --git a/arbiter-bindings/lib/forge-std b/arbiter-bindings/lib/forge-std index bdea49f9b..3725a22ae 160000 --- a/arbiter-bindings/lib/forge-std +++ b/arbiter-bindings/lib/forge-std @@ -1 +1 @@ -Subproject commit bdea49f9bb3c58c8c35850c3bdc17eaeea756e9a +Subproject commit 3725a22ae52065de9966beaf32de69aee46fb530 diff --git a/examples/arbiter-template b/examples/arbiter-template index 9a889ef63..e36a079c4 160000 --- a/examples/arbiter-template +++ b/examples/arbiter-template @@ -1 +1 @@ -Subproject commit 9a889ef63d78dac17cfb7b09e4039e2bfcb3337b +Subproject commit e36a079c44588e8c794e64c1c4689bbb314ce99a diff --git a/examples/project/behaviors/incrementer.rs b/examples/project/behaviors/incrementer.rs deleted file mode 100644 index 3fc567a3c..000000000 --- a/examples/project/behaviors/incrementer.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::sync::Arc; - -use anyhow::Result; -use arbiter_core::{events::stream_event, middleware::ArbiterMiddleware}; -use arbiter_engine::{ - machine::{Behavior, ControlFlow, EventStream}, - messager::Messager, -}; -use tracing::{debug, info}; - -use super::*; -use crate::bindings::modified_counter::{IncrementedFilter, ModifiedCounter}; - -#[derive(Debug, Serialize, Deserialize)] -pub struct Incrementer { - #[serde(default)] - curr_number_of_times: u64, - max_number_of_times: u64, - #[serde(skip)] - counter: Option>, -} - -#[async_trait::async_trait] -impl Behavior for Incrementer { - async fn startup( - &mut self, - client: Arc, - _messager: Messager, - ) -> Result> { - debug!("Incrementer starting up"); - let counter = ModifiedCounter::deploy(client.clone(), ())?.send().await?; - let stream = stream_event(counter.incremented_filter()); - counter.increment().send().await?.await?; - self.curr_number_of_times += 1; - let curr_number = counter.number().call().await?; - debug!("Incremented to: {}", curr_number); - self.counter = Some(counter); - Ok(stream) - } - - async fn process(&mut self, _event: IncrementedFilter) -> Result { - debug!("Incrementer processing event"); - let counter = self.counter.as_ref().unwrap(); - if self.curr_number_of_times < self.max_number_of_times { - counter.increment().send().await?.await?; - self.curr_number_of_times += 1; - let curr_number = counter.number().call().await?; - debug!("Incremented to: {}", curr_number); - Ok(ControlFlow::Continue) - } else { - info!("Incrementer done"); - return Ok(ControlFlow::Halt); - } - } -} diff --git a/examples/project/behaviors/mod.rs b/examples/project/behaviors/mod.rs deleted file mode 100644 index 09bbbd12e..000000000 --- a/examples/project/behaviors/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -use arbiter_engine::machine::{CreateStateMachine, Engine, StateMachine}; -use arbiter_macros::Behaviors; -use serde::{Deserialize, Serialize}; - -pub mod incrementer; - -use incrementer::Incrementer; - -#[derive(Debug, Serialize, Deserialize, Behaviors)] -pub enum Behaviors { - Incrementer(Incrementer), -} diff --git a/examples/project/bindings/mod.rs b/examples/project/bindings/mod.rs deleted file mode 100644 index ddfa7a8fb..000000000 --- a/examples/project/bindings/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod modified_counter; diff --git a/examples/project/bindings/modified_counter.rs b/examples/project/bindings/modified_counter.rs deleted file mode 100644 index f829a9f12..000000000 --- a/examples/project/bindings/modified_counter.rs +++ /dev/null @@ -1,448 +0,0 @@ -pub use modified_counter::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod modified_counter { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("increment"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("increment"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("number"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("number"), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("setNumber"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setNumber"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Incremented"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Incremented"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - },], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("NumberSet"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("NumberSet"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - },], - anonymous: false, - },], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - /// The parsed JSON ABI of the contract. - pub static MODIFIEDCOUNTER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FEther sent to non-payable functi`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02B\x80a\0m`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FEther sent to non-payable functi`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[P`\x046\x10a\0\x8EW`\x005`\xE0\x1C\x80c?\xB5\xC1\xCB\x14a\0\xF3W\x80c\x83\x81\xF5\x8A\x14a\x01\x08W\x80c\xD0\x9D\xE0\x8A\x14a\x01#W[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FContract does not have fallback `D\x82\x01\x90\x81Rtnor receive functions`X\x1B`d\x83\x01R`\x84\x82\xFD[a\x01\x06a\x01\x016`\x04a\x01\xB7V[a\x01+V[\0[a\x01\x11`\0T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\x01\x06a\x01fV[`\0\x81\x90U`@Q\x81\x81R\x7F\x9E\xC8%Ii\xD1\x97N\xAC\x8Ct\xAF\xB0\xC05\x95\xB4\xFF\xE0\xA1\xD7\xAD\x8A\x7F\x82\xED1\xB9\xC8T%\x91\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80T\x90\x80a\x01u\x83a\x02\x1BV[\x91\x90PUP\x7F \xD8\xA6\xF5\xA6\x93\xF9\xD1\xD6'\xA5\x98\xE8\x82\x0FzU\xEEt\xC1\x83\xAA\x8F\x1A0\xE8\xD4\xE8\xDD\x9A\x8D\x84`\0T`@Qa\x01\xAD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1V[`\0` \x82\x84\x03\x12\x15a\x02\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FABI decoding: tuple data too sho`D\x82\x01Ra\x1C\x9D`\xF2\x1B`d\x82\x01R`\x84\x81\xFD[P5\x91\x90PV[`\0`\x01\x82\x01a\x02;WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V"; - /// The bytecode of the contract. - pub static MODIFIEDCOUNTER_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FEther sent to non-payable functi`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[P`\x046\x10a\0\x8EW`\x005`\xE0\x1C\x80c?\xB5\xC1\xCB\x14a\0\xF3W\x80c\x83\x81\xF5\x8A\x14a\x01\x08W\x80c\xD0\x9D\xE0\x8A\x14a\x01#W[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FContract does not have fallback `D\x82\x01\x90\x81Rtnor receive functions`X\x1B`d\x83\x01R`\x84\x82\xFD[a\x01\x06a\x01\x016`\x04a\x01\xB7V[a\x01+V[\0[a\x01\x11`\0T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\x01\x06a\x01fV[`\0\x81\x90U`@Q\x81\x81R\x7F\x9E\xC8%Ii\xD1\x97N\xAC\x8Ct\xAF\xB0\xC05\x95\xB4\xFF\xE0\xA1\xD7\xAD\x8A\x7F\x82\xED1\xB9\xC8T%\x91\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80T\x90\x80a\x01u\x83a\x02\x1BV[\x91\x90PUP\x7F \xD8\xA6\xF5\xA6\x93\xF9\xD1\xD6'\xA5\x98\xE8\x82\x0FzU\xEEt\xC1\x83\xAA\x8F\x1A0\xE8\xD4\xE8\xDD\x9A\x8D\x84`\0T`@Qa\x01\xAD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1V[`\0` \x82\x84\x03\x12\x15a\x02\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FABI decoding: tuple data too sho`D\x82\x01Ra\x1C\x9D`\xF2\x1B`d\x82\x01R`\x84\x81\xFD[P5\x91\x90PV[`\0`\x01\x82\x01a\x02;WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V"; - /// The deployed bytecode of the contract. - pub static MODIFIEDCOUNTER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct ModifiedCounter(::ethers::contract::Contract); - impl ::core::clone::Clone for ModifiedCounter { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ModifiedCounter { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ModifiedCounter { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ModifiedCounter { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ModifiedCounter)) - .field(&self.address()) - .finish() - } - } - impl ModifiedCounter { - /// Creates a new contract instance with the specified `ethers` client - /// at `address`. The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - MODIFIEDCOUNTER_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` instance based on the - /// provided constructor arguments and sends it. Returns a new - /// instance of a deployer that returns an instance of this contract - /// after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the - /// argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract - /// instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the - /// `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MODIFIEDCOUNTER_ABI.clone(), - MODIFIEDCOUNTER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - /// Calls the contract's `increment` (0xd09de08a) function - pub fn increment(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([208, 157, 224, 138], ()) - .expect("method not found (this should never happen)") - } - /// Calls the contract's `number` (0x8381f58a) function - pub fn number( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([131, 129, 245, 138], ()) - .expect("method not found (this should never happen)") - } - /// Calls the contract's `setNumber` (0x3fb5c1cb) function - pub fn set_number( - &self, - new_number: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 181, 193, 203], new_number) - .expect("method not found (this should never happen)") - } - /// Gets the contract's `Incremented` event - pub fn incremented_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, IncrementedFilter> - { - self.0.event() - } - /// Gets the contract's `NumberSet` event - pub fn number_set_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, NumberSetFilter> { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ModifiedCounterEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for ModifiedCounter - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Incremented", abi = "Incremented(uint256)")] - pub struct IncrementedFilter { - pub new_number: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "NumberSet", abi = "NumberSet(uint256)")] - pub struct NumberSetFilter { - pub new_number: ::ethers::core::types::U256, - } - /// Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash, - )] - pub enum ModifiedCounterEvents { - IncrementedFilter(IncrementedFilter), - NumberSetFilter(NumberSetFilter), - } - impl ::ethers::contract::EthLogDecode for ModifiedCounterEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = IncrementedFilter::decode_log(log) { - return Ok(ModifiedCounterEvents::IncrementedFilter(decoded)); - } - if let Ok(decoded) = NumberSetFilter::decode_log(log) { - return Ok(ModifiedCounterEvents::NumberSetFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for ModifiedCounterEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IncrementedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::NumberSetFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ModifiedCounterEvents { - fn from(value: IncrementedFilter) -> Self { - Self::IncrementedFilter(value) - } - } - impl ::core::convert::From for ModifiedCounterEvents { - fn from(value: NumberSetFilter) -> Self { - Self::NumberSetFilter(value) - } - } - /// Container type for all input parameters for the `increment` function - /// with signature `increment()` and selector `0xd09de08a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "increment", abi = "increment()")] - pub struct IncrementCall; - /// Container type for all input parameters for the `number` function with - /// signature `number()` and selector `0x8381f58a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "number", abi = "number()")] - pub struct NumberCall; - /// Container type for all input parameters for the `setNumber` function - /// with signature `setNumber(uint256)` and selector `0x3fb5c1cb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setNumber", abi = "setNumber(uint256)")] - pub struct SetNumberCall { - pub new_number: ::ethers::core::types::U256, - } - /// Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash, - )] - pub enum ModifiedCounterCalls { - Increment(IncrementCall), - Number(NumberCall), - SetNumber(SetNumberCall), - } - impl ::ethers::core::abi::AbiDecode for ModifiedCounterCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Increment(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Number(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::SetNumber(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ModifiedCounterCalls { - fn encode(self) -> Vec { - match self { - Self::Increment(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Number(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetNumber(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for ModifiedCounterCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Increment(element) => ::core::fmt::Display::fmt(element, f), - Self::Number(element) => ::core::fmt::Display::fmt(element, f), - Self::SetNumber(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ModifiedCounterCalls { - fn from(value: IncrementCall) -> Self { - Self::Increment(value) - } - } - impl ::core::convert::From for ModifiedCounterCalls { - fn from(value: NumberCall) -> Self { - Self::Number(value) - } - } - impl ::core::convert::From for ModifiedCounterCalls { - fn from(value: SetNumberCall) -> Self { - Self::SetNumber(value) - } - } - /// Container type for all return fields from the `number` function with - /// signature `number()` and selector `0x8381f58a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NumberReturn(pub ::ethers::core::types::U256); -} diff --git a/examples/project/configs/example.toml b/examples/project/configs/example.toml deleted file mode 100644 index d1b5df64d..000000000 --- a/examples/project/configs/example.toml +++ /dev/null @@ -1,2 +0,0 @@ -[[my_agent]] -Incrementer = { max_number_of_times = 5 } diff --git a/examples/project/contracts/ModifiedCounter.sol b/examples/project/contracts/ModifiedCounter.sol deleted file mode 100644 index 253059cfb..000000000 --- a/examples/project/contracts/ModifiedCounter.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -contract ModifiedCounter { - uint256 public number; - - event NumberSet(uint256 newNumber); - event Incremented(uint256 newNumber); - - function setNumber(uint256 newNumber) public { - number = newNumber; - emit NumberSet(newNumber); - } - - function increment() public { - number++; - emit Incremented(number); - } -} diff --git a/examples/project/main.rs b/examples/project/main.rs deleted file mode 100644 index ed16fb9d1..000000000 --- a/examples/project/main.rs +++ /dev/null @@ -1,26 +0,0 @@ -pub mod behaviors; -pub mod bindings; - -use behaviors::Behaviors; - -/// To run this example, you can do the following from the `arbiter/` directory: -/// ```sh -/// cargo run --example project simulate examples/project/configs/example.toml -/// ``` -/// If you would like to see more detailed logs, you can run the following: -/// ```sh -/// cargo run --example project simulate examples/project/configs/example.toml -vvv -/// ``` -/// to get `debug` level logs. -/// -/// By running -/// ```sh -/// cargo run --example project -/// ``` -/// you will get the `--help` message for the project. -#[arbiter_macros::main( - name = "ExampleArbiterProject", - about = "Our example to get you started.", - behaviors = Behaviors -)] -pub async fn main() {}