@@ -1059,9 +1059,57 @@ func (r *rpcServer) ListAssets(ctx context.Context,
10591059 "and include_leased" )
10601060 }
10611061
1062+ constraints := tapfreighter.CommitmentConstraints {
1063+ MinAmt : req .MinAmount ,
1064+ MaxAmt : req .MaxAmount ,
1065+ CoinSelectType : tapsend .DefaultCoinSelectType ,
1066+ }
1067+
1068+ if len (req .GroupKey ) > 0 {
1069+ groupKey , err := btcec .ParsePubKey (req .GroupKey )
1070+ if err != nil {
1071+ return nil , fmt .Errorf ("error parsing group key: %w" ,
1072+ err )
1073+ }
1074+
1075+ constraints .AssetSpecifier = asset .NewSpecifierFromGroupKey (
1076+ * groupKey ,
1077+ )
1078+ }
1079+
1080+ filters := & tapdb.AssetQueryFilters {
1081+ CommitmentConstraints : constraints ,
1082+ }
1083+
1084+ if req .ScriptKey != nil {
1085+ scriptKey , err := taprpc .UnmarshalScriptKey (req .ScriptKey )
1086+ if err != nil {
1087+ return nil , fmt .Errorf ("unable to decode script key: " +
1088+ "%w" , err )
1089+ }
1090+
1091+ filters .ScriptKey = scriptKey
1092+ }
1093+
1094+ if req .AnchorOutpoint != nil {
1095+ txid , err := chainhash .NewHash (req .AnchorOutpoint .Txid )
1096+ if err != nil {
1097+ return nil , fmt .Errorf ("error parsing outpoint: %w" ,
1098+ err )
1099+ }
1100+ outPoint := & wire.OutPoint {
1101+ Hash : * txid ,
1102+ Index : req .AnchorOutpoint .OutputIndex ,
1103+ }
1104+
1105+ filters .AnchorPoint = outPoint
1106+ }
1107+
10621108 rpcAssets , err := r .fetchRpcAssets (
10631109 ctx , req .WithWitness , req .IncludeSpent , req .IncludeLeased ,
1110+ filters ,
10641111 )
1112+
10651113 if err != nil {
10661114 return nil , err
10671115 }
@@ -1114,10 +1162,11 @@ func (r *rpcServer) ListAssets(ctx context.Context,
11141162}
11151163
11161164func (r * rpcServer ) fetchRpcAssets (ctx context.Context , withWitness ,
1117- includeSpent , includeLeased bool ) ([]* taprpc.Asset , error ) {
1165+ includeSpent , includeLeased bool ,
1166+ queryFilters * tapdb.AssetQueryFilters ) ([]* taprpc.Asset , error ) {
11181167
11191168 assets , err := r .cfg .AssetStore .FetchAllAssets (
1120- ctx , includeSpent , includeLeased , nil ,
1169+ ctx , includeSpent , includeLeased , queryFilters ,
11211170 )
11221171 if err != nil {
11231172 return nil , fmt .Errorf ("unable to read chain assets: %w" , err )
@@ -1243,7 +1292,9 @@ func (r *rpcServer) listBalancesByGroupKey(ctx context.Context,
12431292func (r * rpcServer ) ListUtxos (ctx context.Context ,
12441293 req * taprpc.ListUtxosRequest ) (* taprpc.ListUtxosResponse , error ) {
12451294
1246- rpcAssets , err := r .fetchRpcAssets (ctx , false , false , req .IncludeLeased )
1295+ rpcAssets , err := r .fetchRpcAssets (
1296+ ctx , false , false , req .IncludeLeased , nil ,
1297+ )
12471298 if err != nil {
12481299 return nil , err
12491300 }
0 commit comments