@@ -10,6 +10,7 @@ describe('txRequest utils', () => {
1010 baseCoin : { getMPCAlgorithm : ( ) => 'ecdsa' } ,
1111 type : ( ) => 'hot' ,
1212 multisigType : ( ) => 'tss' ,
13+ multisigTypeVersion : ( ) => undefined ,
1314 } as any as IWallet ,
1415 requestedApiVersion : 'lite' ,
1516 expectedApiVersion : '' ,
@@ -20,6 +21,7 @@ describe('txRequest utils', () => {
2021 baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
2122 type : ( ) => 'cold' ,
2223 multisigType : ( ) => 'tss' ,
24+ multisigTypeVersion : ( ) => undefined ,
2325 } as any as IWallet ,
2426 requestedApiVersion : 'lite' ,
2527 expectedApiVersion : '' ,
@@ -30,17 +32,41 @@ describe('txRequest utils', () => {
3032 baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
3133 type : ( ) => 'hot' ,
3234 multisigType : ( ) => 'tss' ,
35+ multisigTypeVersion : ( ) => undefined ,
3336 } as any as IWallet ,
3437 requestedApiVersion : undefined ,
3538 expectedApiVersion : 'lite' ,
3639 expectedErrorMessage : '' ,
3740 } ,
41+ {
42+ wallet : {
43+ baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
44+ type : ( ) => 'hot' ,
45+ multisigType : ( ) => 'tss' ,
46+ multisigTypeVersion : ( ) => 'MPCv2' ,
47+ } as any as IWallet ,
48+ requestedApiVersion : 'lite' as ApiVersion ,
49+ expectedApiVersion : '' ,
50+ expectedErrorMessage : 'For EdDSA MPCv2 tss wallets, parameter `apiVersion` must be `full`.' ,
51+ } ,
52+ {
53+ wallet : {
54+ baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
55+ type : ( ) => 'hot' ,
56+ multisigType : ( ) => 'tss' ,
57+ multisigTypeVersion : ( ) => 'MPCv2' ,
58+ } as any as IWallet ,
59+ requestedApiVersion : undefined ,
60+ expectedApiVersion : 'full' ,
61+ expectedErrorMessage : '' ,
62+ } ,
3863 ...[ 'hot' , 'cold' , 'custodial' , 'backing' ] . map ( ( walletType ) => {
3964 return {
4065 wallet : {
4166 baseCoin : { getMPCAlgorithm : ( ) => 'ecdsa' } ,
4267 type : ( ) => walletType ,
4368 multisigType : ( ) => 'tss' ,
69+ multisigTypeVersion : ( ) => undefined ,
4470 } as any as IWallet ,
4571 requestedApiVersion : 'full' ,
4672 expectedApiVersion : 'full' ,
@@ -54,6 +80,7 @@ describe('txRequest utils', () => {
5480 baseCoin : { getMPCAlgorithm : ( ) => 'ecdsa' } ,
5581 type : ( ) => walletType ,
5682 multisigType : ( ) => 'tss' ,
83+ multisigTypeVersion : ( ) => undefined ,
5784 } as any as IWallet ,
5885 requestedApiVersion : undefined ,
5986 expectedApiVersion : 'full' ,
@@ -67,6 +94,7 @@ describe('txRequest utils', () => {
6794 baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
6895 type : ( ) => walletType ,
6996 multisigType : ( ) => 'tss' ,
97+ multisigTypeVersion : ( ) => undefined ,
7098 } as any as IWallet ,
7199 requestedApiVersion : 'full' ,
72100 expectedApiVersion : 'full' ,
@@ -80,13 +108,59 @@ describe('txRequest utils', () => {
80108 baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
81109 type : ( ) => walletType ,
82110 multisigType : ( ) => 'tss' ,
111+ multisigTypeVersion : ( ) => undefined ,
83112 } as any as IWallet ,
84113 requestedApiVersion : undefined ,
85114 expectedApiVersion : 'full' ,
86115 expectedErrorMessage : '' ,
87116 shouldThrow : false ,
88117 } ;
89118 } ) ,
119+ // EdDSA MPCv2: all wallet types + 'full' explicitly → returns 'full'
120+ ...[ 'hot' , 'cold' , 'custodial' , 'backing' ] . map ( ( walletType ) => {
121+ return {
122+ wallet : {
123+ baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
124+ type : ( ) => walletType ,
125+ multisigType : ( ) => 'tss' ,
126+ multisigTypeVersion : ( ) => 'MPCv2' ,
127+ } as any as IWallet ,
128+ requestedApiVersion : 'full' as ApiVersion ,
129+ expectedApiVersion : 'full' ,
130+ expectedErrorMessage : '' ,
131+ shouldThrow : false ,
132+ } ;
133+ } ) ,
134+ // EdDSA MPCv2: non-hot wallet types + undefined → defaults to 'full'
135+ ...[ 'cold' , 'custodial' , 'backing' ] . map ( ( walletType ) => {
136+ return {
137+ wallet : {
138+ baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
139+ type : ( ) => walletType ,
140+ multisigType : ( ) => 'tss' ,
141+ multisigTypeVersion : ( ) => 'MPCv2' ,
142+ } as any as IWallet ,
143+ requestedApiVersion : undefined ,
144+ expectedApiVersion : 'full' ,
145+ expectedErrorMessage : '' ,
146+ shouldThrow : false ,
147+ } ;
148+ } ) ,
149+ // EdDSA MPCv2: non-hot wallet types + 'lite' → throws EdDSA MPCv2 error
150+ ...[ 'cold' , 'custodial' , 'backing' ] . map ( ( walletType ) => {
151+ return {
152+ wallet : {
153+ baseCoin : { getMPCAlgorithm : ( ) => 'eddsa' } ,
154+ type : ( ) => walletType ,
155+ multisigType : ( ) => 'tss' ,
156+ multisigTypeVersion : ( ) => 'MPCv2' ,
157+ } as any as IWallet ,
158+ requestedApiVersion : 'lite' as ApiVersion ,
159+ expectedApiVersion : '' ,
160+ expectedErrorMessage : 'For EdDSA MPCv2 tss wallets, parameter `apiVersion` must be `full`.' ,
161+ shouldThrow : true ,
162+ } ;
163+ } ) ,
90164 ] ;
91165
92166 testCases . forEach ( ( testCase ) => {
0 commit comments