pub struct DeriveExecutionClientConfig {Show 22 fields
pub account_id: AccountId,
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§
§account_id: AccountIdAccount identifier for the execution client.
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 DeriveExecutionClientConfig
impl DeriveExecutionClientConfig
Sourcepub fn builder() -> DeriveExecutionClientConfigBuilder
pub fn builder() -> DeriveExecutionClientConfigBuilder
Create an instance of DeriveExecutionClientConfig using the builder syntax
Source§impl DeriveExecutionClientConfig
impl DeriveExecutionClientConfig
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 ClientConfig for DeriveExecutionClientConfig
impl ClientConfig for DeriveExecutionClientConfig
Source§impl Clone for DeriveExecutionClientConfig
impl Clone for DeriveExecutionClientConfig
Source§fn clone(&self) -> DeriveExecutionClientConfig
fn clone(&self) -> DeriveExecutionClientConfig
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 DeriveExecutionClientConfig
impl Debug for DeriveExecutionClientConfig
impl DerefToPyAny for DeriveExecutionClientConfig
Source§impl<'de> Deserialize<'de> for DeriveExecutionClientConfigwhere
DeriveExecutionClientConfig: Default,
impl<'de> Deserialize<'de> for DeriveExecutionClientConfigwhere
DeriveExecutionClientConfig: 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 DeriveExecutionClientConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for DeriveExecutionClientConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for DeriveExecutionClientConfig
impl<'py> IntoPyObject<'py> for DeriveExecutionClientConfig
Source§type Target = DeriveExecutionClientConfig
type Target = DeriveExecutionClientConfig
Source§type Output = Bound<'py, <DeriveExecutionClientConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DeriveExecutionClientConfig 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 DeriveExecutionClientConfig
impl PyClass for DeriveExecutionClientConfig
Source§impl PyClassImpl for DeriveExecutionClientConfig
impl PyClassImpl for DeriveExecutionClientConfig
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 = <<DeriveExecutionClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DeriveExecutionClientConfig>
type Layout = <<DeriveExecutionClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DeriveExecutionClientConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForDeriveExecutionClientConfig
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>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for DeriveExecutionClientConfig
impl PyClassNewTextSignature for DeriveExecutionClientConfig
const TEXT_SIGNATURE: &'static str = "(account_id=None, 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, ws_timeout_secs=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, max_per_instrument_matching_requests_per_second=None, transport_backend=None)"
Source§impl PyStubType for DeriveExecutionClientConfig
impl PyStubType for DeriveExecutionClientConfig
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for DeriveExecutionClientConfig
impl PyTypeInfo for DeriveExecutionClientConfig
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
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Auto Trait Implementations§
impl Freeze for DeriveExecutionClientConfig
impl RefUnwindSafe for DeriveExecutionClientConfig
impl Send for DeriveExecutionClientConfig
impl Sync for DeriveExecutionClientConfig
impl Unpin for DeriveExecutionClientConfig
impl UnsafeUnpin for DeriveExecutionClientConfig
impl UnwindSafe for DeriveExecutionClientConfig
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 Twhere
T: RpcBorrow<'de> + RpcSend,
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>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§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.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>where
Self: IntoPyObject<'py, Error = !>,
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>where
Self: IntoPyObject<'py, Error = !>,
self into a [Py<PyAny>] when the underlying conversion is infallible.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more