pub struct OrderQuoteRequest {
pub sell_token: Address,
pub buy_token: Address,
pub receiver: Option<Address>,
pub valid_to: Option<u32>,
pub app_data: String,
pub partially_fillable: bool,
pub sell_token_balance: TokenBalance,
pub buy_token_balance: TokenBalance,
pub from: Address,
pub price_quality: PriceQuality,
pub signing_scheme: EcdsaSigningScheme,
pub side: QuoteSide,
}Expand description
Request body for POST /api/v1/quote.
Fields§
§sell_token: AddressToken to sell.
buy_token: AddressToken to buy.
receiver: Option<Address>Who receives the buyToken (defaults to from).
valid_to: Option<u32>Order expiry as Unix timestamp. Omit to use DEFAULT_QUOTE_VALIDITY.
app_data: Stringbytes32 keccak256 of the app-data JSON, or the JSON itself.
partially_fillable: boolWhether the order may be partially filled.
sell_token_balance: TokenBalanceSource of sellToken funds.
buy_token_balance: TokenBalanceDestination of buyToken funds.
from: AddressAddress placing the order.
price_quality: PriceQualityPrice quality hint.
signing_scheme: EcdsaSigningSchemeSigning scheme to use when submitting this order.
side: QuoteSideDirection and amount — must contain exactly one variant.
Implementations§
Source§impl OrderQuoteRequest
impl OrderQuoteRequest
Sourcepub fn new(
sell_token: Address,
buy_token: Address,
from: Address,
side: QuoteSide,
) -> OrderQuoteRequest
pub fn new( sell_token: Address, buy_token: Address, from: Address, side: QuoteSide, ) -> OrderQuoteRequest
Construct a minimal quote request with sensible defaults.
Defaults: app_data = zero bytes32 hash, token balances =
TokenBalance::Erc20, price_quality =
PriceQuality::Optimal, signing_scheme =
EcdsaSigningScheme::Eip712, partially_fillable = false.
Use the with_* builder methods to override individual fields.
§Parameters
sell_token— the ERC-20Addressto sell.buy_token— the ERC-20Addressto buy.from— the walletAddressplacing the order.side— theQuoteSidespecifying direction and amount.
§Returns
A new OrderQuoteRequest ready to be sent to
OrderBookApi::get_quote.
Sourcepub const fn with_receiver(self, receiver: Address) -> OrderQuoteRequest
pub const fn with_receiver(self, receiver: Address) -> OrderQuoteRequest
Override the receiver address (defaults to from).
Sourcepub const fn with_valid_to(self, valid_to: u32) -> OrderQuoteRequest
pub const fn with_valid_to(self, valid_to: u32) -> OrderQuoteRequest
Set an explicit validTo Unix timestamp.
Sourcepub fn with_app_data(self, app_data: impl Into<String>) -> OrderQuoteRequest
pub fn with_app_data(self, app_data: impl Into<String>) -> OrderQuoteRequest
Override the bytes32 app-data hash.
Sourcepub const fn with_partially_fillable(self) -> OrderQuoteRequest
pub const fn with_partially_fillable(self) -> OrderQuoteRequest
Allow partial fills.
Sourcepub const fn with_price_quality(
self,
quality: PriceQuality,
) -> OrderQuoteRequest
pub const fn with_price_quality( self, quality: PriceQuality, ) -> OrderQuoteRequest
Override the price quality hint.
Sourcepub const fn with_sell_token_balance(
self,
balance: TokenBalance,
) -> OrderQuoteRequest
pub const fn with_sell_token_balance( self, balance: TokenBalance, ) -> OrderQuoteRequest
Override the source of sellToken funds.
Sourcepub const fn with_buy_token_balance(
self,
balance: TokenBalance,
) -> OrderQuoteRequest
pub const fn with_buy_token_balance( self, balance: TokenBalance, ) -> OrderQuoteRequest
Override the destination of buyToken funds.
Sourcepub const fn with_signing_scheme(
self,
scheme: EcdsaSigningScheme,
) -> OrderQuoteRequest
pub const fn with_signing_scheme( self, scheme: EcdsaSigningScheme, ) -> OrderQuoteRequest
Override the signing scheme.
Sourcepub const fn has_receiver(&self) -> bool
pub const fn has_receiver(&self) -> bool
Returns true if a custom receiver address has been set.
When false, the protocol defaults the receiver to from.
Sourcepub const fn has_valid_to(&self) -> bool
pub const fn has_valid_to(&self) -> bool
Returns true if an explicit validTo Unix timestamp has been set.
Sourcepub const fn is_sell(&self) -> bool
pub const fn is_sell(&self) -> bool
Returns true if this is a sell-side quote request.
use alloy_primitives::Address;
use cow_orderbook::{OrderQuoteRequest, QuoteSide};
let req = OrderQuoteRequest::new(
Address::ZERO,
Address::ZERO,
Address::ZERO,
QuoteSide::sell("1000"),
);
assert!(req.is_sell());
assert!(!req.is_buy());Sourcepub const fn is_buy(&self) -> bool
pub const fn is_buy(&self) -> bool
Returns true if this is a buy-side quote request.
use alloy_primitives::Address;
use cow_orderbook::{OrderQuoteRequest, QuoteSide};
let req =
OrderQuoteRequest::new(Address::ZERO, Address::ZERO, Address::ZERO, QuoteSide::buy("500"));
assert!(req.is_buy());
assert!(!req.is_sell());Sourcepub const fn is_partially_fillable(&self) -> bool
pub const fn is_partially_fillable(&self) -> bool
Returns true if the order may be partially filled.
use alloy_primitives::Address;
use cow_orderbook::{OrderQuoteRequest, QuoteSide};
let req = OrderQuoteRequest::new(
Address::ZERO,
Address::ZERO,
Address::ZERO,
QuoteSide::sell("1000"),
);
assert!(!req.is_partially_fillable());
let req = req.with_partially_fillable();
assert!(req.is_partially_fillable());Trait Implementations§
Source§impl Clone for OrderQuoteRequest
impl Clone for OrderQuoteRequest
Source§fn clone(&self) -> OrderQuoteRequest
fn clone(&self) -> OrderQuoteRequest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OrderQuoteRequest
impl Debug for OrderQuoteRequest
Source§impl<'de> Deserialize<'de> for OrderQuoteRequest
impl<'de> Deserialize<'de> for OrderQuoteRequest
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<OrderQuoteRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<OrderQuoteRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for OrderQuoteRequest
impl Display for OrderQuoteRequest
Source§impl Serialize for OrderQuoteRequest
impl Serialize for OrderQuoteRequest
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for OrderQuoteRequest
impl RefUnwindSafe for OrderQuoteRequest
impl Send for OrderQuoteRequest
impl Sync for OrderQuoteRequest
impl Unpin for OrderQuoteRequest
impl UnsafeUnpin for OrderQuoteRequest
impl UnwindSafe for OrderQuoteRequest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.