@@ -63,52 +63,49 @@ function validateRecoveryParams(
6363 }
6464
6565 if ( isUtxoCoin ( sdkCoin ) ) {
66- if ( params . solanaRecoveryOptions || params . evmRecoveryOptions ) {
67- throw new ValidationError ( 'Invalid parameters provided for UTXO coin recovery' ) ;
68- }
69- return ;
70- }
71-
72- if ( ! isMpcRecovery && isEthLikeCoin ( sdkCoin ) ) {
73- if ( params . solanaRecoveryOptions || params . utxoRecoveryOptions ) {
74- throw new ValidationError ( 'Invalid parameters provided for ETH-like coin recovery' ) ;
66+ // UTXO coins need utxoRecoveryOptions for standard recovery
67+ if ( ! isMpcRecovery && ! params . utxoRecoveryOptions ) {
68+ throw new ValidationError ( 'UTXO recovery options are required for UTXO coin recovery' ) ;
7569 }
7670 return ;
7771 }
7872
7973 if ( isEddsaCoin ( sdkCoin ) ) {
80- if ( params . evmRecoveryOptions || params . utxoRecoveryOptions ) {
81- throw new ValidationError ( 'Invalid parameters provided for Solana coin recovery' ) ;
74+ // EdDSA coins (like Solana) need solanaRecoveryOptions for standard recovery
75+ if ( ! params . solanaRecoveryOptions ) {
76+ throw new ValidationError ( 'Solana recovery options are required for EdDSA coin recovery' ) ;
8277 }
8378 return ;
8479 }
8580
86- if ( isEcdsaCoin ( sdkCoin ) ) {
81+ if ( isEcdsaCoin ( sdkCoin ) && isMpcRecovery ) {
8782 if ( isEthLikeCoin ( sdkCoin ) ) {
88- if ( isMpcRecovery ) {
89- if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
90- throw new ValidationError (
91- 'Invalid parameters provided for ETH-like MPC V2 coin recovery' ,
92- ) ;
93- }
83+ if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
84+ throw new ValidationError (
85+ 'ECDSA ETH-like recovery specific parameters are required for MPC recovery' ,
86+ ) ;
9487 }
95- return ;
9688 } else if ( isCosmosLikeCoin ( sdkCoin ) ) {
97- if ( isMpcRecovery ) {
98- if ( ! params . ecdsaCosmosLikeRecoverySpecificParams ) {
99- throw new ValidationError (
100- 'Invalid parameters provided for Cosmos-like MPC V2 coin recovery' ,
101- ) ;
102- }
89+ // ECDSA Cosmos-like MPC recovery needs ecdsaCosmosLikeRecoverySpecificParams
90+ if ( ! params . ecdsaCosmosLikeRecoverySpecificParams ) {
91+ throw new ValidationError (
92+ 'ECDSA Cosmos-like recovery specific parameters are required for MPC recovery' ,
93+ ) ;
10394 }
10495 } else {
10596 throw new NotImplementedError (
10697 `MPC V2 recovery is not supported for coin family: ${ sdkCoin . getFamily ( ) } ` ,
10798 ) ;
10899 }
109- return ;
100+
101+ if ( ! isMpcRecovery && isEthLikeCoin ( sdkCoin ) ) {
102+ // Non-ECDSA ETH-like coins need evmRecoveryOptions for standard recovery
103+ if ( ! params . evmRecoveryOptions ) {
104+ throw new ValidationError ( 'EVM recovery options are required for ETH-like coin recovery' ) ;
105+ }
106+ return ;
107+ }
110108 }
111- throw new ValidationError ( 'Recovery parameters are not valid' ) ;
112109}
113110
114111async function handleEthLikeRecovery (
0 commit comments