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