@@ -63,52 +63,48 @@ 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- }
94- }
95- return ;
96- } 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- }
83+ if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
84+ throw new ValidationError (
85+ 'ECDSA ETH-like recovery specific parameters are required for MPC recovery' ,
86+ ) ;
10387 }
104- } else {
105- throw new NotImplementedError (
106- `MPC V2 recovery is not supported for coin family: ${ sdkCoin . getFamily ( ) } ` ,
88+ } else if ( isCosmosLikeCoin ( sdkCoin ) ) {
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' ,
10793 ) ;
10894 }
95+ } else {
96+ throw new NotImplementedError (
97+ `MPC V2 recovery is not supported for coin family: ${ sdkCoin . getFamily ( ) } ` ,
98+ ) ;
99+ }
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+ }
109106 return ;
110107 }
111- throw new ValidationError ( 'Recovery parameters are not valid' ) ;
112108}
113109
114110async function handleEthLikeRecovery (
0 commit comments