Skip to content

Commit 03b7fa9

Browse files
author
Gabriel Comte
committed
Use Amounts, fix absent values
1 parent 0af0841 commit 03b7fa9

File tree

1 file changed

+157
-51
lines changed

1 file changed

+157
-51
lines changed

json/src/lib.rs

Lines changed: 157 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,10 @@ pub struct GetBlockHeaderResult {
221221

222222
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
223223
pub struct GetBlockStatsResult {
224-
#[serde(rename = "avgfee")]
225-
pub avg_fee: u32,
226-
#[serde(rename = "avgfeerate")]
227-
pub avg_fee_rate: u32,
224+
#[serde(rename = "avgfee", with = "bitcoin::util::amount::serde::as_sat")]
225+
pub avg_fee: Amount,
226+
#[serde(rename = "avgfeerate", with = "bitcoin::util::amount::serde::as_sat")]
227+
pub avg_fee_rate: Amount,
228228
#[serde(rename = "avgtxsize")]
229229
pub avg_tx_size: u32,
230230
#[serde(rename = "blockhash")]
@@ -233,101 +233,207 @@ pub struct GetBlockStatsResult {
233233
pub fee_rate_percentiles: FeeRatePercentiles,
234234
pub height: u64,
235235
pub ins: usize,
236-
#[serde(rename = "maxfee")]
237-
pub max_fee: u64,
238-
#[serde(rename = "maxfeerate")]
239-
pub max_fee_rate: u32,
236+
#[serde(rename = "maxfee", with = "bitcoin::util::amount::serde::as_sat")]
237+
pub max_fee: Amount,
238+
#[serde(rename = "maxfeerate", with = "bitcoin::util::amount::serde::as_sat")]
239+
pub max_fee_rate: Amount,
240240
#[serde(rename = "maxtxsize")]
241241
pub max_tx_size: u32,
242-
#[serde(rename = "medianfee")]
243-
pub median_fee: u32,
242+
#[serde(rename = "medianfee", with = "bitcoin::util::amount::serde::as_sat")]
243+
pub median_fee: Amount,
244244
#[serde(rename = "mediantime")]
245245
pub median_time: u32,
246246
#[serde(rename = "mediantxsize")]
247247
pub median_tx_size: u32,
248-
#[serde(rename = "minfee")]
249-
pub min_fee: u32,
250-
#[serde(rename = "minfeerate")]
251-
pub min_fee_rate: u32,
248+
#[serde(rename = "minfee", with = "bitcoin::util::amount::serde::as_sat")]
249+
pub min_fee: Amount,
250+
#[serde(rename = "minfeerate", with = "bitcoin::util::amount::serde::as_sat")]
251+
pub min_fee_rate: Amount,
252252
#[serde(rename = "mintxsize")]
253253
pub min_tx_size: u32,
254254
pub outs: usize,
255-
pub subsidy: u32,
255+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
256+
pub subsidy: Amount,
256257
#[serde(rename = "swtotal_size")]
257258
pub sw_total_size: usize,
258259
#[serde(rename = "swtotal_weight")]
259260
pub sw_total_weight: usize,
260261
#[serde(rename = "swtxs")]
261262
pub sw_txs: usize,
262263
pub time: u32,
263-
pub total_out: usize,
264+
#[serde (with = "bitcoin::util::amount::serde::as_sat")]
265+
pub total_out: Amount,
264266
pub total_size: usize,
265267
pub total_weight: usize,
266-
#[serde(rename = "totalfee")]
267-
pub total_fee: u64,
268+
#[serde(rename = "totalfee", with = "bitcoin::util::amount::serde::as_sat")]
269+
pub total_fee: Amount,
268270
pub txs: usize,
269271
pub utxo_increase: i32,
270272
pub utxo_size_inc: i32,
271273
}
272274

273275
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
274276
pub struct GetBlockStatsResultPartial {
275-
#[serde(rename = "avgfee")]
276-
pub avg_fee: Option<u32>,
277-
#[serde(rename = "avgfeerate")]
278-
pub avg_fee_rate: Option<u32>,
279-
#[serde(rename = "avgtxsize")]
277+
#[serde(
278+
default,
279+
rename = "avgfee",
280+
with = "bitcoin::util::amount::serde::as_sat::opt",
281+
skip_serializing_if = "Option::is_none"
282+
)]
283+
pub avg_fee: Option<Amount>,
284+
#[serde(
285+
default,
286+
rename = "avgfeerate",
287+
with = "bitcoin::util::amount::serde::as_sat::opt",
288+
skip_serializing_if = "Option::is_none"
289+
)]
290+
pub avg_fee_rate: Option<Amount>,
291+
#[serde(
292+
default,
293+
rename = "avgtxsize",
294+
skip_serializing_if = "Option::is_none"
295+
)]
280296
pub avg_tx_size: Option<u32>,
281-
#[serde(rename = "blockhash")]
297+
#[serde(
298+
default,
299+
rename = "blockhash",
300+
skip_serializing_if = "Option::is_none"
301+
)]
282302
pub block_hash: Option<bitcoin::BlockHash>,
283-
#[serde(rename = "feerate_percentiles")]
303+
#[serde(
304+
default,
305+
rename = "feerate_percentiles",
306+
skip_serializing_if = "Option::is_none"
307+
)]
284308
pub fee_rate_percentiles: Option<FeeRatePercentiles>,
309+
#[serde(default, skip_serializing_if = "Option::is_none")]
285310
pub height: Option<u64>,
311+
#[serde(default, skip_serializing_if = "Option::is_none")]
286312
pub ins: Option<usize>,
287-
#[serde(rename = "maxfee")]
288-
pub max_fee: Option<u64>,
289-
#[serde(rename = "maxfeerate")]
290-
pub max_fee_rate: Option<u32>,
291-
#[serde(rename = "maxtxsize")]
313+
#[serde(
314+
default,
315+
rename = "maxfee",
316+
with = "bitcoin::util::amount::serde::as_sat::opt",
317+
skip_serializing_if = "Option::is_none"
318+
)]
319+
pub max_fee: Option<Amount>,
320+
#[serde(
321+
default,
322+
rename = "maxfeerate",
323+
with = "bitcoin::util::amount::serde::as_sat::opt",
324+
skip_serializing_if = "Option::is_none"
325+
)]
326+
pub max_fee_rate: Option<Amount>,
327+
#[serde(
328+
default,
329+
rename = "maxtxsize",
330+
skip_serializing_if = "Option::is_none"
331+
)]
292332
pub max_tx_size: Option<u32>,
293-
#[serde(rename = "medianfee")]
294-
pub median_fee: Option<u32>,
295-
#[serde(rename = "mediantime")]
333+
#[serde(
334+
default,
335+
rename = "medianfee",
336+
with = "bitcoin::util::amount::serde::as_sat::opt",
337+
skip_serializing_if = "Option::is_none"
338+
)]
339+
pub median_fee: Option<Amount>,
340+
#[serde(
341+
default,
342+
rename = "mediantime",
343+
skip_serializing_if = "Option::is_none"
344+
)]
296345
pub median_time: Option<u32>,
297-
#[serde(rename = "mediantxsize")]
346+
#[serde(
347+
default,
348+
rename = "mediantxsize",
349+
skip_serializing_if = "Option::is_none"
350+
)]
298351
pub median_tx_size: Option<u32>,
299-
#[serde(rename = "minfee")]
300-
pub min_fee: Option<u32>,
301-
#[serde(rename = "minfeerate")]
302-
pub min_fee_rate: Option<u32>,
303-
#[serde(rename = "mintxsize")]
352+
#[serde(
353+
default,
354+
rename = "minfee",
355+
with = "bitcoin::util::amount::serde::as_sat::opt",
356+
skip_serializing_if = "Option::is_none"
357+
)]
358+
pub min_fee: Option<Amount>,
359+
#[serde(
360+
default,
361+
rename = "minfeerate",
362+
with = "bitcoin::util::amount::serde::as_sat::opt",
363+
skip_serializing_if = "Option::is_none"
364+
)]
365+
pub min_fee_rate: Option<Amount>,
366+
#[serde(
367+
default,
368+
rename = "mintxsize",
369+
skip_serializing_if = "Option::is_none"
370+
)]
304371
pub min_tx_size: Option<u32>,
372+
#[serde(default, skip_serializing_if = "Option::is_none")]
305373
pub outs: Option<usize>,
306-
pub subsidy: Option<u32>,
307-
#[serde(rename = "swtotal_size")]
374+
#[serde(
375+
default,
376+
with = "bitcoin::util::amount::serde::as_sat::opt",
377+
skip_serializing_if = "Option::is_none"
378+
)]
379+
pub subsidy: Option<Amount>,
380+
#[serde(
381+
default,
382+
rename = "swtotal_size",
383+
skip_serializing_if = "Option::is_none"
384+
)]
308385
pub sw_total_size: Option<usize>,
309-
#[serde(rename = "swtotal_weight")]
386+
#[serde(
387+
default,
388+
rename = "swtotal_weight",
389+
skip_serializing_if = "Option::is_none"
390+
)]
310391
pub sw_total_weight: Option<usize>,
311-
#[serde(rename = "swtxs")]
392+
#[serde(
393+
default,
394+
rename = "swtxs",
395+
skip_serializing_if = "Option::is_none"
396+
)]
312397
pub sw_txs: Option<usize>,
398+
#[serde(default, skip_serializing_if = "Option::is_none")]
313399
pub time: Option<u32>,
314-
pub total_out: Option<usize>,
400+
#[serde(
401+
default,
402+
with = "bitcoin::util::amount::serde::as_sat::opt",
403+
skip_serializing_if = "Option::is_none"
404+
)]
405+
pub total_out: Option<Amount>,
406+
#[serde(default, skip_serializing_if = "Option::is_none")]
315407
pub total_size: Option<usize>,
408+
#[serde(default, skip_serializing_if = "Option::is_none")]
316409
pub total_weight: Option<usize>,
317-
#[serde(rename = "totalfee")]
318-
pub total_fee: Option<u64>,
410+
#[serde(
411+
default,
412+
rename = "totalfee",
413+
with = "bitcoin::util::amount::serde::as_sat::opt",
414+
skip_serializing_if = "Option::is_none"
415+
)]
416+
pub total_fee: Option<Amount>,
417+
#[serde(default, skip_serializing_if = "Option::is_none")]
319418
pub txs: Option<usize>,
419+
#[serde(default, skip_serializing_if = "Option::is_none")]
320420
pub utxo_increase: Option<i32>,
421+
#[serde(default, skip_serializing_if = "Option::is_none")]
321422
pub utxo_size_inc: Option<i32>,
322423
}
323424

324425
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
325426
pub struct FeeRatePercentiles {
326-
pub fr_10th: u32,
327-
pub fr_25th: u32,
328-
pub fr_50th: u32,
329-
pub fr_75th: u32,
330-
pub fr_90th: u32,
427+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
428+
pub fr_10th: Amount,
429+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
430+
pub fr_25th: Amount,
431+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
432+
pub fr_50th: Amount,
433+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
434+
pub fr_75th: Amount,
435+
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
436+
pub fr_90th: Amount,
331437
}
332438

333439
pub enum BlockStatsFields {

0 commit comments

Comments
 (0)