Skip to content

Commit 266874f

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

1 file changed

Lines changed: 27 additions & 31 deletions

File tree

src/api/master/handlers/recoveryWallet.ts

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

114110
async function handleEthLikeRecovery(

0 commit comments

Comments
 (0)