@@ -53,16 +53,37 @@ interface EnclavedRecoveryParams {
5353 walletContractAddress : string ;
5454}
5555
56- function validateRecoveryParams ( sdkCoin : BaseCoin , params ?: CoinSpecificParams ) {
56+ function validateRecoveryParams (
57+ sdkCoin : BaseCoin ,
58+ params ?: CoinSpecificParams ,
59+ isMpcRecovery = false ,
60+ ) {
5761 if ( ! params ) {
5862 return ;
5963 }
6064
65+ if ( ! isMpcRecovery ) {
66+ if ( isUtxoCoin ( sdkCoin ) ) {
67+ if ( params . solanaRecoveryOptions || params . evmRecoveryOptions ) {
68+ throw new ValidationError ( 'Invalid parameters provided for UTXO coin recovery' ) ;
69+ }
70+ } else if ( isEthLikeCoin ( sdkCoin ) ) {
71+ if ( params . solanaRecoveryOptions || params . utxoRecoveryOptions ) {
72+ throw new ValidationError ( 'Invalid parameters provided for ETH-like coin recovery' ) ;
73+ }
74+ }
75+ return ;
76+ }
77+
78+ // Only validate EdDSA and ECDSA coins for MPC recovery
6179 if ( isEddsaCoin ( sdkCoin ) ) {
6280 if ( params . evmRecoveryOptions || params . utxoRecoveryOptions ) {
6381 throw new ValidationError ( 'Invalid parameters provided for Solana coin recovery' ) ;
6482 }
65- } else if ( isEcdsaCoin ( sdkCoin ) ) {
83+ return ;
84+ }
85+
86+ if ( isEcdsaCoin ( sdkCoin ) ) {
6687 if ( isEthLikeCoin ( sdkCoin ) ) {
6788 if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
6889 throw new ValidationError ( 'Invalid parameters provided for ETH-like MPC V2 coin recovery' ) ;
@@ -78,17 +99,9 @@ function validateRecoveryParams(sdkCoin: BaseCoin, params?: CoinSpecificParams)
7899 `MPC V2 recovery is not supported for coin family: ${ sdkCoin . getFamily ( ) } ` ,
79100 ) ;
80101 }
81- } else {
82- if ( isUtxoCoin ( sdkCoin ) ) {
83- if ( params . solanaRecoveryOptions || params . evmRecoveryOptions ) {
84- throw new ValidationError ( 'Invalid parameters provided for UTXO coin recovery' ) ;
85- }
86- } else if ( isEthLikeCoin ( sdkCoin ) ) {
87- if ( params . solanaRecoveryOptions || params . utxoRecoveryOptions ) {
88- throw new ValidationError ( 'Invalid parameters provided for ETH-like coin recovery' ) ;
89- }
90- }
102+ return ;
91103 }
104+ throw new ValidationError ( 'Invalid parameters provided for MPC recovery' ) ;
92105}
93106
94107async function handleEthLikeRecovery (
@@ -216,7 +229,7 @@ export async function handleRecoveryWalletOnPrem(
216229
217230 const sdkCoin = await coinFactory . getCoin ( coin , bitgo ) ;
218231 // Validate that we have correct parameters for recovery
219- validateRecoveryParams ( sdkCoin , coinSpecificParams ) ;
232+ validateRecoveryParams ( sdkCoin , coinSpecificParams , req . decoded . isTssRecovery ) ;
220233
221234 // Handle TSS recovery
222235 if ( req . decoded . isTssRecovery ) {
0 commit comments