@@ -2,10 +2,15 @@ import { Inject } from '@nestjs/common';
2
2
import { DataSource , NetworkType } from 'rgbpp/btc' ;
3
3
import { BtcAssetsApi , RgbppApiTransactionState } from 'rgbpp/service' ;
4
4
import { BTCTestnetType , Collector , Hex , append0x } from 'rgbpp/ckb' ;
5
- import { buildRgbppTransferTx , buildRgbppTransferAllTxs } from 'rgbpp' ;
5
+ import {
6
+ buildRgbppTransferTx ,
7
+ buildRgbppTransferAllTxs ,
8
+ sendRgbppTxGroups ,
9
+ RgbppTxGroup ,
10
+ SentRgbppTxGroup ,
11
+ } from 'rgbpp' ;
6
12
import { RpcHandler , RpcMethodHandler } from '../json-rpc/json-rpc.decorators.js' ;
7
13
import { toSnakeCase , toCamelCase , SnakeCased } from '../utils/case.js' ;
8
- import { ensureSafeJson } from '../utils/json.js' ;
9
14
import {
10
15
RgbppTransferReq ,
11
16
RgbppCkbBtcTransaction ,
@@ -14,7 +19,7 @@ import {
14
19
RgbppCkbTxHashReq ,
15
20
BtcTxSendReq ,
16
21
RgbppTransferAllReq ,
17
- RgbppTransferAllRes ,
22
+ RgbppTransferAllResp ,
18
23
} from './types.js' ;
19
24
20
25
@RpcHandler ( )
@@ -57,9 +62,11 @@ export class RgbppService {
57
62
}
58
63
59
64
@RpcMethodHandler ( { name : 'generate_rgbpp_transfer_all_txs' } )
60
- public async generateRgbppTransferAllTxs ( request : [ RgbppTransferAllReq ] ) : Promise < SnakeCased < RgbppTransferAllRes > > {
65
+ public async generateRgbppTransferAllTxs (
66
+ request : [ RgbppTransferAllReq ] ,
67
+ ) : Promise < SnakeCased < RgbppTransferAllResp > [ ] > {
61
68
const params = toCamelCase ( request [ 0 ] ) ;
62
- const result = await buildRgbppTransferAllTxs ( {
69
+ const { transactions } = await buildRgbppTransferAllTxs ( {
63
70
ckb : {
64
71
collector : this . ckbCollector ,
65
72
xudtTypeArgs : params . ckb . xudtTypeArgs ,
@@ -78,18 +85,12 @@ export class RgbppService {
78
85
isMainnet : this . isMainnet ,
79
86
} ) ;
80
87
81
- return ensureSafeJson < SnakeCased < RgbppTransferAllRes > > (
82
- toSnakeCase < RgbppTransferAllRes > ( {
83
- ...result ,
84
- transactions : result . transactions . map ( ( group ) => {
85
- return {
86
- ...group ,
87
- ckb : {
88
- ...group . ckb ,
89
- virtualTxResult : JSON . stringify ( group . ckb . virtualTxResult ) ,
90
- } ,
91
- } ;
92
- } ) ,
88
+ return transactions . map ( ( { ckb, btc } ) =>
89
+ toSnakeCase < RgbppTransferAllResp > ( {
90
+ ckbVirtualTxResult : JSON . stringify ( ckb . virtualTxResult ) ,
91
+ btcPsbtHex : btc . psbtHex ,
92
+ btcFeeRate : btc . feeRate ,
93
+ btcFee : btc . fee ,
93
94
} ) ,
94
95
) ;
95
96
}
@@ -127,4 +128,12 @@ export class RgbppService {
127
128
const { txid } = await this . btcAssetsApi . sendBtcTransaction ( txHex ) ;
128
129
return txid ;
129
130
}
131
+
132
+ @RpcMethodHandler ( { name : 'send_rgbpp_group_txs' } )
133
+ public async sendRgbppGroupTxs ( request : [ RgbppTxGroup [ ] ] ) : Promise < SnakeCased < SentRgbppTxGroup > [ ] > {
134
+ const txGroups = toCamelCase ( request [ 0 ] ) ;
135
+ const sentGroups = await sendRgbppTxGroups ( { txGroups, btcService : this . btcAssetsApi } ) ;
136
+ const result = sentGroups . map ( ( group ) => toSnakeCase < SentRgbppTxGroup > ( group ) ) ;
137
+ return result ;
138
+ }
130
139
}
0 commit comments