#![warn(rustc::all)]
#![warn(clippy::pedantic)]
#![deny(unsafe_code)]
#![deny(nonstandard_style)]
#![deny(missing_debug_implementations)]
#![deny(clippy::missing_errors_doc)]
#![deny(clippy::missing_panics_doc)]
#![deny(rustdoc::broken_intra_doc_links)]
#![allow(
clippy::similar_names,
reason = "venue and domain terms such as inst/inst_id and bid/ask are intentionally parallel"
)]
#![allow(
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_sign_loss,
reason = "venue protocol casts between i64/u64/usize with values bounded by documented OKX ranges"
)]
#![allow(
clippy::too_many_lines,
reason = "venue message parsing and request dispatch functions with large match statements are complex by nature"
)]
#![allow(
clippy::must_use_candidate,
reason = "client accessors and constructors are pervasive; #[must_use] noise is not warranted"
)]
#![allow(
clippy::trivially_copy_pass_by_ref,
reason = "PyO3 methods and trait method signatures require pass-by-reference parity"
)]
#![allow(
clippy::unsafe_derive_deserialize,
reason = "config and message types deserialize plain field values; unsafe in unrelated impls is sound"
)]
#![allow(
clippy::unused_self,
reason = "PyO3 methods and client trait operations take &self for interface parity"
)]
#![allow(
clippy::match_same_arms,
reason = "explicit per-variant arms document venue enum mappings even when bodies coincide"
)]
#![allow(
clippy::match_wildcard_for_single_variants,
reason = "wildcard arms guard against future enum variants in venue message dispatch"
)]
#![allow(
clippy::manual_let_else,
reason = "match can be clearer than let-else for some patterns"
)]
#![allow(
clippy::single_match_else,
reason = "match can be clearer than if-let-else for some patterns"
)]
#![allow(
clippy::redundant_else,
reason = "sometimes explicit else blocks improve readability"
)]
#![allow(clippy::clone_on_copy)]
pub mod common;
pub mod config;
pub mod data;
pub mod execution;
pub mod factories;
pub mod http;
pub mod websocket;
mod book_sync;
#[cfg(feature = "python")]
pub mod python;
pub use crate::{
common::{
enums::{OKXInstrumentType, OKXOrderType, OKXPositionMode, OKXPositionSide, OKXSide},
models::OKXInstrument,
},
data::OKXDataClient,
execution::OKXExecutionClient,
http::{client::OKXHttpClient, error::OKXHttpError},
websocket::{client::OKXWebSocketClient, error::OKXWsError},
};