bulk_client/msgs/
subaccounts.rs1use crate::transaction::ActionMeta;
2use serde::{Deserialize, Serialize};
3use solana_keypair::Pubkey;
4use std::sync::Arc;
5
6#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub enum TransferKind {
13 #[serde(rename = "internal")]
14 Internal,
15 #[serde(rename = "external")]
16 External,
17}
18
19impl Default for TransferKind {
20 fn default() -> Self {
21 Self::Internal
22 }
23}
24
25#[derive(Clone, Debug, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct CreateSubAccount {
32 pub name: Arc<str>,
34 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub margin_amount: Option<f64>,
37
38 #[serde(skip)]
39 pub meta: ActionMeta,
40}
41
42#[derive(Clone, Debug, Serialize, Deserialize)]
43#[serde(rename_all = "camelCase")]
44pub struct RemoveSubAccount {
45 #[serde(with = "crate::msgs::serde_pubkey")]
47 pub to_remove: Pubkey,
48
49 #[serde(skip)]
50 pub meta: ActionMeta,
51}
52
53#[derive(Clone, Debug, Serialize, Deserialize)]
54#[serde(rename_all = "camelCase")]
55pub struct Transfer {
56 #[serde(rename = "k", default)]
58 pub kind: TransferKind,
59
60 #[serde(with = "crate::msgs::serde_pubkey")]
62 pub from: Pubkey,
63 #[serde(with = "crate::msgs::serde_pubkey")]
65 pub to: Pubkey,
66 pub margin_amount: f64,
68
69 #[serde(skip)]
70 pub meta: ActionMeta,
71}
72
73#[derive(Clone, Debug, Serialize, Deserialize)]
74#[serde(rename_all = "camelCase")]
75pub struct RenameSubAccount {
76 #[serde(with = "crate::msgs::serde_pubkey", rename = "a", alias = "account")]
78 pub account: Pubkey,
79 #[serde(rename = "n", alias = "name")]
81 pub name: Arc<str>,
82
83 #[serde(skip)]
84 pub meta: ActionMeta,
85}