@@ -13,6 +13,7 @@ import { MasterApiSpecRouteRequest } from '../routers/masterApiSpec';
1313import { createEcdsaMPCv2CustomSigners } from './ecdsaMPCv2' ;
1414import { EnclavedExpressClient } from '../clients/enclavedExpressClient' ;
1515import { createEddsaCustomSigningFunctions } from './eddsa' ;
16+ import { BadRequestError , NotFoundError } from '../../../shared/errors' ;
1617
1718/**
1819 * Defines the structure for a single recipient in a send-many transaction.
@@ -41,7 +42,7 @@ function createMPCSendParamsWithCustomSigningFns(
4142 const mpcAlgorithm = coin . getMPCAlgorithm ( ) ;
4243
4344 if ( ! commonKeychain ) {
44- throw new Error ( 'Common keychain is required for MPC signing' ) ;
45+ throw new BadRequestError ( 'Common keychain is required for MPC signing' ) ;
4546 }
4647
4748 if ( mpcAlgorithm === 'ecdsa' ) {
@@ -66,7 +67,7 @@ function createMPCSendParamsWithCustomSigningFns(
6667 } ;
6768 }
6869
69- throw new Error ( `Unsupported MPC algorithm: ${ mpcAlgorithm } ` ) ;
70+ throw new BadRequestError ( `Unsupported MPC algorithm: ${ mpcAlgorithm } ` ) ;
7071}
7172
7273export async function handleSendMany ( req : MasterApiSpecRouteRequest < 'v1.wallet.sendMany' , 'post' > ) {
@@ -81,11 +82,11 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s
8182 const walletId = req . params . walletId ;
8283 const wallet = await baseCoin . wallets ( ) . get ( { id : walletId , reqId } ) ;
8384 if ( ! wallet ) {
84- throw new Error ( `Wallet ${ walletId } not found` ) ;
85+ throw new NotFoundError ( `Wallet ${ walletId } not found` ) ;
8586 }
8687
8788 if ( wallet . type ( ) !== 'cold' || wallet . subType ( ) !== 'onPrem' ) {
88- throw new Error ( 'Wallet is not an on-prem wallet' ) ;
89+ throw new NotFoundError ( 'Wallet is not an on-prem wallet' ) ;
8990 }
9091
9192 const keyIdIndex = params . source === 'user' ? KeyIndices . USER : KeyIndices . BACKUP ;
@@ -98,13 +99,15 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s
9899 } ) ;
99100
100101 if ( ! signingKeychain ) {
101- throw new Error ( `Signing keychain for ${ params . source } not found` ) ;
102+ throw new NotFoundError ( `Signing keychain for ${ params . source } not found` ) ;
102103 }
103104 if ( params . pubkey && signingKeychain . pub !== params . pubkey ) {
104- throw new Error ( `Pub provided does not match the keychain on wallet for ${ params . source } ` ) ;
105+ throw new BadRequestError (
106+ `Pub provided does not match the keychain on wallet for ${ params . source } ` ,
107+ ) ;
105108 }
106109 if ( params . commonKeychain && signingKeychain . commonKeychain !== params . commonKeychain ) {
107- throw new Error (
110+ throw new BadRequestError (
108111 `Common keychain provided does not match the keychain on wallet for ${ params . source } ` ,
109112 ) ;
110113 }
@@ -113,7 +116,7 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s
113116 // Create MPC send parameters with custom signing functions
114117 if ( wallet . multisigType ( ) === 'tss' ) {
115118 if ( signingKeychain . source === 'backup' ) {
116- throw new Error ( 'Backup MPC signing not supported for sendMany' ) ;
119+ throw new BadRequestError ( 'Backup MPC signing not supported for sendMany' ) ;
117120 }
118121 const mpcSendParams = createMPCSendParamsWithCustomSigningFns (
119122 req ,
@@ -150,14 +153,14 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s
150153 walletType : wallet . multisigType ( ) ,
151154 } ) ;
152155 if ( ! verified ) {
153- throw new Error ( 'Transaction prebuild failed local validation' ) ;
156+ throw new BadRequestError ( 'Transaction prebuild failed local validation' ) ;
154157 }
155158 logger . debug ( 'Transaction prebuild verified' ) ;
156159 } catch ( e ) {
157160 const err = e as Error ;
158161 logger . error ( 'transaction prebuild failed local validation:' , err . message ) ;
159162 logger . error ( 'transaction prebuild:' , JSON . stringify ( txPrebuilt , null , 2 ) ) ;
160- throw new Error ( `Transaction prebuild failed local validation: ${ err . message } ` ) ;
163+ throw new BadRequestError ( `Transaction prebuild failed local validation: ${ err . message } ` ) ;
161164 }
162165
163166 logger . debug ( 'Tx prebuild: %s' , JSON . stringify ( txPrebuilt , null , 2 ) ) ;
@@ -188,7 +191,7 @@ export async function signAndSendMultisig(
188191 reqId : RequestTracer ,
189192) {
190193 if ( ! signingKeychain . pub ) {
191- throw new Error ( `Signing keychain pub not found for ${ source } ` ) ;
194+ throw new BadRequestError ( `Signing keychain pub not found for ${ source } ` ) ;
192195 }
193196 logger . info ( `Signing with ${ source } keychain, pub: ${ signingKeychain . pub } ` ) ;
194197 logger . debug ( `Signing keychain: ${ JSON . stringify ( signingKeychain , null , 2 ) } ` ) ;
0 commit comments