@@ -1010,7 +1010,7 @@ func (r *rpcServer) checkBalanceOverflow(ctx context.Context,
10101010 case assetID != nil :
10111011 // Retrieve the current asset balance.
10121012 balances , err := r .cfg .AssetStore .QueryBalancesByAsset (
1013- ctx , assetID , true ,
1013+ ctx , assetID , true , fn . None [asset. ScriptKeyType ](),
10141014 )
10151015 if err != nil {
10161016 return fmt .Errorf ("unable to query asset balance: %w" ,
@@ -1026,7 +1026,7 @@ func (r *rpcServer) checkBalanceOverflow(ctx context.Context,
10261026 case groupPubKey != nil :
10271027 // Retrieve the current balance of the group.
10281028 balances , err := r .cfg .AssetStore .QueryAssetBalancesByGroup (
1029- ctx , groupPubKey , true ,
1029+ ctx , groupPubKey , true , fn . None [asset. ScriptKeyType ](),
10301030 )
10311031 if err != nil {
10321032 return fmt .Errorf ("unable to query group balance: %w" ,
@@ -1059,8 +1059,17 @@ func (r *rpcServer) ListAssets(ctx context.Context,
10591059 "and include_leased" )
10601060 }
10611061
1062+ scriptKeyType , includeSpent , err := taprpc .ParseScriptKeyTypeQuery (
1063+ req .ScriptKeyType ,
1064+ )
1065+ if err != nil {
1066+ return nil , fmt .Errorf ("unable to parse script key type " +
1067+ "query: %w" , err )
1068+ }
1069+
10621070 rpcAssets , err := r .fetchRpcAssets (
1063- ctx , req .WithWitness , req .IncludeSpent , req .IncludeLeased ,
1071+ ctx , req .WithWitness , req .IncludeSpent || includeSpent ,
1072+ req .IncludeLeased , scriptKeyType ,
10641073 )
10651074 if err != nil {
10661075 return nil , err
@@ -1114,10 +1123,16 @@ func (r *rpcServer) ListAssets(ctx context.Context,
11141123}
11151124
11161125func (r * rpcServer ) fetchRpcAssets (ctx context.Context , withWitness ,
1117- includeSpent , includeLeased bool ) ([]* taprpc.Asset , error ) {
1126+ includeSpent , includeLeased bool ,
1127+ scriptKeyType fn.Option [asset.ScriptKeyType ]) ([]* taprpc.Asset , error ) {
11181128
1129+ filter := & tapdb.AssetQueryFilters {
1130+ CommitmentConstraints : tapfreighter.CommitmentConstraints {
1131+ ScriptKeyType : scriptKeyType ,
1132+ },
1133+ }
11191134 assets , err := r .cfg .AssetStore .FetchAllAssets (
1120- ctx , includeSpent , includeLeased , nil ,
1135+ ctx , includeSpent , includeLeased , filter ,
11211136 )
11221137 if err != nil {
11231138 return nil , fmt .Errorf ("unable to read chain assets: %w" , err )
@@ -1169,11 +1184,12 @@ func (r *rpcServer) MarshalChainAsset(ctx context.Context, a asset.ChainAsset,
11691184}
11701185
11711186func (r * rpcServer ) listBalancesByAsset (ctx context.Context ,
1172- assetID * asset.ID , includeLeased bool ) (* taprpc.ListBalancesResponse ,
1187+ assetID * asset.ID , includeLeased bool ,
1188+ skt fn.Option [asset.ScriptKeyType ]) (* taprpc.ListBalancesResponse ,
11731189 error ) {
11741190
11751191 balances , err := r .cfg .AssetStore .QueryBalancesByAsset (
1176- ctx , assetID , includeLeased ,
1192+ ctx , assetID , includeLeased , skt ,
11771193 )
11781194 if err != nil {
11791195 return nil , fmt .Errorf ("unable to list balances: %w" , err )
@@ -1204,11 +1220,12 @@ func (r *rpcServer) listBalancesByAsset(ctx context.Context,
12041220}
12051221
12061222func (r * rpcServer ) listBalancesByGroupKey (ctx context.Context ,
1207- groupKey * btcec.PublicKey ,
1208- includeLeased bool ) (* taprpc.ListBalancesResponse , error ) {
1223+ groupKey * btcec.PublicKey , includeLeased bool ,
1224+ skt fn.Option [asset.ScriptKeyType ]) (* taprpc.ListBalancesResponse ,
1225+ error ) {
12091226
12101227 balances , err := r .cfg .AssetStore .QueryAssetBalancesByGroup (
1211- ctx , groupKey , includeLeased ,
1228+ ctx , groupKey , includeLeased , skt ,
12121229 )
12131230 if err != nil {
12141231 return nil , fmt .Errorf ("unable to list balances: %w" , err )
@@ -1243,7 +1260,17 @@ func (r *rpcServer) listBalancesByGroupKey(ctx context.Context,
12431260func (r * rpcServer ) ListUtxos (ctx context.Context ,
12441261 req * taprpc.ListUtxosRequest ) (* taprpc.ListUtxosResponse , error ) {
12451262
1246- rpcAssets , err := r .fetchRpcAssets (ctx , false , false , req .IncludeLeased )
1263+ scriptKeyType , includeSpent , err := taprpc .ParseScriptKeyTypeQuery (
1264+ req .ScriptKeyType ,
1265+ )
1266+ if err != nil {
1267+ return nil , fmt .Errorf ("unable to parse script key type " +
1268+ "query: %w" , err )
1269+ }
1270+
1271+ rpcAssets , err := r .fetchRpcAssets (
1272+ ctx , false , includeSpent , req .IncludeLeased , scriptKeyType ,
1273+ )
12471274 if err != nil {
12481275 return nil , err
12491276 }
@@ -1344,6 +1371,14 @@ func (r *rpcServer) ListGroups(ctx context.Context,
13441371func (r * rpcServer ) ListBalances (ctx context.Context ,
13451372 req * taprpc.ListBalancesRequest ) (* taprpc.ListBalancesResponse , error ) {
13461373
1374+ scriptKeyType , _ , err := taprpc .ParseScriptKeyTypeQuery (
1375+ req .ScriptKeyType ,
1376+ )
1377+ if err != nil {
1378+ return nil , fmt .Errorf ("unable to parse script key type " +
1379+ "query: %w" , err )
1380+ }
1381+
13471382 switch groupBy := req .GroupBy .(type ) {
13481383 case * taprpc.ListBalancesRequest_AssetId :
13491384 if ! groupBy .AssetId {
@@ -1360,7 +1395,9 @@ func (r *rpcServer) ListBalances(ctx context.Context,
13601395 copy (assetID [:], req .AssetFilter )
13611396 }
13621397
1363- return r .listBalancesByAsset (ctx , assetID , req .IncludeLeased )
1398+ return r .listBalancesByAsset (
1399+ ctx , assetID , req .IncludeLeased , scriptKeyType ,
1400+ )
13641401
13651402 case * taprpc.ListBalancesRequest_GroupKey :
13661403 if ! groupBy .GroupKey {
@@ -1378,7 +1415,7 @@ func (r *rpcServer) ListBalances(ctx context.Context,
13781415 }
13791416
13801417 return r .listBalancesByGroupKey (
1381- ctx , groupKey , req .IncludeLeased ,
1418+ ctx , groupKey , req .IncludeLeased , scriptKeyType ,
13821419 )
13831420
13841421 default :
0 commit comments