diff --git a/packages/rs-sdk/src/platform/transition/withdraw_from_identity.rs b/packages/rs-sdk/src/platform/transition/withdraw_from_identity.rs index db06f29a2aa..ce6d32e0716 100644 --- a/packages/rs-sdk/src/platform/transition/withdraw_from_identity.rs +++ b/packages/rs-sdk/src/platform/transition/withdraw_from_identity.rs @@ -3,7 +3,7 @@ use dpp::identity::accessors::IdentityGettersV0; use dpp::identity::core_script::CoreScript; use dpp::identity::signer::Signer; -use dpp::identity::Identity; +use dpp::identity::{Identity, IdentityPublicKey}; use dpp::prelude::UserFeeIncrease; use crate::platform::transition::broadcast::BroadcastStateTransition; @@ -19,13 +19,15 @@ use dpp::withdrawal::Pooling; #[async_trait::async_trait] pub trait WithdrawFromIdentity { /// Function to withdraw credits from an identity. Returns the final identity balance. + /// If signing_withdrawal_key_to_use is not set, we will try to use one in the signer that is + /// available for withdrawal async fn withdraw( &self, sdk: &Sdk, address: Option
, amount: u64, core_fee_per_byte: Option, - user_fee_increase: Option, + signing_withdrawal_key_to_use: Option<&IdentityPublicKey>, signer: S, settings: Option, ) -> Result; @@ -39,12 +41,15 @@ impl WithdrawFromIdentity for Identity { address: Option
, amount: u64, core_fee_per_byte: Option, - user_fee_increase: Option, + signing_withdrawal_key_to_use: Option<&IdentityPublicKey>, signer: S, settings: Option, ) -> Result { let new_identity_nonce = sdk.get_identity_nonce(self.id(), true, settings).await?; let script = address.map(|address| CoreScript::new(address.script_pubkey())); + let user_fee_increase = settings + .map(|settings| settings.user_fee_increase) + .flatten(); let state_transition = IdentityCreditWithdrawalTransition::try_from_identity( self, script, @@ -53,7 +58,7 @@ impl WithdrawFromIdentity for Identity { core_fee_per_byte.unwrap_or(1), user_fee_increase.unwrap_or_default(), signer, - None, + signing_withdrawal_key_to_use, PreferredKeyPurposeForSigningWithdrawal::TransferPreferred, new_identity_nonce, sdk.version(),