6 releases

new 0.16.0-rc.13 Mar 6, 2026
0.16.0-rc.12 Mar 2, 2026
0.16.0-rc.11 Feb 16, 2026
0.0.1-alpha Jan 7, 2026

#782 in Magic Beans

Download history 28/week @ 2026-02-06 148/week @ 2026-02-13 4/week @ 2026-02-27

180 downloads per month

MIT/Apache

420KB
7.5K SLoC

signet-orders

Utilities for placing and filling orders on Signet.

What's in this crate?

Sending orders:

  • OrderSender — high-level interface for signing and submitting off-chain orders. Generic over any alloy Signer and any OrderSubmitter backend. Supports signing UnsignedOrders, on-chain Order structs, and combined sign-and-send in a single call.

Filling orders:

  • Filler — orchestrates the order-filling pipeline: fetch pending orders from an OrderSource, sign Permit2 fills, and submit them via a FillSubmitter. Returns a stream of orders and supports batch filling.
  • FeePolicySubmitter — a FillSubmitter that builds fill and initiate transactions, wraps them in a SignetEthBundle, and submits via a BundleSubmitter. Handles gas pricing for both rollup and host chains.
  • FillerOptions — configure fill signing: Permit2 deadline offset and nonce.

Traits:

  • OrderSubmitter — submit signed orders to a backend
  • OrderSource — fetch orders as a stream (with automatic pagination)
  • FillSubmitter — submit signed fills (decouples Filler from fee/tx logic)
  • BundleSubmitter — submit SignetEthBundles to a backend
  • TxBuilder — abstract over alloy's FillProvider for transaction filling

Ready-made implementations of OrderSubmitter, OrderSource, and BundleSubmitter are provided for TxCache from signet-tx-cache.

Usage

Add the crate to your project:

cargo add signet-orders

Sending an order:

use signet_constants::parmigiana;
use signet_orders::OrderSender;
use signet_tx_cache::TxCache;

let order_sender = OrderSender::new(signer, TxCache::parmigiana(), parmigiana::system_constants());

// Sign and submit in one call
let signed = order_sender.sign_and_send_order(order).await?;

Filling orders:

use signet_orders::{Filler, FeePolicySubmitter, FillerOptions};

let submitter = FeePolicySubmitter::new(ru_provider, host_provider, tx_cache.clone(), constants.clone());
let filler = Filler::new(signer, tx_cache, submitter, constants, FillerOptions::new());

// Fetch and fill
let orders: Vec<_> = filler.get_orders().try_collect().await?;
let response = filler.fill(orders).await?;

For a complete example of a filler service, see signet-filler.

Documentation

License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.

Dependencies

~73MB
~1.5M SLoC