operation_types:
  27  "hive::protocol::escrow_transfer_operation"     virtual:false
  28  "hive::protocol::escrow_dispute_operation"      virtual:false
  29  "hive::protocol::escrow_release_operation"      virtual:false
  31  "hive::protocol::escrow_approve_operation"      virtual:false
  89  "hive::protocol::escrow_approved_operation"     virtual:true
  90  "hive::protocol::escrow_rejected_operation"     virtual:true

# Scenario built from your cvk/fnait/kush blocks (corrected)

# (A) escrow_id 90003001 — transfer only (no approvals or releases in given range)
block 90000031  [27] escrow_transfer_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003001
  hbd_amount: 0, hive_amount: 1000, fee: 40
  ratification_deadline: 2025-10-01T12:00:00, escrow_expiration: 2025-10-08T12:00:00

# (B) escrow_id 90003002 — approve → approve → approved (virtual, fee 20) → release 300 to recipient
block 90000032  [27] escrow_transfer_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003002
  hbd_amount: 0, hive_amount: 2000, fee: 20
  ratification_deadline: 2025-10-01T13:00:00, escrow_expiration: 2025-10-08T13:00:00

block 90000033  [31] escrow_approve_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003002
  who: fnait, approve: true

block 90000034  [31] escrow_approve_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003002
  who: kush, approve: true

# virtual approval emitted later as a separate op in your data:
block 90000041  [89] escrow_approved_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003002
  fee: 20

block 90000042  [29] escrow_release_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003002
  who: fnait, receiver: fnait
  hbd_amount: 0, hive_amount: 300

# (C) escrow_id 90003003 — approve → approve → dispute → rejected (virtual)
block 90000035  [27] escrow_transfer_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003003
  hbd_amount: 0, hive_amount: 1500, fee: 10
  ratification_deadline: 2025-10-01T14:00:00, escrow_expiration: 2025-10-08T14:00:00

block 90000036  [31] escrow_approve_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003003
  who: fnait, approve: true

block 90000037  [31] escrow_approve_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003003
  who: kush, approve: true

block 90000038  [28] escrow_dispute_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003003
  who: fnait

block 90000043  [90] escrow_rejected_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003003
  who: kush

# (D) escrow_id 90003004 — transfer → approve → dispute → two releases (100 + 405) to recipient
block 90000039  [27] escrow_transfer_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003004
  hbd_amount: 0, hive_amount: 500, fee: 5
  ratification_deadline: 2025-10-01T15:00:00, escrow_expiration: 2025-10-08T15:00:00

block 90000040  [31] escrow_approve_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003004
  who: fnait, approve: true

block 90000044  [28] escrow_dispute_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003004
  who: fnait

block 90000045  [29] escrow_release_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003004
  who: fnait, receiver: fnait
  hbd_amount: 0, hive_amount: 100

block 90000046  [29] escrow_release_operation
  from: cvk, to: fnait, agent: kush, escrow_id: 90003004
  who: fnait, receiver: fnait
  hbd_amount: 0, hive_amount: 405

# Final result — per process_block_range_escrows logic
# Calculation: (90003001: 1000 + 40) + (90003002: 2000 + 20 - 300 - 20) + (90003003: rejected→0) + (90003004: 500 + 5 - 100 - 405)
#   A(90003001): create 1000 + transfer-fee 40 = 1040
#   B(90003002): create 2000 + transfer-fee 20 − releases(300) − approved-fee(20) = 1700
#   C(90003003): rejected ⇒ 0
#   D(90003004): create 500 + transfer-fee 5 − releases(100+405) = 0
#              = 1040 + 1700 + 0 + 0
#              = 2740
FINAL RESULT: 2740
