Skip to main content

bullet_exchange_interface/message/user/
args.rs

1//! Argument types for user operations.
2
3use crate::decimals::PositiveDecimal;
4use crate::define_struct;
5use crate::string::CustomString;
6use crate::types::{
7    AssetId, ClientOrderId, MarketId, OrderId, OrderType, Side, TriggerDirection,
8    TriggerPriceCondition,
9};
10
11define_struct! {
12    struct NewOrderArgs {
13        price: PositiveDecimal,
14        size: PositiveDecimal,
15        side: Side,
16        order_type: OrderType,
17        reduce_only: bool,
18        client_order_id: Option<ClientOrderId>,
19        pending_tpsl_pair: Option<PendingTpslPair>,
20    }
21}
22
23define_struct! {
24    struct AmendOrderArgs {
25        cancel: CancelOrderArgs,
26        place: NewOrderArgs,
27    }
28}
29
30define_struct! {
31    struct CancelOrderArgs {
32        order_id: Option<OrderId>,
33        client_order_id: Option<ClientOrderId>,
34    }
35}
36
37define_struct! {
38    struct PendingTpslPair {
39        tpsl_pair: TpslPair,
40        dynamic_size: bool,
41    }
42}
43
44define_struct! {
45    struct TpslPair {
46        tp: Option<Tpsl>,
47        sl: Option<Tpsl>,
48    }
49}
50
51define_struct! {
52    struct Tpsl {
53        order_price: PositiveDecimal,
54        trigger_price: PositiveDecimal,
55        price_condition: TriggerPriceCondition,
56        order_type: OrderType,
57    }
58}
59
60define_struct! {
61    struct NewTriggerOrderArgs {
62        side: Side,
63        order_price: PositiveDecimal,
64        trigger_price: PositiveDecimal,
65        trigger_direction: TriggerDirection,
66        price_condition: TriggerPriceCondition,
67        size: Option<PositiveDecimal>,
68        order_type: OrderType,
69    }
70}
71
72define_struct! {
73    struct NewTwapOrderArgs {
74        side: Side,
75        total_size: PositiveDecimal,
76        reduce_only: bool,
77        total_duration_seconds: u64,
78    }
79}
80
81define_struct! {
82    struct BackstopLiquidatePerpPositionArgs {
83        market_id: MarketId,
84        size: PositiveDecimal,
85    }
86}
87
88define_struct! {
89    struct CreateVaultArgs<Address> {
90        name: CustomString,
91        description: CustomString,
92        leader: Address,
93        deposit_asset_ids: Vec<AssetId>,
94        withdraw_asset_id: AssetId,
95        withdraw_lockup_period_hours: u8,
96        whitelist_deposits: bool,
97        profit_share_percentage: u8,
98        withdrawal_fee_bps: u8,
99        deposit_limit: PositiveDecimal,
100    }
101}