Skip to content

Commit 2cb0934

Browse files
committed
chore(mbe): check for required params instead of other coin params
Ticket: WP-5454
1 parent a98af04 commit 2cb0934

File tree

1 file changed

+24
-27
lines changed

1 file changed

+24
-27
lines changed

src/api/master/handlers/recoveryWallet.ts

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

114111
async function handleEthLikeRecovery(

0 commit comments

Comments
 (0)