diff --git a/crates/types/src/lib.rs b/crates/types/src/lib.rs index 78ad565..3f5720b 100644 --- a/crates/types/src/lib.rs +++ b/crates/types/src/lib.rs @@ -18,7 +18,7 @@ mod block; pub use block::{decode_txns, encode_txns, Alloy2718Coder, Coder, ZenithBlock, ZenithTransaction}; mod orders; -pub use orders::AggregateOrders; +pub use orders::{AggregateOrders, SignedOrder}; mod req; pub use req::SignRequest; diff --git a/crates/types/src/orders/mod.rs b/crates/types/src/orders/mod.rs index 0b00567..0ef3b8f 100644 --- a/crates/types/src/orders/mod.rs +++ b/crates/types/src/orders/mod.rs @@ -1,2 +1,5 @@ mod agg; pub use agg::AggregateOrders; + +mod signed; +pub use signed::SignedOrder; diff --git a/crates/types/src/orders/signed.rs b/crates/types/src/orders/signed.rs new file mode 100644 index 0000000..d7e6e0e --- /dev/null +++ b/crates/types/src/orders/signed.rs @@ -0,0 +1,20 @@ +use crate::bindings::HostOrders::{Output, Permit2Batch}; +use serde::{Deserialize, Serialize}; + +/// A signed order. +/// TODO: Link to docs. +#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] +pub struct SignedOrder { + /// The permit batch. + #[serde(flatten)] + pub permit: Permit2Batch, + /// The desired outputs. + pub outputs: Vec, +} + +impl SignedOrder { + /// Creates a new signed order. + pub fn new(permit: Permit2Batch, outputs: Vec) -> Self { + Self { permit, outputs } + } +}