diff --git a/packages/rs-sdk/src/platform/transition/transfer.rs b/packages/rs-sdk/src/platform/transition/transfer.rs index 7bd7ddd364..b939d05ff0 100644 --- a/packages/rs-sdk/src/platform/transition/transfer.rs +++ b/packages/rs-sdk/src/platform/transition/transfer.rs @@ -32,7 +32,7 @@ pub trait TransferToIdentity: Waitable { signing_transfer_key_to_use: Option<&IdentityPublicKey>, signer: S, settings: Option, - ) -> Result; + ) -> Result<(u64, u64), Error>; } #[async_trait::async_trait] @@ -45,7 +45,7 @@ impl TransferToIdentity for Identity { signing_transfer_key_to_use: Option<&IdentityPublicKey>, signer: S, settings: Option, - ) -> Result { + ) -> Result<(u64, u64), Error> { let new_identity_nonce = sdk.get_identity_nonce(self.id(), true, settings).await?; let user_fee_increase = settings.and_then(|settings| settings.user_fee_increase); let state_transition = IdentityCreditTransferTransition::try_from_identity( @@ -60,10 +60,21 @@ impl TransferToIdentity for Identity { None, )?; - let identity: PartialIdentity = state_transition.broadcast_and_wait(sdk, settings).await?; + let (sender, receiver): (PartialIdentity, PartialIdentity) = + state_transition.broadcast_and_wait(sdk, settings).await?; - identity.balance.ok_or(Error::DapiClientError( - "expected an identity balance after transfer".to_string(), - )) + let sender_balance = sender.balance.ok_or_else(|| { + Error::DapiClientError( + "expected an identity balance after transfer (sender)".to_string(), + ) + })?; + + let receiver_balance = receiver.balance.ok_or_else(|| { + Error::DapiClientError( + "expected an identity balance after transfer (receiver)".to_string(), + ) + })?; + + Ok((sender_balance, receiver_balance)) } }