use std::num::NonZeroUsize;
use nautilus_core::{Params, UUID4, UnixNanos};
use nautilus_model::{
data::{BarType, DataType},
identifiers::{ClientId, InstrumentId, OptionSeriesId, Venue},
};
use super::check_client_id_or_venue;
#[derive(Clone, Debug)]
pub struct UnsubscribeCustomData {
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub data_type: DataType,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeCustomData {
pub fn new(
client_id: Option<ClientId>,
venue: Option<Venue>,
data_type: DataType,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
client_id,
venue,
data_type,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeInstrument {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeInstrument {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeInstruments {
pub client_id: Option<ClientId>,
pub venue: Venue,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeInstruments {
pub fn new(
client_id: Option<ClientId>,
venue: Venue,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
Self {
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeBookDeltas {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeBookDeltas {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeBookDepth10 {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeBookDepth10 {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeBookSnapshots {
pub instrument_id: InstrumentId,
pub interval_ms: NonZeroUsize,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeBookSnapshots {
#[expect(clippy::too_many_arguments)]
pub fn new(
instrument_id: InstrumentId,
interval_ms: NonZeroUsize,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
interval_ms,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeQuotes {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeQuotes {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeTrades {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeTrades {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeBars {
pub bar_type: BarType,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeBars {
pub fn new(
bar_type: BarType,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
bar_type,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeMarkPrices {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeMarkPrices {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeIndexPrices {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeIndexPrices {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeFundingRates {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeFundingRates {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeInstrumentStatus {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeInstrumentStatus {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeOptionGreeks {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeOptionGreeks {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeInstrumentClose {
pub instrument_id: InstrumentId,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub correlation_id: Option<UUID4>,
pub params: Option<Params>,
}
impl UnsubscribeInstrumentClose {
pub fn new(
instrument_id: InstrumentId,
client_id: Option<ClientId>,
venue: Option<Venue>,
command_id: UUID4,
ts_init: UnixNanos,
correlation_id: Option<UUID4>,
params: Option<Params>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
instrument_id,
client_id,
venue,
command_id,
ts_init,
correlation_id,
params,
}
}
}
#[derive(Clone, Debug)]
pub struct UnsubscribeOptionChain {
pub series_id: OptionSeriesId,
pub command_id: UUID4,
pub ts_init: UnixNanos,
pub client_id: Option<ClientId>,
pub venue: Option<Venue>,
}
impl UnsubscribeOptionChain {
pub fn new(
series_id: OptionSeriesId,
command_id: UUID4,
ts_init: UnixNanos,
client_id: Option<ClientId>,
venue: Option<Venue>,
) -> Self {
check_client_id_or_venue(&client_id, &venue);
Self {
series_id,
command_id,
ts_init,
client_id,
venue,
}
}
}