@@ -53,41 +53,61 @@ 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 ( isUtxoCoin ( sdkCoin ) ) {
66+ if ( params . solanaRecoveryOptions || params . evmRecoveryOptions ) {
67+ throw new ValidationError ( 'Invalid parameters provided for UTXO coin recovery' ) ;
68+ }
69+ return ;
70+ }
71+
6172 if ( isEddsaCoin ( sdkCoin ) ) {
6273 if ( params . evmRecoveryOptions || params . utxoRecoveryOptions ) {
6374 throw new ValidationError ( 'Invalid parameters provided for Solana coin recovery' ) ;
6475 }
65- } else if ( isEcdsaCoin ( sdkCoin ) ) {
76+ return ;
77+ }
78+
79+ if ( isEcdsaCoin ( sdkCoin ) ) {
6680 if ( isEthLikeCoin ( sdkCoin ) ) {
67- if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
68- throw new ValidationError ( 'Invalid parameters provided for ETH-like MPC V2 coin recovery' ) ;
81+ if ( isMpcRecovery ) {
82+ if ( ! params . ecdsaEthLikeRecoverySpecificParams ) {
83+ throw new ValidationError (
84+ 'Invalid parameters provided for ETH-like MPC V2 coin recovery' ,
85+ ) ;
86+ }
87+ } else {
88+ if ( params . solanaRecoveryOptions || params . utxoRecoveryOptions ) {
89+ throw new ValidationError ( 'Invalid parameters provided for ETH-like coin recovery' ) ;
90+ }
6991 }
92+ return ;
7093 } else if ( isCosmosLikeCoin ( sdkCoin ) ) {
71- if ( ! params . ecdsaCosmosLikeRecoverySpecificParams ) {
72- throw new ValidationError (
73- 'Invalid parameters provided for Cosmos-like MPC V2 coin recovery' ,
74- ) ;
94+ if ( isMpcRecovery ) {
95+ if ( ! params . ecdsaCosmosLikeRecoverySpecificParams ) {
96+ throw new ValidationError (
97+ 'Invalid parameters provided for Cosmos-like MPC V2 coin recovery' ,
98+ ) ;
99+ }
100+ } else {
101+ if ( params . solanaRecoveryOptions || params . utxoRecoveryOptions ) {
102+ throw new ValidationError ( 'Invalid parameters provided for Cosmos-like coin recovery' ) ;
103+ }
75104 }
76105 } else {
77106 throw new NotImplementedError (
78107 `MPC V2 recovery is not supported for coin family: ${ sdkCoin . getFamily ( ) } ` ,
79108 ) ;
80109 }
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- }
110+ return ;
91111 }
92112}
93113
@@ -216,7 +236,7 @@ export async function handleRecoveryWalletOnPrem(
216236
217237 const sdkCoin = await coinFactory . getCoin ( coin , bitgo ) ;
218238 // Validate that we have correct parameters for recovery
219- validateRecoveryParams ( sdkCoin , coinSpecificParams ) ;
239+ validateRecoveryParams ( sdkCoin , coinSpecificParams , req . decoded . isTssRecovery ) ;
220240
221241 // Handle TSS recovery
222242 if ( req . decoded . isTssRecovery ) {
0 commit comments