Struct phoenix_sdk::sdk_client::SDKClient
source · pub struct SDKClient {
pub client: EllipsisClient,
pub core: SDKClientCore,
}Fields§
§client: EllipsisClient§core: SDKClientCoreImplementations§
source§impl SDKClient
impl SDKClient
sourcepub async fn new_from_ellipsis_client(client: EllipsisClient) -> Result<Self>
pub async fn new_from_ellipsis_client(client: EllipsisClient) -> Result<Self>
Create a new SDKClient from an EllipsisClient.
This does not have any markets added to it. You must call add_market or add_all_markets to
add markets to the SDKClient.
sourcepub fn new_from_ellipsis_client_sync(client: EllipsisClient) -> Result<Self>
pub fn new_from_ellipsis_client_sync(client: EllipsisClient) -> Result<Self>
Create a new SDKClient from an EllipsisClient.
This does not have any markets added to it. You must call add_market or add_all_markets to
add markets to the SDKClient.
sourcepub async fn new_from_ellipsis_client_with_all_markets(
client: EllipsisClient
) -> Result<Self>
pub async fn new_from_ellipsis_client_with_all_markets( client: EllipsisClient ) -> Result<Self>
Recommended way to create a new SDKClient from an EllipsisClient. This will use a list of markets from a pre-defined config file to add all known markets to the SDKClient.
sourcepub fn new_from_ellipsis_client_with_all_markets_sync(
client: EllipsisClient
) -> Result<Self>
pub fn new_from_ellipsis_client_with_all_markets_sync( client: EllipsisClient ) -> Result<Self>
Recommended way to create a new SDKClient from an EllipsisClient. This will use a list of markets from a pre-defined config file to add all known markets to the SDKClient.
sourcepub async fn new_from_ellipsis_client_with_market_keys(
market_keys: Vec<&Pubkey>,
client: EllipsisClient
) -> Result<Self>
pub async fn new_from_ellipsis_client_with_market_keys( market_keys: Vec<&Pubkey>, client: EllipsisClient ) -> Result<Self>
Create a new SDKClient from an EllipsisClient. Pass in a list of market keys to add to the SDKClient.
sourcepub fn new_from_ellipsis_client_sync_with_market_keys(
market_keys: Vec<&Pubkey>,
client: EllipsisClient
) -> Result<Self>
pub fn new_from_ellipsis_client_sync_with_market_keys( market_keys: Vec<&Pubkey>, client: EllipsisClient ) -> Result<Self>
Create a new SDKClient from an EllipsisClient. Pass in a list of market keys to add to the SDKClient.
sourcepub async fn new(payer: &Keypair, url: &str) -> Result<Self>
pub async fn new(payer: &Keypair, url: &str) -> Result<Self>
Create a new SDKClient.
This does not have any markets added to it. You must call add_market or add_all_markets to
add markets to the SDKClient.
sourcepub fn new_sync(payer: &Keypair, url: &str) -> Result<Self>
pub fn new_sync(payer: &Keypair, url: &str) -> Result<Self>
Create a new SDKClient.
This does not have any markets added to it. You must call add_market or add_all_markets to
add markets to the SDKClient.
sourcepub async fn new_with_all_markets(payer: &Keypair, url: &str) -> Result<Self>
pub async fn new_with_all_markets(payer: &Keypair, url: &str) -> Result<Self>
Recommended way to create a new SDKClient. This will use a list of markets from a pre-defined config file to add all known markets to the SDKClient.
sourcepub fn new_with_all_markets_sync(payer: &Keypair, url: &str) -> Result<Self>
pub fn new_with_all_markets_sync(payer: &Keypair, url: &str) -> Result<Self>
Recommended way to create a new SDKClient. This will use a list of markets from a pre-defined config file to add all known markets to the SDKClient.
sourcepub async fn new_with_market_keys(
market_keys: Vec<&Pubkey>,
payer: &Keypair,
url: &str
) -> Result<Self>
pub async fn new_with_market_keys( market_keys: Vec<&Pubkey>, payer: &Keypair, url: &str ) -> Result<Self>
Create a new SDKClient. Pass in a list of market keys to add to the SDKClient.
sourcepub fn new_with_market_keys_sync(
market_keys: Vec<&Pubkey>,
payer: &Keypair,
url: &str
) -> Result<Self>
pub fn new_with_market_keys_sync( market_keys: Vec<&Pubkey>, payer: &Keypair, url: &str ) -> Result<Self>
Create a new SDKClient. Pass in a list of market keys to add to the SDKClient.
sourcepub async fn add_all_markets(&mut self) -> Result<()>
pub async fn add_all_markets(&mut self) -> Result<()>
Load in all known markets from a pre-defined config file located in the SDK github.
pub fn add_all_markets_sync(&mut self) -> Result<()>
pub async fn add_market(&mut self, market_key: &Pubkey) -> Result<()>
pub fn set_payer(&mut self, payer: Keypair)
pub fn set_trader(&mut self, trader: Pubkey)
pub fn get_trader(&self) -> Pubkey
pub async fn get_market_ladder( &self, market_key: &Pubkey, levels: u64 ) -> Result<Ladder>
pub fn get_market_ladder_sync( &self, market_key: &Pubkey, levels: u64 ) -> Result<Ladder>
pub async fn get_market_orderbook( &self, market_key: &Pubkey ) -> Result<Orderbook<FIFOOrderId, PhoenixOrder>>
pub async fn get_market_orderbook_sync( &self, market_key: &Pubkey ) -> Result<Orderbook<FIFOOrderId, PhoenixOrder>>
pub async fn get_traders_with_market_key( &self, market_key: &Pubkey ) -> Result<BTreeMap<Pubkey, TraderState>>
pub fn get_traders_with_market_key_sync( &self, market_key: &Pubkey ) -> Result<BTreeMap<Pubkey, TraderState>>
pub async fn get_market_state(&self, market_key: &Pubkey) -> Result<MarketState>
pub async fn parse_events_from_transaction( &self, sig: &Signature ) -> Option<Vec<PhoenixEvent>>
pub async fn parse_places(&self, signature: &Signature) -> Vec<PhoenixEvent> ⓘ
pub async fn parse_cancels(&self, signature: &Signature) -> Vec<PhoenixEvent> ⓘ
pub async fn parse_fills(&self, signature: &Signature) -> Vec<PhoenixEvent> ⓘ
pub async fn parse_fills_and_places( &self, signature: &Signature ) -> (Vec<PhoenixEvent>, Vec<PhoenixEvent>)
pub async fn send_ioc( &self, market_key: &Pubkey, price: u64, side: Side, size: u64 ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_fok_buy( &self, market_key: &Pubkey, price: u64, size_in_quote_lots: u64 ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_fok_sell( &self, market_key: &Pubkey, price: u64, size_in_base_lots: u64 ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_ioc_with_slippage( &self, market_key: &Pubkey, lots_in: u64, min_lots_out: u64, side: Side ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_post_only( &self, market_key: &Pubkey, price: u64, side: Side, size: u64 ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_limit_order( &self, market_key: &Pubkey, price: u64, side: Side, size: u64 ) -> Option<(Signature, Vec<PhoenixEvent>, Vec<PhoenixEvent>)>
pub async fn send_cancel_ids( &self, market_key: &Pubkey, ids: Vec<FIFOOrderId> ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_cancel_up_to( &self, market_key: &Pubkey, tick_limit: Option<u64>, side: Side ) -> Option<(Signature, Vec<PhoenixEvent>)>
pub async fn send_cancel_all( &self, market_key: &Pubkey ) -> Option<(Signature, Vec<PhoenixEvent>)>
Methods from Deref<Target = SDKClientCore>§
sourcepub fn raw_base_units_to_base_lots(
&self,
market_key: &Pubkey,
raw_base_units: f64
) -> Result<u64, Error>
pub fn raw_base_units_to_base_lots( &self, market_key: &Pubkey, raw_base_units: f64 ) -> Result<u64, Error>
RECOMMENDED: Converts raw base units (whole tokens) to base lots. For example if the base currency was a Widget and you wanted to convert 3 Widget tokens to base lots you would call sdk.raw_base_units_to_base_lots(3.0). This would return the number of base lots that would be equivalent to 3 Widget tokens.
sourcepub fn raw_base_units_to_base_lots_rounded_up(
&self,
market_key: &Pubkey,
raw_base_units: f64
) -> Result<u64, Error>
pub fn raw_base_units_to_base_lots_rounded_up( &self, market_key: &Pubkey, raw_base_units: f64 ) -> Result<u64, Error>
The same function as raw_base_units_to_base_lots, but rounds up instead of down.
sourcepub fn base_atoms_to_base_lots(
&self,
market_key: &Pubkey,
base_atoms: u64
) -> Result<u64, Error>
pub fn base_atoms_to_base_lots( &self, market_key: &Pubkey, base_atoms: u64 ) -> Result<u64, Error>
RECOMMENDED: Converts base atoms to base lots. For example if the base currency was a Widget with 9 decimals, where 1 atom is 1e-9 of one Widget and you wanted to convert 3 Widgets to base lots you would call sdk.base_amount_to_base_lots(3_000_000_000). This would return the number of base lots that would be equivalent to 3 Widgets or 3 * 1e9 Widget atoms.
sourcepub fn base_lots_to_base_atoms(
&self,
market_key: &Pubkey,
base_lots: u64
) -> Result<u64, Error>
pub fn base_lots_to_base_atoms( &self, market_key: &Pubkey, base_lots: u64 ) -> Result<u64, Error>
RECOMMENDED: Converts base lots to base atoms. For example if the base currency was a Widget where there are 1_000 base atoms per base lot of Widget, you would call sdk.base_lots_to_base_atoms(300) to convert 300 base lots to 300_000 Widget atoms.
sourcepub fn quote_units_to_quote_lots(
&self,
market_key: &Pubkey,
quote_units: f64
) -> Result<u64, Error>
pub fn quote_units_to_quote_lots( &self, market_key: &Pubkey, quote_units: f64 ) -> Result<u64, Error>
RECOMMENDED: Converts quote units to quote lots. For example if the quote currency was USDC you wanted to convert 3 USDC to quote lots you would call sdk.quote_unit_to_quote_lots(3.0). This would return the number of quote lots that would be equivalent to 3 USDC.
sourcepub fn quote_atoms_to_quote_lots(
&self,
market_key: &Pubkey,
quote_atoms: u64
) -> Result<u64, Error>
pub fn quote_atoms_to_quote_lots( &self, market_key: &Pubkey, quote_atoms: u64 ) -> Result<u64, Error>
RECOMMENDED: Converts quote atoms to quote lots. For example if the quote currency was USDC with 6 decimals and you wanted to convert 3 USDC, or 3_000_000 USDC atoms, to quote lots you would call sdk.quote_atoms_to_quote_lots(3_000_000). This would return the number of quote lots that would be equivalent to 3_000_000 USDC atoms.
sourcepub fn quote_lots_to_quote_atoms(
&self,
market_key: &Pubkey,
quote_lots: u64
) -> Result<u64, Error>
pub fn quote_lots_to_quote_atoms( &self, market_key: &Pubkey, quote_lots: u64 ) -> Result<u64, Error>
RECOMMENDED: Converts quote lots to quote atoms. For example if the quote currency was USDC and there are 100 quote atoms per quote lot of USDC, you would call sdk.quote_lots_to_quote_atoms(300) to convert 300 quote lots to 30_000 USDC atoms.
sourcepub fn base_atoms_to_base_unit_as_float(
&self,
market_key: &Pubkey,
base_atoms: u64
) -> Result<f64, Error>
pub fn base_atoms_to_base_unit_as_float( &self, market_key: &Pubkey, base_atoms: u64 ) -> Result<f64, Error>
Converts a number of base atoms to a floating point number of base units. For example if the base currency is a Widget where the token has 9 decimals and you wanted to convert 1_000_000_000 base atoms to a floating point number of whole Widget tokens you would call sdk.base_amount_to_float(1_000_000_000). This would return 1.0. This is useful for displaying the base amount in a human readable format.
sourcepub fn quote_atoms_to_quote_unit_as_float(
&self,
market_key: &Pubkey,
quote_atoms: u64
) -> Result<f64, Error>
pub fn quote_atoms_to_quote_unit_as_float( &self, market_key: &Pubkey, quote_atoms: u64 ) -> Result<f64, Error>
Converts a number of quote atoms to a floating point number of quote units. For example if the quote currency is USDC the token has 6 decimals and you wanted to convert 1_000_000 USDC atoms to a floating point number of whole USDC tokens you would call sdk.quote_amount_to_float(1_000_000). This would return 1.0. This is useful for displaying the quote amount in a human readable format.
sourcepub fn print_quote_amount(
&self,
market_key: &Pubkey,
quote_amount: u64
) -> Result<(), Error>
pub fn print_quote_amount( &self, market_key: &Pubkey, quote_amount: u64 ) -> Result<(), Error>
Takes in a number of quote atoms, converts to floating point number of whole tokens, and prints it as a human readable string to the console
sourcepub fn print_base_amount(
&self,
market_key: &Pubkey,
base_amount: u64
) -> Result<(), Error>
pub fn print_base_amount( &self, market_key: &Pubkey, base_amount: u64 ) -> Result<(), Error>
Takes in a number of base atoms, converts to floating point number of whole tokens, and prints it as a human readable string to the console
sourcepub fn fill_event_to_quote_amount(
&self,
market_key: &Pubkey,
fill: &Fill
) -> Result<u64, Error>
pub fn fill_event_to_quote_amount( &self, market_key: &Pubkey, fill: &Fill ) -> Result<u64, Error>
Takes in information from a fill event and converts it into the equivalent quote amount
sourcepub fn order_to_quote_amount(
&self,
market_key: &Pubkey,
base_lots: u64,
price_in_ticks: u64
) -> Result<u64, Error>
pub fn order_to_quote_amount( &self, market_key: &Pubkey, base_lots: u64, price_in_ticks: u64 ) -> Result<u64, Error>
Takes in tick price and base lots of an order converts it into the equivalent quote amount
sourcepub fn float_price_to_ticks(
&self,
market_key: &Pubkey,
price: f64
) -> Result<u64, Error>
pub fn float_price_to_ticks( &self, market_key: &Pubkey, price: f64 ) -> Result<u64, Error>
Takes in a price as a floating point number and converts it to a number of ticks (rounded down)
sourcepub fn float_price_to_ticks_rounded_up(
&self,
market_key: &Pubkey,
price: f64
) -> Result<u64, Error>
pub fn float_price_to_ticks_rounded_up( &self, market_key: &Pubkey, price: f64 ) -> Result<u64, Error>
Takes in a price as a floating point number and converts it to a number of ticks (rounded up)
sourcepub fn ticks_to_float_price(
&self,
market_key: &Pubkey,
ticks: u64
) -> Result<f64, Error>
pub fn ticks_to_float_price( &self, market_key: &Pubkey, ticks: u64 ) -> Result<f64, Error>
Takes in a number of ticks and converts it to a floating point number price
sourcepub fn get_next_client_order_id(&self, rng: &mut StdRng) -> u128
pub fn get_next_client_order_id(&self, rng: &mut StdRng) -> u128
Generate a random client order id