hedera_rust_client/
token_revoke_kyc_transaction.rs

1use crate::entity_id::validate_option_id_checksum;
2
3use crate::transaction::Transaction;
4use crate::AccountId;
5use crate::Client;
6use crate::Hbar;
7use crate::HederaError;
8use crate::TokenId;
9use hedera_rust_client_derive::{TransactionExecute, TransactionProto, TransactionSchedule};
10
11#[derive(TransactionSchedule, TransactionExecute, Debug, Clone, PartialEq)]
12#[hedera_rust_client_derive(service(
13    method_service_name = "token",
14    method_service_fn = "revoke_kyc_from_token_account"
15))]
16pub struct TokenRevokeKycTransaction {
17    transaction: Transaction,
18    services: Proto,
19}
20
21impl TokenRevokeKycTransaction {
22    pub fn new() -> TokenRevokeKycTransaction {
23        let transaction = Transaction::with_max_transaction_fee(Hbar::new(30.0));
24        let services = Proto::new();
25        TokenRevokeKycTransaction {
26            transaction,
27            services,
28        }
29    }
30
31    fn validate_network_on_ids(&self, client: &Client) -> Result<(), HederaError> {
32        validate_option_id_checksum(&self.services.token, client)?;
33        validate_option_id_checksum(&self.services.account, client)?;
34        Ok(())
35    }
36
37    // token
38    gen_transaction_token_fns!();
39
40    // account_id
41    gen_transaction_account_fns!();
42}
43
44#[derive(Debug, Clone, PartialEq, TransactionProto)]
45#[hedera_rust_client_derive(proto(
46    proto_enum = "TokenRevokeKyc",
47    proto_type = "TokenRevokeKycTransactionBody"
48))]
49struct Proto {
50    #[hedera_rust_client_derive(to_option_proto)]
51    pub token: Option<TokenId>,
52    #[hedera_rust_client_derive(to_option_proto)]
53    pub account: Option<AccountId>,
54}
55
56impl Proto {
57    pub fn new() -> Self {
58        Proto {
59            token: None,
60            account: None,
61        }
62    }
63}