pub struct DeriveExecClientConfig {Show 21 fields
pub wallet_address: Option<String>,
pub session_key: Option<String>,
pub subaccount_id: Option<u64>,
pub base_url_rest: Option<String>,
pub base_url_ws: Option<String>,
pub proxy_url: Option<String>,
pub environment: DeriveEnvironment,
pub http_timeout_secs: u64,
pub max_retries: u32,
pub retry_delay_initial_ms: u64,
pub retry_delay_max_ms: u64,
pub ws_timeout_secs: Option<u64>,
pub max_fee_per_contract: Option<Decimal>,
pub transport_backend: TransportBackend,
pub domain_separator: Option<String>,
pub action_typehash: Option<String>,
pub trade_module_address: Option<String>,
pub signature_expiry_secs: u64,
pub market_order_slippage_bps: u32,
pub max_matching_requests_per_second: Option<u32>,
pub max_per_instrument_matching_requests_per_second: Option<u32>,
}Expand description
Configuration for the Derive execution client.
Debug is implemented manually so that session_key is redacted; the
derived Debug would leak the raw secret through any logger or Python
__repr__.
Fields§
§wallet_address: Option<String>Derive Chain smart-contract wallet address (X-LYRAWALLET). Falls back
to DERIVE_WALLET_ADDRESS (or DERIVE_TESTNET_WALLET_ADDRESS on
testnet) when unset.
session_key: Option<String>secp256k1 session-key private key in hex (with or without 0x prefix).
Falls back to DERIVE_SESSION_PRIVATE_KEY (or
DERIVE_TESTNET_SESSION_PRIVATE_KEY on testnet) when unset.
subaccount_id: Option<u64>Subaccount identifier. Falls back to DERIVE_SUBACCOUNT_ID (or
DERIVE_TESTNET_SUBACCOUNT_ID on testnet) when unset.
base_url_rest: Option<String>Override for the REST API base URL.
base_url_ws: Option<String>Override for the WebSocket URL.
proxy_url: Option<String>Optional proxy URL for HTTP and WebSocket transports.
environment: DeriveEnvironmentThe Derive environment to connect to.
http_timeout_secs: u64HTTP timeout in seconds.
max_retries: u32Maximum number of retry attempts for HTTP requests.
retry_delay_initial_ms: u64Initial retry delay in milliseconds.
retry_delay_max_ms: u64Maximum retry delay in milliseconds.
ws_timeout_secs: Option<u64>Optional per-operation WebSocket timeout in seconds (login, subscribe,
reads, writes). When unset, the low-level WS_REQUEST_TIMEOUT applies.
max_fee_per_contract: Option<Decimal>Per-contract USDC fee cap signed into every order. Required for execution and must be greater than zero.
transport_backend: TransportBackendWebSocket transport backend (defaults to Sockudo when that feature is enabled).
domain_separator: Option<String>Override for the EIP-712 domain separator. Falls back to the constant for the configured environment when unset. The shipped constants are placeholders that must be replaced or overridden before signing.
action_typehash: Option<String>Override for the EIP-712 action typehash. Falls back to the shipped
crate::common::consts::ACTION_TYPEHASH when unset.
trade_module_address: Option<String>Override for the Trade module contract address. Falls back to the shipped per-environment constant when unset.
signature_expiry_secs: u64Signature expiry TTL in seconds for normal orders and replaces (added
to the wall clock before signing). Must be greater than the venue
minimum (crate::common::consts::MIN_SIGNATURE_TTL, 300s).
market_order_slippage_bps: u32Slippage bound applied to market orders when deriving a worst-acceptable limit price from the cached top-of-book quote. Expressed in basis points (1 bp = 0.01%). Defaults to 50 bp = 0.5%.
max_matching_requests_per_second: Option<u32>Maximum matching-engine requests per second for order writes sent over the WebSocket (create/cancel/replace). Defaults to the Trader-tier limit of 1 when unset; raise it for Market Maker accounts with higher negotiated limits. See https://docs.derive.xyz/reference/rate-limits.
max_per_instrument_matching_requests_per_second: Option<u32>Maximum per-instrument matching requests per second for instrument-
scoped order writes sent over the WebSocket. Defaults to the Trader-tier
limit of 1 when unset; raise it for Market Maker accounts with higher
negotiated per-instrument limits. This allowance is independent of
max_matching_requests_per_second, which never inflates it. See
https://docs.derive.xyz/reference/rate-limits.
Implementations§
Source§impl DeriveExecClientConfig
impl DeriveExecClientConfig
Sourcepub fn builder() -> DeriveExecClientConfigBuilder
pub fn builder() -> DeriveExecClientConfigBuilder
Create an instance of DeriveExecClientConfig using the builder syntax
Source§impl DeriveExecClientConfig
impl DeriveExecClientConfig
pub fn new() -> Self
Sourcepub fn has_credentials(&self) -> bool
pub fn has_credentials(&self) -> bool
Returns true when wallet, session-key, and subaccount are all populated in this config. Environment-variable fallbacks documented on the individual fields are resolved at factory-construction time, not here; callers that need a “credentials available anywhere” check should inspect both this method and the relevant env vars.
Sourcepub fn validate(&self) -> Result<()>
pub fn validate(&self) -> Result<()>
Validates execution configuration invariants.
§Errors
Returns an error when max_fee_per_contract is missing or not greater
than zero.
Trait Implementations§
Source§impl Clone for DeriveExecClientConfig
impl Clone for DeriveExecClientConfig
Source§fn clone(&self) -> DeriveExecClientConfig
fn clone(&self) -> DeriveExecClientConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DeriveExecClientConfig
impl Debug for DeriveExecClientConfig
Source§impl Default for DeriveExecClientConfig
impl Default for DeriveExecClientConfig
Source§impl<'de> Deserialize<'de> for DeriveExecClientConfigwhere
DeriveExecClientConfig: Default,
impl<'de> Deserialize<'de> for DeriveExecClientConfigwhere
DeriveExecClientConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DeriveExecClientConfig
impl RefUnwindSafe for DeriveExecClientConfig
impl Send for DeriveExecClientConfig
impl Sync for DeriveExecClientConfig
impl Unpin for DeriveExecClientConfig
impl UnsafeUnpin for DeriveExecClientConfig
impl UnwindSafe for DeriveExecClientConfig
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
impl<'de, T> BorrowedRpcObject<'de> for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 more