diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 85ddfc011..9ffb3a944 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -18,6 +18,9 @@ jobs: # We don't need to do rust static analysis on multiple platforms - os: ubuntu-latest task: rainix-rs-static + # Wasm target doesnt need to run on multiple platforms + - os: ubuntu-latest + task: rainix-wasm-artifacts fail-fast: false runs-on: ${{ matrix.os }} env: @@ -45,7 +48,9 @@ jobs: - run: nix develop -c rainix-rs-prelude working-directory: lib/rain.interpreter - run: nix develop -c rainix-sol-prelude - working-directory: lib/rain.metadata + working-directory: lib/rain.interpreter/lib/rain.metadata + - run: nix develop -c rainix-rs-prelude + working-directory: lib/rain.interpreter/lib/rain.metadata - run: nix develop -c rainix-sol-prelude - run: nix develop -c rainix-rs-prelude @@ -58,3 +63,4 @@ jobs: DEPLOY_VERIFIER: "" run: nix develop -c ${{ matrix.task }} + diff --git a/.gitmodules b/.gitmodules index f54074512..06a43b165 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,21 +1,9 @@ -[submodule "lib/rain.erc1820"] - path = lib/rain.erc1820 - url = https://github.com/rainprotocol/rain.erc1820 -[submodule "lib/rain.lib.memkv"] - path = lib/rain.lib.memkv - url = https://github.com/rainprotocol/rain.lib.memkv [submodule "lib/sushixswap-v2"] path = lib/sushixswap-v2 url = https://github.com/rainprotocol/sushixswap-v2 -[submodule "lib/rain.solmem"] - path = lib/rain.solmem - url = https://github.com/rainprotocol/rain.solmem [submodule "lib/rain.orderbook.interface"] path = lib/rain.orderbook.interface url = https://github.com/rainlanguage/rain.orderbook.interface -[submodule "lib/rain.metadata"] - path = lib/rain.metadata - url = https://github.com/rainlanguage/rain.metadata [submodule "lib/rain.interpreter"] path = lib/rain.interpreter url = https://github.com/rainlanguage/rain.interpreter diff --git a/Cargo.lock b/Cargo.lock index 6b336844c..0b3f68f28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -185,7 +185,7 @@ dependencies = [ [[package]] name = "alloy-ethers-typecast" version = "0.2.0" -source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=cbdedb77fb1994a18ceb47e72786f8b32b670669#cbdedb77fb1994a18ceb47e72786f8b32b670669" +source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=d9bd0fe8360d803ed3e58b34063890c8775999f2#d9bd0fe8360d803ed3e58b34063890c8775999f2" dependencies = [ "alloy-dyn-abi 0.6.4", "alloy-json-abi 0.6.4", @@ -194,6 +194,7 @@ dependencies = [ "async-trait", "derive_builder 0.12.0", "ethers", + "getrandom", "once_cell", "rain-error-decoding", "reqwest 0.11.27", @@ -5832,7 +5833,7 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rain-erc" version = "0.0.0" -source = "git+https://github.com/rainlanguage/rain.erc?rev=cc9d7c3c74cf8e9676d72ee054af7f1b67a84974#cc9d7c3c74cf8e9676d72ee054af7f1b67a84974" +source = "git+https://github.com/rainlanguage/rain.erc?rev=7f50b2c05eb41a77ee925ebe80fe49420a2b5b80#7f50b2c05eb41a77ee925ebe80fe49420a2b5b80" dependencies = [ "alloy-ethers-typecast", "alloy-primitives 0.6.4", @@ -5843,13 +5844,14 @@ dependencies = [ [[package]] name = "rain-error-decoding" version = "0.1.0" -source = "git+https://github.com/rainlanguage/rain.error?rev=700142c3c73d5cbaea82f1d51af5ce04de5bac6a#700142c3c73d5cbaea82f1d51af5ce04de5bac6a" +source = "git+https://github.com/rainlanguage/rain.error?rev=72d9577fdaf7135113847027ba951f9a43b41827#72d9577fdaf7135113847027ba951f9a43b41827" dependencies = [ "alloy-dyn-abi 0.6.4", "alloy-json-abi 0.6.4", "alloy-primitives 0.6.4", "alloy-sol-types 0.6.4", "ethers", + "getrandom", "once_cell", "reqwest 0.11.27", "serde", @@ -5894,8 +5896,8 @@ name = "rain-metadata" version = "0.0.2-alpha.6" dependencies = [ "alloy-ethers-typecast", - "alloy-json-abi 0.5.4", - "alloy-primitives 0.5.4", + "alloy-json-abi 0.6.4", + "alloy-primitives 0.6.4", "alloy-sol-types 0.6.4", "anyhow", "clap", @@ -6077,6 +6079,7 @@ dependencies = [ "dotrain", "dotrain-lsp", "futures", + "js-sys", "once_cell", "proptest", "rain-error-decoding", @@ -6091,9 +6094,9 @@ dependencies = [ "rain_orderbook_app_settings", "rain_orderbook_bindings", "rain_orderbook_subgraph_client", - "rand", "reqwest 0.11.27", "serde", + "serde-wasm-bindgen 0.6.5", "serde_bytes", "serde_json", "serde_yaml", @@ -6101,8 +6104,11 @@ dependencies = [ "thiserror", "tokio", "tracing", + "tsify", "typeshare", "url", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] @@ -6911,7 +6917,7 @@ checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" dependencies = [ "proc-macro2", "quote", - "serde_derive_internals", + "serde_derive_internals 0.29.0", "syn 2.0.61", ] @@ -7053,6 +7059,28 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_bytes" version = "0.11.14" @@ -7083,6 +7111,17 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "serde_derive_internals" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.61", +] + [[package]] name = "serde_derive_internals" version = "0.29.0" @@ -8017,6 +8056,30 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tsify" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0" +dependencies = [ + "serde", + "serde-wasm-bindgen 0.5.0", + "tsify-macros", + "wasm-bindgen", +] + +[[package]] +name = "tsify-macros" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals 0.28.0", + "syn 2.0.61", +] + [[package]] name = "tungstenite" version = "0.20.1" diff --git a/Cargo.toml b/Cargo.toml index cecaa3ad7..f79123460 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://github.com/rainprotocol/rain.orderbook" [workspace.dependencies] foundry-block-explorers = "0.2.6" -alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "cbdedb77fb1994a18ceb47e72786f8b32b670669" } +alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "d9bd0fe8360d803ed3e58b34063890c8775999f2" } alloy-sol-types = "0.6.3" alloy-primitives = "0.6.3" alloy-json-abi = "0.6.3" @@ -21,12 +21,12 @@ clap = { version = "4.2.5", features = ["cargo", "derive"] } once_cell = "1.17.1" reqwest = { version = "0.11.17", features = ["json"] } rust-bigint = "1.2.0" -serde = "1.0.160" +serde = "1.0.200" futures = "0.3.17" serde_bytes = "0.11.9" serde_json = "1.0.112" serde_yaml = "0.9.32" -tokio = { version = "1.28.0", features = ["full"] } +tokio = { version = "1.28.0" } tracing = "0.1.37" tracing-subscriber = "0.3.17" url = "2.5.0" @@ -39,9 +39,9 @@ thiserror = "1.0.56" strict-yaml-rust = "0.1.2" dotrain = "6.0.1-alpha.18" dotrain-lsp = "6.0.1-alpha.18" -rain-metadata = { path = "lib/rain.metadata/crates/cli" } -rain-metadata-bindings = { path = "lib/rain.metadata/crates/bindings" } -rain-metaboard-subgraph = { path = "lib/rain.metadata/crates/metaboard" } +rain-metadata = { path = "lib/rain.interpreter/lib/rain.metadata/crates/cli" } +rain-metadata-bindings = { path = "lib/rain.interpreter/lib/rain.metadata/crates/bindings" } +rain-metaboard-subgraph = { path = "lib/rain.interpreter/lib/rain.metadata/crates/metaboard" } rain_interpreter_bindings = { path = "lib/rain.interpreter/crates/bindings" } rain_interpreter_dispair = { path = "lib/rain.interpreter/crates/dispair" } rain_interpreter_parser = { path = "lib/rain.interpreter/crates/parser" } @@ -54,8 +54,8 @@ thirtyfour = "0.31.0" test-context = "0.3.0" portpicker = "0.1.1" rain-orderbook-env = { path = "crates/env" } -rain-erc = { git = "https://github.com/rainlanguage/rain.erc", rev = "cc9d7c3c74cf8e9676d72ee054af7f1b67a84974" } -rain-error-decoding = { git = "https://github.com/rainlanguage/rain.error", rev = "700142c3c73d5cbaea82f1d51af5ce04de5bac6a" } +rain-erc = { git = "https://github.com/rainlanguage/rain.erc", rev = "7f50b2c05eb41a77ee925ebe80fe49420a2b5b80" } +rain-error-decoding = { git = "https://github.com/rainlanguage/rain.error", rev = "72d9577fdaf7135113847027ba951f9a43b41827" } [workspace.dependencies.rain_orderbook_bindings] path = "crates/bindings" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 675fe9406..ffd66fa11 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -21,10 +21,16 @@ reqwest = { workspace = true } rust-bigint = { workspace = true } serde = { workspace = true } serde_bytes = { workspace = true } -tokio = { workspace = true } +# tokio = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ['env-filter'] } alloy-primitives = { workspace = true } alloy-sol-types = { workspace = true } comfy-table = { workspace = true } chrono = { workspace = true } + +[target.'cfg(not(target_family = "wasm"))'.dependencies] +tokio = { workspace = true, features = ["full"] } + +[target.'cfg(target_family = "wasm")'.dependencies] +tokio = { workspace = true, features = ["sync", "macros", "io-util", "rt", "time"] } \ No newline at end of file diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index b3480d710..e4412f4af 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -8,11 +8,14 @@ homepage = "https://github.com/rainprotocol/rain.orderbook" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["rlib", "cdylib"] + [dependencies] rain_orderbook_bindings = { workspace = true } rain_orderbook_subgraph_client = { workspace = true } rain_orderbook_app_settings = { workspace = true } -alloy-primitives = { workspace = true } +alloy-primitives = { workspace = true, features = ["rand"] } alloy-ethers-typecast = { workspace = true } alloy-sol-types = { workspace = true } url = { workspace = true } @@ -34,17 +37,25 @@ rain-metadata-bindings = { workspace = true } rain_interpreter_bindings = { workspace = true } rain_interpreter_dispair = { workspace = true } rain_interpreter_parser = { workspace = true } -rain-interpreter-eval = { workspace = true } -rain-orderbook-env = { workspace = true } serde_bytes = { workspace = true } -tokio = { workspace = true } -proptest = { workspace = true } typeshare = { workspace = true } csv = { workspace = true } chrono = { workspace = true } futures = { workspace = true } rain-error-decoding = { workspace = true } -rand = "0.8.5" + +[target.'cfg(not(target_family = "wasm"))'.dependencies] +tokio = { workspace = true, features = ["full"] } +rain-interpreter-eval = { workspace = true } +proptest = { workspace = true } + +[target.'cfg(target_family = "wasm")'.dependencies] +js-sys = { version = "0.3.69" } +wasm-bindgen = { version = "0.2.92" } +serde-wasm-bindgen = { version = "0.6.5" } +wasm-bindgen-futures = { version = "0.4.42" } +tsify = { version = "0.4.5", default-features = false, features = ["js", "wasm-bindgen"] } +tokio = { workspace = true, features = ["sync", "macros", "io-util", "rt", "time"] } [dev-dependencies] -tokio = { workspace = true } +rain-orderbook-env = { workspace = true } \ No newline at end of file diff --git a/crates/common/src/add_order.rs b/crates/common/src/add_order.rs index 99acf866e..1cceda3a2 100644 --- a/crates/common/src/add_order.rs +++ b/crates/common/src/add_order.rs @@ -4,9 +4,10 @@ use crate::{ }; use alloy_ethers_typecast::transaction::{ ReadContractParameters, ReadableClientError, ReadableClientHttp, WritableClientError, - WriteTransaction, WriteTransactionStatus, }; -use alloy_primitives::{hex::FromHexError, Address, U256}; +#[cfg(not(target_family = "wasm"))] +use alloy_ethers_typecast::transaction::{WriteTransaction, WriteTransactionStatus}; +use alloy_primitives::{hex::FromHexError, private::rand, Address, U256}; use alloy_sol_types::SolCall; use dotrain::{error::ComposeError, RainDocument, Rebind}; use rain_interpreter_dispair::{DISPair, DISPairError}; @@ -212,6 +213,7 @@ impl AddOrderArgs { }) } + #[cfg(not(target_family = "wasm"))] pub async fn execute)>( &self, transaction_args: TransactionArgs, diff --git a/crates/common/src/deposit.rs b/crates/common/src/deposit.rs index 6e0c8282b..5179a081a 100644 --- a/crates/common/src/deposit.rs +++ b/crates/common/src/deposit.rs @@ -1,10 +1,12 @@ use crate::transaction::{TransactionArgs, TransactionArgsError, WritableTransactionExecuteError}; +use alloy_ethers_typecast::transaction::{ + ReadContractParametersBuilder, ReadContractParametersBuilderError, ReadableClient, + ReadableClientError, WritableClientError, +}; +#[cfg(not(target_family = "wasm"))] use alloy_ethers_typecast::{ ethers_address_to_alloy, - transaction::{ - ReadContractParametersBuilder, ReadContractParametersBuilderError, ReadableClient, - ReadableClientError, WritableClientError, WriteTransaction, WriteTransactionStatus, - }, + transaction::{WriteTransaction, WriteTransactionStatus}, }; use alloy_primitives::{Address, U256}; use alloy_sol_types::SolCall; @@ -72,6 +74,7 @@ impl DepositArgs { } /// Execute IERC20 approve call + #[cfg(not(target_family = "wasm"))] pub async fn execute_approve)>( &self, transaction_args: TransactionArgs, @@ -118,6 +121,7 @@ impl DepositArgs { } /// Execute OrderbookV3 deposit call + #[cfg(not(target_family = "wasm"))] pub async fn execute_deposit)>( &self, transaction_args: TransactionArgs, diff --git a/crates/common/src/dotrain_add_order_lsp.rs b/crates/common/src/dotrain_add_order_lsp.rs index 732511063..12d717648 100644 --- a/crates/common/src/dotrain_add_order_lsp.rs +++ b/crates/common/src/dotrain_add_order_lsp.rs @@ -1,10 +1,14 @@ +#[cfg(not(target_family = "wasm"))] use crate::add_order::ORDERBOOK_ORDER_ENTRYPOINTS; +#[cfg(not(target_family = "wasm"))] use crate::rainlang::parse_rainlang_on_fork; +#[cfg(not(target_family = "wasm"))] use alloy_primitives::Address; +use dotrain::Rebind; +#[cfg(not(target_family = "wasm"))] use dotrain::{ error::{ComposeError, ErrorCode}, types::ast::Problem, - Rebind, }; use dotrain_lsp::{ lsp_types::{CompletionItem, Hover, Position, TextDocumentItem}, @@ -53,6 +57,7 @@ impl DotrainAddOrderLsp { } /// get problems for a given text document item + #[cfg(not(target_family = "wasm"))] pub async fn problems( &self, rpc_url: &str, diff --git a/crates/common/src/fuzz/mod.rs b/crates/common/src/fuzz/mod.rs index 3fb21e40e..48062939a 100644 --- a/crates/common/src/fuzz/mod.rs +++ b/crates/common/src/fuzz/mod.rs @@ -1,6 +1,6 @@ use crate::add_order::ORDERBOOK_ORDER_ENTRYPOINTS; use alloy_ethers_typecast::transaction::{ReadableClientError, ReadableClientHttp}; -use alloy_primitives::U256; +use alloy_primitives::{private::rand, U256}; use dotrain::{error::ComposeError, RainDocument, Rebind}; use futures::TryFutureExt; use proptest::prelude::RngCore; diff --git a/crates/common/src/js_api/mod.rs b/crates/common/src/js_api/mod.rs new file mode 100644 index 000000000..f76eb090a --- /dev/null +++ b/crates/common/src/js_api/mod.rs @@ -0,0 +1,50 @@ +use crate::{ + add_order::{AddOrderArgs, AddOrderArgsError}, + frontmatter::parse_frontmatter, + transaction::TransactionArgs, +}; +use js_sys::Uint8Array; +use rain_orderbook_app_settings::{Config, ParseConfigSourceError}; +use std::ops::Deref; +use thiserror::Error; +use wasm_bindgen::prelude::*; + +/// Represents all possible errors of this module +#[derive(Debug, Error)] +pub enum Error { + #[error("undefined deployment")] + UndefinedDeployment, + #[error(transparent)] + ParseConfigSourceError(#[from] ParseConfigSourceError), + #[error(transparent)] + AddOrderArgsError(#[from] AddOrderArgsError), +} + +impl From for JsValue { + fn from(value: Error) -> Self { + serde_wasm_bindgen::to_value(&value.to_string()).unwrap_or(JsValue::NULL) + } +} + +/// Get addOrder() calldata from a given dotrain text and deployment key from its frontmatter +#[wasm_bindgen(js_name = "getAddOrderCalldata")] +pub async fn get_add_order_calldata(dotrain: &str, deployment: &str) -> Result { + let config: Config = parse_frontmatter(dotrain.to_string()).await?.try_into()?; + let deployment_ref = config + .deployments + .get(deployment) + .ok_or(Error::UndefinedDeployment)?; + let add_order_args = + AddOrderArgs::new_from_deployment(dotrain.to_string(), deployment_ref.deref().clone()) + .await?; + + let tx_args = TransactionArgs { + rpc_url: deployment_ref.scenario.deployer.network.rpc.to_string(), + ..Default::default() + }; + Ok(add_order_args + .get_add_order_calldata(tx_args) + .await? + .as_slice() + .into()) +} diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index 4dcc0f2ea..ac36b8426 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -4,6 +4,7 @@ pub mod deposit; pub mod dotrain_add_order_lsp; pub mod dotrain_order; pub mod frontmatter; +#[cfg(not(target_family = "wasm"))] pub mod fuzz; pub mod meta; pub mod rainlang; @@ -14,5 +15,8 @@ pub mod types; pub mod utils; pub mod withdraw; +#[cfg(target_family = "wasm")] +pub mod js_api; + pub use dotrain; pub use dotrain_lsp; diff --git a/crates/common/src/rainlang.rs b/crates/common/src/rainlang.rs index d84ef59ae..700ffc26e 100644 --- a/crates/common/src/rainlang.rs +++ b/crates/common/src/rainlang.rs @@ -1,80 +1,9 @@ use crate::add_order::ORDERBOOK_ORDER_ENTRYPOINTS; use crate::dotrain_add_order_lsp::LANG_SERVICES; -use alloy_ethers_typecast::transaction::{ReadableClientError, ReadableClientHttp}; -use alloy_primitives::{bytes::Bytes, Address}; use dotrain::error::ComposeError; use dotrain::RainDocument; use dotrain::Rebind; -use once_cell::sync::Lazy; -use rain_error_decoding::AbiDecodedErrorType; -use rain_interpreter_eval::error::ForkCallError; -use rain_interpreter_eval::eval::ForkParseArgs; -use rain_interpreter_eval::fork::Forker; -use rain_interpreter_eval::fork::NewForkedEvm; use std::collections::HashMap; -use std::sync::Arc; -use thiserror::Error; -use tokio::sync::Mutex; - -pub static FORKER: Lazy>> = Lazy::new(|| Arc::new(Mutex::new(Forker::new()))); - -#[derive(Debug, Error)] -pub enum ForkParseError { - #[error("Fork Cache Poisoned")] - ForkCachePoisoned, - #[error(transparent)] - ForkerError(ForkCallError), - #[error("Fork Call Reverted: {0}")] - ForkCallReverted(#[from] AbiDecodedErrorType), - #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), - #[error("Failed to read Parser address from deployer")] - ReadParserAddressFailed, -} - -impl From for ForkParseError { - fn from(value: ForkCallError) -> Self { - match value { - ForkCallError::AbiDecodedError(v) => Self::ForkCallReverted(v), - other => Self::ForkerError(other), - } - } -} - -/// checks the front matter validity and parses the given rainlang string -/// with the deployer parsed from the front matter -/// returns abi encoded expression config on Ok variant -pub async fn parse_rainlang_on_fork( - rainlang: &str, - rpc_url: &str, - block_number: Option, - deployer: Address, -) -> Result { - // Prepare evm fork - let block_number_val = match block_number { - Some(b) => b, - None => { - let client = ReadableClientHttp::new_from_url(rpc_url.to_string())?; - - client.get_block_number().await? - } - }; - let args = NewForkedEvm { - fork_url: rpc_url.to_owned(), - fork_block_number: Some(block_number_val), - }; - let mut forker = FORKER.lock().await; - forker.add_or_select(args, None).await?; - - let parse_args = ForkParseArgs { - rainlang_string: rainlang.to_owned(), - deployer, - decode_errors: true, - }; - let result = forker.fork_parse(parse_args).await?; - - Ok(result.raw.result.0) -} /// Compose to rainlang string by setting elided bindings to zero pub fn compose_to_rainlang( @@ -114,3 +43,81 @@ pub fn compose_to_rainlang( RainDocument::create(dotrain, Some(meta_store), None, Some(final_bindings)) .compose(&ORDERBOOK_ORDER_ENTRYPOINTS) } + +#[cfg(not(target_family = "wasm"))] +pub use fork_parse::*; + +#[cfg(not(target_family = "wasm"))] +mod fork_parse { + use alloy_ethers_typecast::transaction::{ReadableClientError, ReadableClientHttp}; + use alloy_primitives::{bytes::Bytes, Address}; + use once_cell::sync::Lazy; + use rain_error_decoding::AbiDecodedErrorType; + use rain_interpreter_eval::error::ForkCallError; + use rain_interpreter_eval::eval::ForkParseArgs; + use rain_interpreter_eval::fork::Forker; + use rain_interpreter_eval::fork::NewForkedEvm; + use std::sync::Arc; + use thiserror::Error; + use tokio::sync::Mutex; + + pub static FORKER: Lazy>> = Lazy::new(|| Arc::new(Mutex::new(Forker::new()))); + + #[derive(Debug, Error)] + pub enum ForkParseError { + #[error("Fork Cache Poisoned")] + ForkCachePoisoned, + #[error(transparent)] + ForkerError(ForkCallError), + #[error("Fork Call Reverted: {0}")] + ForkCallReverted(#[from] AbiDecodedErrorType), + #[error(transparent)] + ReadableClientError(#[from] ReadableClientError), + #[error("Failed to read Parser address from deployer")] + ReadParserAddressFailed, + } + + impl From for ForkParseError { + fn from(value: ForkCallError) -> Self { + match value { + ForkCallError::AbiDecodedError(v) => Self::ForkCallReverted(v), + other => Self::ForkerError(other), + } + } + } + + /// checks the front matter validity and parses the given rainlang string + /// with the deployer parsed from the front matter + /// returns abi encoded expression config on Ok variant + pub async fn parse_rainlang_on_fork( + rainlang: &str, + rpc_url: &str, + block_number: Option, + deployer: Address, + ) -> Result { + // Prepare evm fork + let block_number_val = match block_number { + Some(b) => b, + None => { + let client = ReadableClientHttp::new_from_url(rpc_url.to_string())?; + + client.get_block_number().await? + } + }; + let args = NewForkedEvm { + fork_url: rpc_url.to_owned(), + fork_block_number: Some(block_number_val), + }; + let mut forker = FORKER.lock().await; + forker.add_or_select(args, None).await?; + + let parse_args = ForkParseArgs { + rainlang_string: rainlang.to_owned(), + deployer, + decode_errors: true, + }; + let result = forker.fork_parse(parse_args).await?; + + Ok(result.raw.result.0) + } +} diff --git a/crates/common/src/remove_order.rs b/crates/common/src/remove_order.rs index c678ef1c6..86a855339 100644 --- a/crates/common/src/remove_order.rs +++ b/crates/common/src/remove_order.rs @@ -1,7 +1,9 @@ -use crate::transaction::{TransactionArgs, TransactionArgsError}; -use alloy_ethers_typecast::transaction::{ - WritableClientError, WriteTransaction, WriteTransactionStatus, -}; +#[cfg(not(target_family = "wasm"))] +use crate::transaction::TransactionArgs; +use crate::transaction::TransactionArgsError; +use alloy_ethers_typecast::transaction::WritableClientError; +#[cfg(not(target_family = "wasm"))] +use alloy_ethers_typecast::transaction::{WriteTransaction, WriteTransactionStatus}; use alloy_primitives::hex::FromHexError; use alloy_sol_types::SolCall; @@ -47,6 +49,7 @@ impl TryInto for RemoveOrderArgs { } impl RemoveOrderArgs { + #[cfg(not(target_family = "wasm"))] pub async fn execute)>( self, transaction_args: TransactionArgs, diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index 42e96fccf..c45971b7b 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -1,5 +1,6 @@ +#[cfg(not(target_family = "wasm"))] +use alloy_ethers_typecast::client::{LedgerClient, LedgerClientError}; use alloy_ethers_typecast::{ - client::{LedgerClient, LedgerClientError}, gas_fee_middleware::GasFeeSpeed, transaction::{ ReadableClientError, ReadableClientHttp, WritableClientError, WriteContractParameters, @@ -17,6 +18,7 @@ pub enum WritableTransactionExecuteError { WritableClient(#[from] WritableClientError), #[error(transparent)] TransactionArgs(#[from] TransactionArgsError), + #[cfg(not(target_family = "wasm"))] #[error(transparent)] LedgerClient(#[from] LedgerClientError), #[error("Invalid input args: {0}")] @@ -33,11 +35,12 @@ pub enum TransactionArgsError { ChainIdNone, #[error(transparent)] ReadableClient(#[from] ReadableClientError), + #[cfg(not(target_family = "wasm"))] #[error(transparent)] LedgerClient(#[from] LedgerClientError), } -#[derive(Clone, Serialize, Deserialize)] +#[derive(Clone, Serialize, Deserialize, Default)] pub struct TransactionArgs { pub orderbook_address: Address, pub derivation_index: Option, @@ -77,6 +80,7 @@ impl TransactionArgs { Ok(()) } + #[cfg(not(target_family = "wasm"))] pub async fn try_into_ledger_client(self) -> Result { match self.chain_id { Some(chain_id) => { diff --git a/crates/common/src/withdraw.rs b/crates/common/src/withdraw.rs index 9b5b457c6..37122e25e 100644 --- a/crates/common/src/withdraw.rs +++ b/crates/common/src/withdraw.rs @@ -1,4 +1,7 @@ -use crate::transaction::{TransactionArgs, WritableTransactionExecuteError}; +#[cfg(not(target_family = "wasm"))] +use crate::transaction::TransactionArgs; +use crate::transaction::WritableTransactionExecuteError; +#[cfg(not(target_family = "wasm"))] use alloy_ethers_typecast::transaction::{WriteTransaction, WriteTransactionStatus}; use alloy_primitives::{Address, U256}; use alloy_sol_types::SolCall; @@ -25,6 +28,7 @@ impl From for withdraw2Call { impl WithdrawArgs { /// Execute OrderbookV3 withdraw call + #[cfg(not(target_family = "wasm"))] pub async fn execute)>( &self, transaction_args: TransactionArgs, diff --git a/crates/quote/Cargo.toml b/crates/quote/Cargo.toml index 0da960098..c17fbed81 100644 --- a/crates/quote/Cargo.toml +++ b/crates/quote/Cargo.toml @@ -20,12 +20,17 @@ serde_json = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } once_cell = { workspace = true } -tokio = { workspace = true } url = { workspace = true } anyhow = { workspace = true } reqwest = { workspace = true } clap = { workspace = true, features = ["env"]} tracing-subscriber = { workspace = true, features = ['env-filter'] } +[target.'cfg(not(target_family = "wasm"))'.dependencies] +tokio = { workspace = true, features = ["full"] } + +[target.'cfg(target_family = "wasm")'.dependencies] +tokio = { workspace = true, features = ["sync", "macros", "io-util", "rt", "time"] } + [dev-dependencies] httpmock = "0.7.0" \ No newline at end of file diff --git a/crates/quote/src/main.rs b/crates/quote/src/main.rs index d2fce471e..a40754a70 100644 --- a/crates/quote/src/main.rs +++ b/crates/quote/src/main.rs @@ -1,4 +1,11 @@ +#[cfg(not(target_family = "wasm"))] #[tokio::main] async fn main() -> anyhow::Result<()> { rain_orderbook_quote::cli::main().await } + +#[cfg(target_family = "wasm")] +#[tokio::main(flavor = "current_thread")] +async fn main() -> anyhow::Result<()> { + rain_orderbook_quote::cli::main().await +} diff --git a/crates/settings/Cargo.toml b/crates/settings/Cargo.toml index 4181388bf..c77e89c82 100644 --- a/crates/settings/Cargo.toml +++ b/crates/settings/Cargo.toml @@ -10,13 +10,15 @@ homepage = "https://github.com/rainprotocol/rain.orderbook" [dependencies] derive_builder = { workspace = true } -url = { workspace = true } +alloy-primitives = { workspace = true, features = ["serde"] } +url = { workspace = true, features = ["serde"] } thiserror = { workspace = true } -serde = { workspace = true } +serde = { workspace = true, features = ["derive", "rc"] } serde_yaml = { workspace = true } serde_json = { workspace = true } strict-yaml-rust = { workspace = true } -alloy-primitives = { workspace = true } typeshare = { workspace = true } +reqwest = { workspace = true } + +[dev-dependencies] tokio = { workspace = true } -reqwest = { workspace = true } \ No newline at end of file diff --git a/crates/subgraph/src/pagination.rs b/crates/subgraph/src/pagination.rs index 2e9baf5f4..e50d21ff3 100644 --- a/crates/subgraph/src/pagination.rs +++ b/crates/subgraph/src/pagination.rs @@ -97,6 +97,7 @@ pub trait PaginationClient { /// Client that provides a fn to query a "page", and another to sort a list of results. /// This allows the query to be used for client-side pagination. /// The query_page function can potentially make multiple queries and merge the results into a single list. +#[cfg(not(target_family = "wasm"))] pub trait PageQueryClient { fn query_page( &self, @@ -106,6 +107,19 @@ pub trait PageQueryClient { fn sort_results(results: Vec) -> Vec; } +/// Client that provides a fn to query a "page", and another to sort a list of results. +/// This allows the query to be used for client-side pagination. +/// The query_page function can potentially make multiple queries and merge the results into a single list. +#[cfg(target_family = "wasm")] +pub trait PageQueryClient { + fn query_page( + &self, + variables: V, + ) -> impl std::future::Future, CynicClientError>>; + + fn sort_results(results: Vec) -> Vec; +} + /// Builder fn to setup query variables with a provided skip & option pub trait PageQueryVariables { fn with_pagination(&self, skip: Option, first: Option) -> Self; diff --git a/flake.nix b/flake.nix index 3fe4ba0cf..ab3866477 100644 --- a/flake.nix +++ b/flake.nix @@ -203,12 +203,21 @@ ''; }; + rainix-wasm-artifacts = rainix.mkTask.${system} { + name = "rainix-wasm-artifacts"; + body = '' + set -euxo pipefail + cargo build -r --target wasm32-unknown-unknown --workspace --exclude rain_orderbook_cli --exclude rain-orderbook-env + ''; + }; + } // rainix.packages.${system}; devShells.default = pkgs.mkShell { packages = [ packages.raindex-prelude packages.ob-rs-test + packages.rainix-wasm-artifacts rain.defaultPackage.${system} ]; diff --git a/foundry.toml b/foundry.toml index 0df0f8176..cdd388092 100644 --- a/foundry.toml +++ b/foundry.toml @@ -41,6 +41,7 @@ remappings = [ "rain.intorastring/=lib/rain.interpreter/lib/rain.intorastring/", "openzeppelin-contracts/=lib/rain.interpreter/lib/openzeppelin-contracts/", "forge-std/=lib/rain.interpreter/lib/forge-std/src/", + "rain.sol.codegen/=lib/rain.interpreter/lib/rain.sol.codegen/src/", ] [fuzz] diff --git a/lib/rain.erc1820 b/lib/rain.erc1820 deleted file mode 160000 index 1fe5e050d..000000000 --- a/lib/rain.erc1820 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1fe5e050d194a76f26d712604abb5db32639b06a diff --git a/lib/rain.interpreter b/lib/rain.interpreter index 30563e844..df7023389 160000 --- a/lib/rain.interpreter +++ b/lib/rain.interpreter @@ -1 +1 @@ -Subproject commit 30563e844c8296e4790b6ccfa951b3694e410a4a +Subproject commit df70233890df0d95f4288bf9c6f1fef8cd504a3e diff --git a/lib/rain.lib.memkv b/lib/rain.lib.memkv deleted file mode 160000 index 818f262f9..000000000 --- a/lib/rain.lib.memkv +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 818f262f91ac4402d9c800d333ae512874bca6e5 diff --git a/lib/rain.metadata b/lib/rain.metadata deleted file mode 160000 index ed7d6156c..000000000 --- a/lib/rain.metadata +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ed7d6156ce2b280e6bbbff516b9695f284f6b969 diff --git a/lib/rain.orderbook.interface b/lib/rain.orderbook.interface index a49951c4e..a9f5a2272 160000 --- a/lib/rain.orderbook.interface +++ b/lib/rain.orderbook.interface @@ -1 +1 @@ -Subproject commit a49951c4ed1cce762a4aee6d1bf07675645037d1 +Subproject commit a9f5a227250457795673ae9008db70e7c314f33c diff --git a/lib/rain.solmem b/lib/rain.solmem deleted file mode 160000 index 6414ab88a..000000000 --- a/lib/rain.solmem +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6414ab88a017eacf2b263e9e08d0787fbd677192 diff --git a/prep-tauri.sh b/prep-tauri.sh index d3606c0ad..d77dd2bc8 100755 --- a/prep-tauri.sh +++ b/prep-tauri.sh @@ -22,7 +22,7 @@ nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter && rainix-rs-prel (cd lib/rain.interpreter && nix develop -i ${keep[@]} -c bash -c i9r-prelude) # Run commands in lib/rain.metadata -nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.metadata && rainix-sol-prelude)' +nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter/lib/rain.metadata && rainix-sol-prelude)' nix develop -i ${keep[@]} .#tauri-shell -c ob-tauri-prelude nix develop -i ${keep[@]} .#tauri-shell -c ob-tauri-unit-test diff --git a/script/Deploy.sol b/script/Deploy.sol index b5b691dcd..9f1c6a9fc 100644 --- a/script/Deploy.sol +++ b/script/Deploy.sol @@ -11,7 +11,7 @@ import {OrderBookV4ArbConfigV1} from "src/abstract/OrderBookV4ArbCommon.sol"; import {IMetaBoardV1} from "rain.metadata/interface/IMetaBoardV1.sol"; import {LibDescribedByMeta} from "rain.metadata/lib/LibDescribedByMeta.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import {IInterpreterV3} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; bytes32 constant DEPLOYMENT_SUITE_ALL = keccak256("all"); bytes32 constant DEPLOYMENT_SUITE_RAINDEX = keccak256("raindex"); diff --git a/src/abstract/OrderBookV4ArbCommon.sol b/src/abstract/OrderBookV4ArbCommon.sol index 15ba9e2d0..a9122d329 100644 --- a/src/abstract/OrderBookV4ArbCommon.sol +++ b/src/abstract/OrderBookV4ArbCommon.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.19; -import {EvaluableV3, SignedContextV1} from "rain.interpreter.interface/interface/unstable/IInterpreterCallerV3.sol"; +import {EvaluableV3, SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; import { IInterpreterV3, SourceIndexV2, DEFAULT_STATE_NAMESPACE -} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; -import {IOrderBookV4} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; +import {IOrderBookV4} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; import {LibEvaluable} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol"; diff --git a/src/abstract/OrderBookV4ArbOrderTaker.sol b/src/abstract/OrderBookV4ArbOrderTaker.sol index 7f54b1b6d..b0fc40505 100644 --- a/src/abstract/OrderBookV4ArbOrderTaker.sol +++ b/src/abstract/OrderBookV4ArbOrderTaker.sol @@ -6,19 +6,20 @@ import {ReentrancyGuard} from "openzeppelin-contracts/contracts/security/Reentra import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; import {Address} from "openzeppelin-contracts/contracts/utils/Address.sol"; -import {SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; -import {EncodedDispatch, LibEncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol"; +import {SourceIndexV2} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; +import { + EncodedDispatch, + LibEncodedDispatch +} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; -import {IOrderBookV4, NoOrders} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {IOrderBookV4, NoOrders} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import { IOrderBookV4ArbOrderTaker, IOrderBookV4OrderTaker -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4ArbOrderTaker.sol"; -import { - IInterpreterV3, DEFAULT_STATE_NAMESPACE -} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4ArbOrderTaker.sol"; +import {IInterpreterV3, DEFAULT_STATE_NAMESPACE} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import {TakeOrdersConfigV3} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {TakeOrdersConfigV3} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import { BadLender, MinimumOutput, diff --git a/src/abstract/OrderBookV4FlashBorrower.sol b/src/abstract/OrderBookV4FlashBorrower.sol index 7524b6a4c..538ac80ac 100644 --- a/src/abstract/OrderBookV4FlashBorrower.sol +++ b/src/abstract/OrderBookV4FlashBorrower.sol @@ -6,12 +6,13 @@ import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/Safe import {Address} from "openzeppelin-contracts/contracts/utils/Address.sol"; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; import {ReentrancyGuard} from "openzeppelin-contracts/contracts/security/ReentrancyGuard.sol"; -import {LibEncodedDispatch, EncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol"; +import { + LibEncodedDispatch, + EncodedDispatch +} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol"; import {ON_FLASH_LOAN_CALLBACK_SUCCESS} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import { - IOrderBookV4, TakeOrdersConfigV3, NoOrders -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {IOrderBookV4, TakeOrdersConfigV3, NoOrders} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC3156FlashBorrower} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; import { @@ -21,7 +22,7 @@ import { OrderBookV4ArbConfigV1, OrderBookV4ArbCommon } from "./OrderBookV4ArbCommon.sol"; -import {EvaluableV3, SignedContextV1} from "rain.interpreter.interface/interface/unstable/IInterpreterCallerV3.sol"; +import {EvaluableV3, SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; /// Thrown when the initiator is not the order book. /// @param badInitiator The untrusted initiator of the flash loan. diff --git a/src/concrete/ob/OrderBook.sol b/src/concrete/ob/OrderBook.sol index 799e83b1c..0ba25024d 100644 --- a/src/concrete/ob/OrderBook.sol +++ b/src/concrete/ob/OrderBook.sol @@ -11,17 +11,16 @@ import {FLAG_SATURATE, FLAG_ROUND_UP} from "rain.math.fixedpoint/lib/FixedPointD import {LibFixedPointDecimalArithmeticOpenZeppelin} from "rain.math.fixedpoint/lib/LibFixedPointDecimalArithmeticOpenZeppelin.sol"; import {LibFixedPointDecimalScale} from "rain.math.fixedpoint/lib/LibFixedPointDecimalScale.sol"; -import {LibEncodedDispatch, EncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol"; +import { + LibEncodedDispatch, + EncodedDispatch +} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol"; -import { - SourceIndexV2, - StateNamespace, - IInterpreterV3 -} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {SourceIndexV2, StateNamespace, IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/IExpressionDeployerV3.sol"; import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; import {LibMeta} from "rain.metadata/lib/LibMeta.sol"; import {IMetaV1} from "rain.metadata/interface/IMetaV1.sol"; @@ -41,8 +40,8 @@ import { EvaluableV3, ActionV1, Quote -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {IOrderBookV4OrderTaker} from "rain.orderbook.interface/interface/unstable/IOrderBookV4OrderTaker.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {IOrderBookV4OrderTaker} from "rain.orderbook.interface/interface/IOrderBookV4OrderTaker.sol"; import {LibOrder} from "../../lib/LibOrder.sol"; import { CALLING_CONTEXT_COLUMNS, diff --git a/src/generated/OrderBookSubParser.pointers.sol b/src/generated/OrderBookSubParser.pointers.sol index e264d0b76..23b60ec0c 100644 --- a/src/generated/OrderBookSubParser.pointers.sol +++ b/src/generated/OrderBookSubParser.pointers.sol @@ -14,8 +14,8 @@ bytes32 constant BYTECODE_HASH = bytes32(0xa24098eea11f3a83e475674e649959ac6d6b3 /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xa90cf581ab38cb58f1502cd049627a3a1f49857ec6a26c8bcc6da98b05bd4696); -/// @dev Encodes the parser meta that is used to lookup word definitions. -/// The structure of the parser meta is: +/// @dev The parse meta that is used to lookup word definitions. +/// The structure of the parse meta is: /// - 1 byte: The depth of the bloom filters /// - 1 byte: The hashing seed /// - The bloom filters, each is 32 bytes long, one for each build depth. @@ -34,9 +34,10 @@ bytes constant PARSE_META = hex"01004800040040420204100000000000001806000008000020840000000100000010088de69a02c9be1f116682f50b6f6a660584c8d406bbcde61283156f0109ac301087b0c70398cd200ea9bcef0a865655075e0bc300d3b4e80f8316290de78f2e0c9fc5d509a7e6560427db4a"; /// @dev The build depth of the parser meta. + uint8 constant PARSE_META_BUILD_DEPTH = 1; -/// @dev Real function pointers to the sub parser functions that produce the +/// @dev The function pointers for the sub parser functions that produce the /// bytecode that this contract knows about. This is both constructing the subParser /// bytecode that dials back into this contract at eval time, and mapping /// to things that happen entirely on the interpreter such as well known diff --git a/src/lib/LibOrder.sol b/src/lib/LibOrder.sol index d999f1d44..47529528d 100644 --- a/src/lib/LibOrder.sol +++ b/src/lib/LibOrder.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.18; -import {OrderV3} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderV3} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; /// @title LibOrder /// @notice Consistent handling of `OrderV3` for where it matters w.r.t. diff --git a/src/lib/LibOrderBook.sol b/src/lib/LibOrderBook.sol index c0b62a103..b01436ccf 100644 --- a/src/lib/LibOrderBook.sol +++ b/src/lib/LibOrderBook.sol @@ -7,8 +7,8 @@ import { CONTEXT_BASE_ROW_CALLING_CONTRACT, CONTEXT_BASE_COLUMN } from "rain.interpreter.interface/lib/caller/LibContext.sol"; -import {EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {SourceIndexV2, StateNamespace} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {SourceIndexV2, StateNamespace} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; diff --git a/src/lib/LibOrderBookSubParser.sol b/src/lib/LibOrderBookSubParser.sol index 25d2c089d..2fe2d6e98 100644 --- a/src/lib/LibOrderBookSubParser.sol +++ b/src/lib/LibOrderBookSubParser.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.19; -import {AuthoringMetaV2, Operand} from "rain.interpreter.interface/interface/ISubParserV2.sol"; +import {AuthoringMetaV2, Operand} from "rain.interpreter.interface/interface/ISubParserV3.sol"; import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol"; import {LibSubParse} from "rain.interpreter/lib/parse/LibSubParse.sol"; import { diff --git a/tauri-app/src-tauri/Cargo.toml b/tauri-app/src-tauri/Cargo.toml index ab8b5576f..29aa57de4 100644 --- a/tauri-app/src-tauri/Cargo.toml +++ b/tauri-app/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ serde_json = "1.0" rain_orderbook_common = { path = "../../crates/common" } rain_orderbook_subgraph_client = { path = "../../crates/subgraph" } rain_orderbook_app_settings = { path = "../../crates/settings" } -alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "cbdedb77fb1994a18ceb47e72786f8b32b670669" } +alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "d9bd0fe8360d803ed3e58b34063890c8775999f2" } rain-orderbook-env = { path = "../../crates/env" } alloy-primitives = "0.6.3" alloy-json-abi = "0.6.3" diff --git a/test/abstract/OrderBookV4ArbOrderTaker.ierc165.t.sol b/test/abstract/OrderBookV4ArbOrderTaker.ierc165.t.sol index 41b0b706a..078ab7b39 100644 --- a/test/abstract/OrderBookV4ArbOrderTaker.ierc165.t.sol +++ b/test/abstract/OrderBookV4ArbOrderTaker.ierc165.t.sol @@ -10,7 +10,7 @@ import { OrderBookV4ArbConfigV1, IOrderBookV4OrderTaker } from "src/abstract/OrderBookV4ArbOrderTaker.sol"; -import {IInterpreterV3} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; /// @dev We need a contract that is deployable in order to test the abstract diff --git a/test/abstract/OrderBookV4FlashBorrower.ierc165.t.sol b/test/abstract/OrderBookV4FlashBorrower.ierc165.t.sol index b90dbf83a..8889dd2ff 100644 --- a/test/abstract/OrderBookV4FlashBorrower.ierc165.t.sol +++ b/test/abstract/OrderBookV4FlashBorrower.ierc165.t.sol @@ -9,7 +9,7 @@ import { EvaluableV3, OrderBookV4ArbConfigV1 } from "src/abstract/OrderBookV4FlashBorrower.sol"; -import {IInterpreterV3} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; /// @dev We need a contract that is deployable in order to test the abstract diff --git a/test/abstract/OrderBookV4FlashLender.reentrant.t.sol b/test/abstract/OrderBookV4FlashLender.reentrant.t.sol index ca2ad5490..86f9a2a80 100644 --- a/test/abstract/OrderBookV4FlashLender.reentrant.t.sol +++ b/test/abstract/OrderBookV4FlashLender.reentrant.t.sol @@ -12,13 +12,13 @@ import { TakeOrdersConfigV3, ClearConfig, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/unstable/IParserV2.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; import {IERC3156FlashBorrower} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol"; -import {EvaluableV3} from "rain.interpreter.interface/interface/unstable/IInterpreterCallerV3.sol"; +import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV2.sol"; +import {EvaluableV3} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; /// @title OrderBookV4FlashLenderReentrant /// Test that flash borrowers can reenter the orderbook, which is necessary for diff --git a/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.expression.t.sol b/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.expression.t.sol index f6f0e14f0..6c0877f74 100644 --- a/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.expression.t.sol +++ b/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.expression.t.sol @@ -14,7 +14,7 @@ import { IInterpreterV3, IInterpreterStoreV2, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; import { LibNamespace, diff --git a/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.sender.t.sol b/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.sender.t.sol index 6316c35f9..27a715a95 100644 --- a/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.sender.t.sol +++ b/test/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.sender.t.sol @@ -15,7 +15,7 @@ import { TakeOrdersConfigV3, IInterpreterV3, IInterpreterStoreV2 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; contract GenericPoolOrderBookV4ArbOrderTakerSenderTest is GenericPoolOrderBookV4ArbOrderTakerTest { function testGenericPoolTakeOrdersSender(OrderV3 memory order, uint256 inputIOIndex, uint256 outputIOIndex) diff --git a/test/concrete/arb/GenericPoolOrderBookV4FlashBorrower.sender.t.sol b/test/concrete/arb/GenericPoolOrderBookV4FlashBorrower.sender.t.sol index 321fbdc50..d4888bc1b 100644 --- a/test/concrete/arb/GenericPoolOrderBookV4FlashBorrower.sender.t.sol +++ b/test/concrete/arb/GenericPoolOrderBookV4FlashBorrower.sender.t.sol @@ -15,7 +15,7 @@ import { TakeOrdersConfigV3, IInterpreterV3, IInterpreterStoreV2 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; contract GenericPoolOrderBookV4FlashBorrowerTest is ArbTest { function buildArb(OrderBookV4ArbConfigV1 memory config) internal override returns (address) { diff --git a/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.expression.t.sol b/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.expression.t.sol index 311787e00..aed333861 100644 --- a/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.expression.t.sol +++ b/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.expression.t.sol @@ -10,7 +10,7 @@ import { TakeOrdersConfigV3, IInterpreterV3, IInterpreterStoreV2 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibNamespace, DEFAULT_STATE_NAMESPACE, WrongEvaluable} from "src/abstract/OrderBookV4ArbCommon.sol"; import {RouteProcessorOrderBookV4ArbOrderTaker} from "src/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.sol"; diff --git a/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.sender.t.sol b/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.sender.t.sol index 91ba1fe31..2f60e2dc2 100644 --- a/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.sender.t.sol +++ b/test/concrete/arb/RouteProcessorOrderBookV4ArbOrderTaker.sender.t.sol @@ -10,7 +10,7 @@ import { TakeOrdersConfigV3, IInterpreterV3, IInterpreterStoreV2 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import { RouteProcessorOrderBookV4ArbOrderTaker, OrderBookV4ArbConfigV1, diff --git a/test/concrete/ob/OrderBook.addOrder.enact.t.sol b/test/concrete/ob/OrderBook.addOrder.enact.t.sol index 193f198e5..cbd972c36 100644 --- a/test/concrete/ob/OrderBook.addOrder.enact.t.sol +++ b/test/concrete/ob/OrderBook.addOrder.enact.t.sol @@ -8,7 +8,7 @@ import { ActionV1, OrderV3, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; diff --git a/test/concrete/ob/OrderBook.addOrder.mock.t.sol b/test/concrete/ob/OrderBook.addOrder.mock.t.sol index bff55b373..36938c7f4 100644 --- a/test/concrete/ob/OrderBook.addOrder.mock.t.sol +++ b/test/concrete/ob/OrderBook.addOrder.mock.t.sol @@ -2,17 +2,11 @@ pragma solidity =0.8.25; import {OrderBookExternalMockTest} from "test/util/abstract/OrderBookExternalMockTest.sol"; -import { - OrderConfigV3, - OrderV3, - IO, - EvaluableV3, - ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderConfigV3, OrderV3, IO, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotRainMetaV1, META_MAGIC_NUMBER_V1} from "rain.metadata/interface/IMetaV1.sol"; import {LibMeta} from "rain.metadata/lib/LibMeta.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/IExpressionDeployerV3.sol"; /// @title OrderBookAddOrderMockTest /// @notice Tests the addOrder function of the OrderBook contract. diff --git a/test/concrete/ob/OrderBook.addOrder.nonce.t.sol b/test/concrete/ob/OrderBook.addOrder.nonce.t.sol index 107d47f2b..b3c74e5fc 100644 --- a/test/concrete/ob/OrderBook.addOrder.nonce.t.sol +++ b/test/concrete/ob/OrderBook.addOrder.nonce.t.sol @@ -2,9 +2,7 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; -import { - OrderConfigV3, OrderV3, EvaluableV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderConfigV3, OrderV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; diff --git a/test/concrete/ob/OrderBook.addOrder.owner.t.sol b/test/concrete/ob/OrderBook.addOrder.owner.t.sol index 62e1d0c5a..4a992f307 100644 --- a/test/concrete/ob/OrderBook.addOrder.owner.t.sol +++ b/test/concrete/ob/OrderBook.addOrder.owner.t.sol @@ -2,9 +2,7 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; -import { - OrderConfigV3, OrderV3, EvaluableV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderConfigV3, OrderV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; diff --git a/test/concrete/ob/OrderBook.addOrder.t.sol b/test/concrete/ob/OrderBook.addOrder.t.sol index c53d91e47..fded17d61 100644 --- a/test/concrete/ob/OrderBook.addOrder.t.sol +++ b/test/concrete/ob/OrderBook.addOrder.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {OrderConfigV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/unstable/IParserV2.sol"; +import {OrderConfigV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; import {UnsupportedCalculateOutputs, UnsupportedCalculateInputs} from "src/concrete/ob/OrderBook.sol"; /// @title OrderBookAddOrderTest diff --git a/test/concrete/ob/OrderBook.clear.badStack.t.sol b/test/concrete/ob/OrderBook.clear.badStack.t.sol index 6c2636a09..7551be330 100644 --- a/test/concrete/ob/OrderBook.clear.badStack.t.sol +++ b/test/concrete/ob/OrderBook.clear.badStack.t.sol @@ -10,7 +10,7 @@ import { ClearConfig, SignedContextV1, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {UnsupportedCalculateOutputs} from "src/concrete/ob/OrderBook.sol"; contract OrderBookClearOrderBadStackTest is OrderBookExternalRealTest { diff --git a/test/concrete/ob/OrderBook.clear.handleIO.revert.t.sol b/test/concrete/ob/OrderBook.clear.handleIO.revert.t.sol index bfdc52fe1..2532e71f2 100644 --- a/test/concrete/ob/OrderBook.clear.handleIO.revert.t.sol +++ b/test/concrete/ob/OrderBook.clear.handleIO.revert.t.sol @@ -12,7 +12,7 @@ import { EvaluableV3, SignedContextV1, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {SourceIndexOutOfBounds} from "rain.interpreter.interface/error/ErrBytecode.sol"; /// @title OrderBookClearHandleIORevertTest @@ -142,9 +142,9 @@ contract OrderBookClearHandleIORevertTest is OrderBookExternalRealTest { // This is a bit fragile but the error message includes the inner // executable bytecode only, not the outer parsed bytecode. bytes memory aliceErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); bytes memory bobErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); checkClearOrderHandleIO(aliceString, bobString, aliceErr, bobErr); } @@ -158,9 +158,9 @@ contract OrderBookClearHandleIORevertTest is OrderBookExternalRealTest { // This is a bit fragile but the error message includes the inner // executable bytecode only, not the outer parsed bytecode. bytes memory aliceErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); bytes memory bobErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); checkClearOrderHandleIO(aliceString, bobString, aliceErr, bobErr); } @@ -174,9 +174,9 @@ contract OrderBookClearHandleIORevertTest is OrderBookExternalRealTest { // This is a bit fragile but the error message includes the inner // executable bytecode only, not the outer parsed bytecode. bytes memory aliceErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); bytes memory bobErr = - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200021810000001100000", 1); + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200021810000001100000"); checkClearOrderHandleIO(aliceString, bobString, aliceErr, bobErr); } diff --git a/test/concrete/ob/OrderBook.clear.mock.t.sol b/test/concrete/ob/OrderBook.clear.mock.t.sol index b1757bc19..aa01de7d5 100644 --- a/test/concrete/ob/OrderBook.clear.mock.t.sol +++ b/test/concrete/ob/OrderBook.clear.mock.t.sol @@ -14,7 +14,7 @@ import { SignedContextV1, IInterpreterV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotOrderOwner} from "src/concrete/ob/OrderBook.sol"; diff --git a/test/concrete/ob/OrderBook.deposit.enact.t.sol b/test/concrete/ob/OrderBook.deposit.enact.t.sol index 7dc31b128..27182a144 100644 --- a/test/concrete/ob/OrderBook.deposit.enact.t.sol +++ b/test/concrete/ob/OrderBook.deposit.enact.t.sol @@ -3,11 +3,8 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; import { - OrderConfigV3, - EvaluableV3, - ActionV1, - SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; + OrderConfigV3, EvaluableV3, ActionV1, SignedContextV1 +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; contract OrderBookDepositEnactTest is OrderBookExternalRealTest { diff --git a/test/concrete/ob/OrderBook.deposit.t.sol b/test/concrete/ob/OrderBook.deposit.t.sol index ece477627..7c7d850fd 100644 --- a/test/concrete/ob/OrderBook.deposit.t.sol +++ b/test/concrete/ob/OrderBook.deposit.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; import {REVERTING_MOCK_BYTECODE, CONSOLE_ADDRESS} from "test/util/lib/LibTestConstants.sol"; import {OrderBookExternalMockTest} from "test/util/abstract/OrderBookExternalMockTest.sol"; -import {ActionV1, EvaluableV3, IOrderBookV4} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {ActionV1, EvaluableV3, IOrderBookV4} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {Reenteroor} from "test/util/concrete/Reenteroor.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; diff --git a/test/concrete/ob/OrderBook.enact.t.sol b/test/concrete/ob/OrderBook.enact.t.sol index 32144c404..545f5037a 100644 --- a/test/concrete/ob/OrderBook.enact.t.sol +++ b/test/concrete/ob/OrderBook.enact.t.sol @@ -3,11 +3,8 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; import { - OrderConfigV3, - EvaluableV3, - ActionV1, - SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; + OrderConfigV3, EvaluableV3, ActionV1, SignedContextV1 +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; contract OrderBookEnactTest is OrderBookExternalRealTest { function checkReentrancyRW() internal { diff --git a/test/concrete/ob/OrderBook.quote.t.sol b/test/concrete/ob/OrderBook.quote.t.sol index b727a9ff9..97a1dbc50 100644 --- a/test/concrete/ob/OrderBook.quote.t.sol +++ b/test/concrete/ob/OrderBook.quote.t.sol @@ -2,14 +2,14 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; -import {IOrderBookV4, Quote} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {IOrderBookV4, Quote} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import { OrderConfigV3, EvaluableV3, ActionV1, OrderV3, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; diff --git a/test/concrete/ob/OrderBook.removeOrder.enact.t.sol b/test/concrete/ob/OrderBook.removeOrder.enact.t.sol index bf9ff1f80..5ab34f534 100644 --- a/test/concrete/ob/OrderBook.removeOrder.enact.t.sol +++ b/test/concrete/ob/OrderBook.removeOrder.enact.t.sol @@ -8,7 +8,7 @@ import { OrderV3, ActionV1, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; diff --git a/test/concrete/ob/OrderBook.removeOrder.mock.t.sol b/test/concrete/ob/OrderBook.removeOrder.mock.t.sol index 4cef05b61..5505487c8 100644 --- a/test/concrete/ob/OrderBook.removeOrder.mock.t.sol +++ b/test/concrete/ob/OrderBook.removeOrder.mock.t.sol @@ -2,9 +2,7 @@ pragma solidity =0.8.25; import {OrderBookExternalMockTest} from "test/util/abstract/OrderBookExternalMockTest.sol"; -import { - OrderConfigV3, OrderV3, EvaluableV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderConfigV3, OrderV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotOrderOwner} from "src/concrete/ob/OrderBook.sol"; diff --git a/test/concrete/ob/OrderBook.removeOrder.owner.t.sol b/test/concrete/ob/OrderBook.removeOrder.owner.t.sol index 5fb90105f..a18713934 100644 --- a/test/concrete/ob/OrderBook.removeOrder.owner.t.sol +++ b/test/concrete/ob/OrderBook.removeOrder.owner.t.sol @@ -2,9 +2,7 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; -import { - OrderConfigV3, OrderV3, EvaluableV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {OrderConfigV3, OrderV3, EvaluableV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; import {NotOrderOwner} from "src/concrete/ob/OrderBook.sol"; diff --git a/test/concrete/ob/OrderBook.takeOrder.badStack.t.sol b/test/concrete/ob/OrderBook.takeOrder.badStack.t.sol index ce3a68b21..2e6394f63 100644 --- a/test/concrete/ob/OrderBook.takeOrder.badStack.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.badStack.t.sol @@ -9,8 +9,8 @@ import { OrderV3, EvaluableV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {TakeOrdersConfigV3, TakeOrderConfigV3} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {TakeOrdersConfigV3, TakeOrderConfigV3} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {UnsupportedCalculateOutputs} from "src/concrete/ob/OrderBook.sol"; contract OrderBookTakeOrderBadStackTest is OrderBookExternalRealTest { diff --git a/test/concrete/ob/OrderBook.takeOrder.handleIO.revert.t.sol b/test/concrete/ob/OrderBook.takeOrder.handleIO.revert.t.sol index f6b24a634..d93cccddc 100644 --- a/test/concrete/ob/OrderBook.takeOrder.handleIO.revert.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.handleIO.revert.t.sol @@ -13,7 +13,7 @@ import { EvaluableV3, SignedContextV1, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {SourceIndexOutOfBounds} from "rain.interpreter.interface/error/ErrBytecode.sol"; /// @title OrderBookTakeOrderHandleIORevertTest @@ -176,7 +176,7 @@ contract OrderBookTakeOrderHandleIORevertTest is OrderBookExternalRealTest { configs[0] = "_ _:1 1;"; checkTakeOrderHandleIO( configs, - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200020110000001100000", 1), + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200020110000001100000"), type(uint256).max ); } @@ -189,7 +189,7 @@ contract OrderBookTakeOrderHandleIORevertTest is OrderBookExternalRealTest { configs[1] = "_ _:1 1;"; checkTakeOrderHandleIO( configs, - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200020110000001100000", 1), + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200020110000001100000"), type(uint256).max ); } @@ -202,7 +202,7 @@ contract OrderBookTakeOrderHandleIORevertTest is OrderBookExternalRealTest { configs[1] = "_ _:1 1;:;"; checkTakeOrderHandleIO( configs, - abi.encodeWithSelector(SourceIndexOutOfBounds.selector, hex"010000020200020110000001100000", 1), + abi.encodeWithSelector(SourceIndexOutOfBounds.selector, 1, hex"010000020200020110000001100000"), type(uint256).max ); } diff --git a/test/concrete/ob/OrderBook.takeOrder.maximumInput.t.sol b/test/concrete/ob/OrderBook.takeOrder.maximumInput.t.sol index 0815e5a93..deaca406d 100644 --- a/test/concrete/ob/OrderBook.takeOrder.maximumInput.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.maximumInput.t.sol @@ -12,8 +12,8 @@ import { EvaluableV3, OrderConfigV3, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV2.sol"; contract OrderBookTakeOrderMaximumInputTest is OrderBookExternalRealTest { /// If there is some live order(s) but the maxTakerInput is zero we error as diff --git a/test/concrete/ob/OrderBook.takeOrder.noop.t.sol b/test/concrete/ob/OrderBook.takeOrder.noop.t.sol index 9f644f4fe..2ee0ebe90 100644 --- a/test/concrete/ob/OrderBook.takeOrder.noop.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.noop.t.sol @@ -12,7 +12,7 @@ import { TakeOrderConfigV3, SignedContextV1, EvaluableV3 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; /// @title OrderBookTakeOrderNoopTest /// @notice A test harness for testing the OrderBook takeOrder function. Focuses diff --git a/test/concrete/ob/OrderBook.takeOrder.precision.t.sol b/test/concrete/ob/OrderBook.takeOrder.precision.t.sol index 8c9a6bb87..fb1fc7cbf 100644 --- a/test/concrete/ob/OrderBook.takeOrder.precision.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.precision.t.sol @@ -12,7 +12,7 @@ import { EvaluableV3, SignedContextV1, ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; /// @title OrderBookTakeOrderPrecisionTest /// @notice A test harness for testing the OrderBook takeOrder function. diff --git a/test/concrete/ob/OrderBook.takeOrder.tokenMismatch.t.sol b/test/concrete/ob/OrderBook.takeOrder.tokenMismatch.t.sol index 66988aff4..a80485002 100644 --- a/test/concrete/ob/OrderBook.takeOrder.tokenMismatch.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.tokenMismatch.t.sol @@ -9,7 +9,7 @@ import { TakeOrdersConfigV3, EvaluableV3, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {TokenMismatch} from "src/concrete/ob/OrderBook.sol"; /// @title OrderBookTakeOrderTokenMismatchTest diff --git a/test/concrete/ob/OrderBook.takeOrder.tokenMismatchDecimals.t.sol b/test/concrete/ob/OrderBook.takeOrder.tokenMismatchDecimals.t.sol index f1e395b9b..00b639f39 100644 --- a/test/concrete/ob/OrderBook.takeOrder.tokenMismatchDecimals.t.sol +++ b/test/concrete/ob/OrderBook.takeOrder.tokenMismatchDecimals.t.sol @@ -9,7 +9,7 @@ import { OrderV3, EvaluableV3, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; /// @title OrderBookTakeOrderTokenMismatchDecimalsTest /// @notice A test harness for testing the OrderBook takeOrder function. diff --git a/test/concrete/ob/OrderBook.withdraw.enact.t.sol b/test/concrete/ob/OrderBook.withdraw.enact.t.sol index df0760fcc..21ce975ef 100644 --- a/test/concrete/ob/OrderBook.withdraw.enact.t.sol +++ b/test/concrete/ob/OrderBook.withdraw.enact.t.sol @@ -3,11 +3,8 @@ pragma solidity =0.8.25; import {OrderBookExternalRealTest} from "test/util/abstract/OrderBookExternalRealTest.sol"; import { - OrderConfigV3, - EvaluableV3, - ActionV1, - SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; + OrderConfigV3, EvaluableV3, ActionV1, SignedContextV1 +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; contract OrderBookWithdrawEvalTest is OrderBookExternalRealTest { diff --git a/test/concrete/ob/OrderBook.withdraw.t.sol b/test/concrete/ob/OrderBook.withdraw.t.sol index 5afb50702..296d23da2 100644 --- a/test/concrete/ob/OrderBook.withdraw.t.sol +++ b/test/concrete/ob/OrderBook.withdraw.t.sol @@ -7,7 +7,7 @@ import {Math} from "openzeppelin-contracts/contracts/utils/math/Math.sol"; import {OrderBookExternalMockTest, REVERTING_MOCK_BYTECODE} from "test/util/abstract/OrderBookExternalMockTest.sol"; import {Reenteroor, IERC20} from "test/util/concrete/Reenteroor.sol"; -import {ActionV1} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; /// @title OrderBookWithdrawTest /// Tests withdrawing from the order book. diff --git a/test/concrete/parser/OrderBookSubParser.ierc165.t.sol b/test/concrete/parser/OrderBookSubParser.ierc165.t.sol index e8767c321..49f77f46e 100644 --- a/test/concrete/parser/OrderBookSubParser.ierc165.t.sol +++ b/test/concrete/parser/OrderBookSubParser.ierc165.t.sol @@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol"; import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"; import {OrderBookSubParser} from "src/concrete/parser/OrderBookSubParser.sol"; -import {ISubParserV2} from "rain.interpreter.interface/interface/ISubParserV2.sol"; +import {ISubParserV2} from "rain.interpreter.interface/interface/deprecated/ISubParserV2.sol"; import {IDescribedByMetaV1} from "rain.metadata/interface/unstable/IDescribedByMetaV1.sol"; contract OrderBookSubParserIERC165Test is Test { diff --git a/test/concrete/parser/OrderBookSubParser.signedContext.t.sol b/test/concrete/parser/OrderBookSubParser.signedContext.t.sol index f8b25a296..937726774 100644 --- a/test/concrete/parser/OrderBookSubParser.signedContext.t.sol +++ b/test/concrete/parser/OrderBookSubParser.signedContext.t.sol @@ -107,6 +107,6 @@ contract OrderBookSubParserSignedContextTest is OpTest { string.concat("using-words-from ", address(orderBookSubParser).toHexString(), " _: signed-context<0 0>(0);") ); - checkUnhappyDeploy(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); + checkUnhappyParse2(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); } } diff --git a/test/concrete/parser/OrderBookSubParser.signers.t.sol b/test/concrete/parser/OrderBookSubParser.signers.t.sol index be46115df..6edf44f72 100644 --- a/test/concrete/parser/OrderBookSubParser.signers.t.sol +++ b/test/concrete/parser/OrderBookSubParser.signers.t.sol @@ -64,6 +64,6 @@ contract OrderBookSubParserSignersTest is OpTest { bytes memory rainlang = bytes(string.concat("using-words-from ", address(orderBookSubParser).toHexString(), " _: signer<0>(0);")); - checkUnhappyDeploy(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); + checkUnhappyParse2(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); } } diff --git a/test/util/abstract/ArbTest.sol b/test/util/abstract/ArbTest.sol index 9ad3999f0..88c0bed19 100644 --- a/test/util/abstract/ArbTest.sol +++ b/test/util/abstract/ArbTest.sol @@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol"; import {Clones} from "openzeppelin-contracts/contracts/proxy/Clones.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/IExpressionDeployerV3.sol"; import {ERC20} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; import {Refundoor} from "test/util/concrete/Refundoor.sol"; import { @@ -16,8 +16,8 @@ import { SignedContextV1 } from "test/util/concrete/FlashLendingMockOrderBook.sol"; import {OrderBookV4ArbConfigV1} from "src/concrete/arb/GenericPoolOrderBookV4ArbOrderTaker.sol"; -import {EvaluableV3} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {IInterpreterV3} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {EvaluableV3} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; contract Token is ERC20 { diff --git a/test/util/abstract/IOrderBookV4Stub.sol b/test/util/abstract/IOrderBookV4Stub.sol index cb0db6b30..945f46ea8 100644 --- a/test/util/abstract/IOrderBookV4Stub.sol +++ b/test/util/abstract/IOrderBookV4Stub.sol @@ -11,7 +11,7 @@ import { EvaluableV3, ActionV1, Quote -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC3156FlashLender} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashLender.sol"; import {IERC3156FlashBorrower} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; diff --git a/test/util/abstract/OrderBookExternalMockTest.sol b/test/util/abstract/OrderBookExternalMockTest.sol index 4e93138d2..a830bd0cc 100644 --- a/test/util/abstract/OrderBookExternalMockTest.sol +++ b/test/util/abstract/OrderBookExternalMockTest.sol @@ -3,24 +3,19 @@ pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/IExpressionDeployerV3.sol"; import {IMetaV1} from "rain.metadata/lib/LibMeta.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; import {IOrderBookV4Stub} from "test/util/abstract/IOrderBookV4Stub.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {IInterpreterV3} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {IInterpreterV3} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import { - IOrderBookV4, - OrderConfigV3, - OrderV3, - ActionV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +import {IOrderBookV4, OrderConfigV3, OrderV3, ActionV1} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; import {OrderBook} from "src/concrete/ob/OrderBook.sol"; -import {EvaluableV3} from "rain.interpreter.interface/interface/unstable/IInterpreterCallerV3.sol"; +import {EvaluableV3} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; /// @title OrderBookExternalTest /// Abstract contract that performs common setup needed for testing an orderbook diff --git a/test/util/abstract/OrderBookExternalRealTest.sol b/test/util/abstract/OrderBookExternalRealTest.sol index 926bf2b5e..8fc282657 100644 --- a/test/util/abstract/OrderBookExternalRealTest.sol +++ b/test/util/abstract/OrderBookExternalRealTest.sol @@ -12,17 +12,15 @@ import {LibAllStandardOpsNP} from "rain.interpreter/lib/op/LibAllStandardOpsNP.s import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; import {IOrderBookV4Stub} from "test/util/abstract/IOrderBookV4Stub.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/unstable/IParserV2.sol"; +import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; import { IOrderBookV4, IInterpreterV3, ActionV1, EvaluableV3, SignedContextV1 -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {OrderBook, IERC20} from "src/concrete/ob/OrderBook.sol"; -import {IERC1820Registry} from "rain.erc1820/interface/IERC1820Registry.sol"; -import {IERC1820_REGISTRY} from "rain.erc1820/lib/LibIERC1820.sol"; import {RainterpreterParserNPE2} from "rain.interpreter/concrete/RainterpreterParserNPE2.sol"; abstract contract OrderBookExternalRealTest is Test, IOrderBookV4Stub { @@ -45,16 +43,6 @@ abstract contract OrderBookExternalRealTest is Test, IOrderBookV4Stub { }) ); - // Deploy the expression deployer. - vm.etch(address(IERC1820_REGISTRY), REVERTING_MOCK_BYTECODE); - vm.mockCall( - address(IERC1820_REGISTRY), - abi.encodeWithSelector(IERC1820Registry.interfaceHash.selector), - abi.encode(bytes32(uint256(5))) - ); - vm.mockCall( - address(IERC1820_REGISTRY), abi.encodeWithSelector(IERC1820Registry.setInterfaceImplementer.selector), "" - ); iOrderbook = IOrderBookV4(address(new OrderBook())); iToken0 = IERC20(address(uint160(uint256(keccak256("token0.rain.test"))))); diff --git a/test/util/abstract/OrderBookSubParserContextTest.sol b/test/util/abstract/OrderBookSubParserContextTest.sol index 3bdc11f30..a65cd3ae2 100644 --- a/test/util/abstract/OrderBookSubParserContextTest.sol +++ b/test/util/abstract/OrderBookSubParserContextTest.sol @@ -42,6 +42,6 @@ abstract contract OrderBookSubParserContextTest is OpTest { bytes memory rainlang = bytes(string.concat("using-words-from ", address(orderBookSubParser).toHexString(), " _: ", w, "(1);")); - checkUnhappyDeploy(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); + checkUnhappyParse2(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); } } diff --git a/test/util/concrete/FlashLendingMockOrderBook.sol b/test/util/concrete/FlashLendingMockOrderBook.sol index 00de6fab9..cb8d824d8 100644 --- a/test/util/concrete/FlashLendingMockOrderBook.sol +++ b/test/util/concrete/FlashLendingMockOrderBook.sol @@ -13,7 +13,7 @@ import { EvaluableV3, ActionV1, Quote -} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; +} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; import {IERC3156FlashBorrower} from "rain.orderbook.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; contract FlashLendingMockOrderBook is IOrderBookV4 { diff --git a/test/util/lib/LibTestAddOrder.sol b/test/util/lib/LibTestAddOrder.sol index be1d2b6b1..dfd6dd85e 100644 --- a/test/util/lib/LibTestAddOrder.sol +++ b/test/util/lib/LibTestAddOrder.sol @@ -3,11 +3,11 @@ pragma solidity ^0.8.19; import {META_MAGIC_NUMBER_V1} from "rain.metadata/lib/LibMeta.sol"; import {LibOrder} from "src/lib/LibOrder.sol"; -import {OrderConfigV3, OrderV3, IO} from "rain.orderbook.interface/interface/unstable/IOrderBookV4.sol"; -import {IInterpreterV3, SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV3.sol"; +import {OrderConfigV3, OrderV3, IO} from "rain.orderbook.interface/interface/IOrderBookV4.sol"; +import {IInterpreterV3, SourceIndexV2} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/IExpressionDeployerV3.sol"; -import {EvaluableV3} from "rain.interpreter.interface/interface/unstable/IInterpreterCallerV3.sol"; +import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/IExpressionDeployerV3.sol"; +import {EvaluableV3} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; import {HANDLE_IO_ENTRYPOINT} from "src/concrete/ob/OrderBook.sol"; import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol";