pub struct DeriveExecClientConfig {Show 19 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 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>,
}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.
max_fee_per_contract: Option<Decimal>Per-contract USDC fee cap signed into every order.
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.
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.
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
impl DerefToPyAny 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>,
Source§impl<'a, 'py> FromPyObject<'a, 'py> for DeriveExecClientConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for DeriveExecClientConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for DeriveExecClientConfig
impl<'py> IntoPyObject<'py> for DeriveExecClientConfig
Source§type Target = DeriveExecClientConfig
type Target = DeriveExecClientConfig
Source§type Output = Bound<'py, <DeriveExecClientConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DeriveExecClientConfig as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for DeriveExecClientConfig
impl PyClass for DeriveExecClientConfig
Source§impl PyClassImpl for DeriveExecClientConfig
impl PyClassImpl for DeriveExecClientConfig
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// 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__`.
const RAW_DOC: &'static CStr = /// 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__`.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<DeriveExecClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DeriveExecClientConfig>
type Layout = <<DeriveExecClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DeriveExecClientConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForDeriveExecClientConfig
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
Source§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
Source§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for DeriveExecClientConfig
impl PyClassNewTextSignature for DeriveExecClientConfig
const TEXT_SIGNATURE: &'static str = "(wallet_address=None, session_key=None, subaccount_id=None, base_url_rest=None, base_url_ws=None, proxy_url=None, environment=None, http_timeout_secs=None, max_retries=None, retry_delay_initial_ms=None, retry_delay_max_ms=None, max_fee_per_contract=None, domain_separator=None, action_typehash=None, trade_module_address=None, signature_expiry_secs=None, market_order_slippage_bps=None, max_matching_requests_per_second=None)"
Source§impl PyStubType for DeriveExecClientConfig
impl PyStubType for DeriveExecClientConfig
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
Source§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for DeriveExecClientConfig
impl PyTypeInfo for DeriveExecClientConfig
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Source§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
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§
impl<T> Allocation for T
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>,
impl<'py, T> FromPyObjectOwned<'py> for Twhere
T: for<'a> FromPyObject<'a, 'py>,
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<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
Source§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.Source§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
Source§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
Source§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.