@xyo-network/xl1-protocol-sdk 1.14.4 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/neutral/block/hydrate/allHashesPresent.d.ts +4 -0
  2. package/dist/neutral/block/hydrate/allHashesPresent.d.ts.map +1 -0
  3. package/dist/neutral/block/hydrate/blockPayloadsFromHydratedBlock.d.ts +4 -0
  4. package/dist/neutral/block/hydrate/blockPayloadsFromHydratedBlock.d.ts.map +1 -0
  5. package/dist/neutral/block/hydrate/flattenHydratedBlock.d.ts +4 -0
  6. package/dist/neutral/block/hydrate/flattenHydratedBlock.d.ts.map +1 -0
  7. package/dist/neutral/block/hydrate/flattenHydratedBlocks.d.ts +4 -0
  8. package/dist/neutral/block/hydrate/flattenHydratedBlocks.d.ts.map +1 -0
  9. package/dist/neutral/block/hydrate/hydrateBlock.d.ts +5 -0
  10. package/dist/neutral/block/hydrate/hydrateBlock.d.ts.map +1 -0
  11. package/dist/neutral/block/hydrate/index.d.ts +8 -0
  12. package/dist/neutral/block/hydrate/index.d.ts.map +1 -0
  13. package/dist/neutral/block/hydrate/transactionsFromHydratedBlock.d.ts +4 -0
  14. package/dist/neutral/block/hydrate/transactionsFromHydratedBlock.d.ts.map +1 -0
  15. package/dist/neutral/block/hydrate/tryHydrateBlock.d.ts +5 -0
  16. package/dist/neutral/block/hydrate/tryHydrateBlock.d.ts.map +1 -0
  17. package/dist/neutral/block/index.d.ts +1 -1
  18. package/dist/neutral/block/index.d.ts.map +1 -1
  19. package/dist/neutral/block/primitives/balances/balancesStepSummaryFromRange.d.ts +6 -0
  20. package/dist/neutral/block/primitives/balances/balancesStepSummaryFromRange.d.ts.map +1 -0
  21. package/dist/neutral/block/primitives/balances/balancesSummary.d.ts +4 -0
  22. package/dist/neutral/block/primitives/balances/balancesSummary.d.ts.map +1 -0
  23. package/dist/neutral/block/primitives/balances/index.d.ts +3 -0
  24. package/dist/neutral/block/primitives/balances/index.d.ts.map +1 -0
  25. package/dist/neutral/block/primitives/blockFromBlockNumber.d.ts +5 -0
  26. package/dist/neutral/block/primitives/blockFromBlockNumber.d.ts.map +1 -0
  27. package/dist/neutral/block/primitives/hashFromBlockNumber.d.ts.map +1 -1
  28. package/dist/neutral/block/primitives/index.d.ts +4 -3
  29. package/dist/neutral/block/primitives/index.d.ts.map +1 -1
  30. package/dist/neutral/block/primitives/model.d.ts +5 -2
  31. package/dist/neutral/block/primitives/model.d.ts.map +1 -1
  32. package/dist/neutral/block/primitives/{payloads.d.ts → payloads/BalancesStepSummary.d.ts} +5 -16
  33. package/dist/neutral/block/primitives/payloads/BalancesStepSummary.d.ts.map +1 -0
  34. package/dist/neutral/block/primitives/payloads/ChainWindow.d.ts +6 -0
  35. package/dist/neutral/block/primitives/payloads/ChainWindow.d.ts.map +1 -0
  36. package/dist/neutral/block/primitives/payloads/StepSummary.d.ts +11 -0
  37. package/dist/neutral/block/primitives/payloads/StepSummary.d.ts.map +1 -0
  38. package/dist/neutral/block/primitives/payloads/TransfersSummary.d.ts +21 -0
  39. package/dist/neutral/block/primitives/payloads/TransfersSummary.d.ts.map +1 -0
  40. package/dist/neutral/block/primitives/payloads/index.d.ts +5 -0
  41. package/dist/neutral/block/primitives/payloads/index.d.ts.map +1 -0
  42. package/dist/neutral/block/primitives/transfers/index.d.ts +3 -0
  43. package/dist/neutral/block/primitives/transfers/index.d.ts.map +1 -0
  44. package/dist/neutral/block/primitives/transfers/transfersStepSummaryFromRange.d.ts +6 -0
  45. package/dist/neutral/block/primitives/transfers/transfersStepSummaryFromRange.d.ts.map +1 -0
  46. package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts +4 -0
  47. package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts.map +1 -0
  48. package/dist/neutral/config/Config.d.ts +10 -0
  49. package/dist/neutral/config/Config.d.ts.map +1 -1
  50. package/dist/neutral/config/Producer.d.ts +10 -0
  51. package/dist/neutral/config/Producer.d.ts.map +1 -1
  52. package/dist/neutral/index.d.ts +2 -0
  53. package/dist/neutral/index.d.ts.map +1 -1
  54. package/dist/neutral/index.mjs +509 -88
  55. package/dist/neutral/index.mjs.map +1 -1
  56. package/dist/neutral/payload/index.d.ts +1 -0
  57. package/dist/neutral/payload/index.d.ts.map +1 -1
  58. package/dist/neutral/payload/netTransfersForPayloads.d.ts +4 -0
  59. package/dist/neutral/payload/netTransfersForPayloads.d.ts.map +1 -0
  60. package/dist/neutral/steps/index.d.ts +2 -0
  61. package/dist/neutral/steps/index.d.ts.map +1 -0
  62. package/dist/neutral/steps/primitives/addressStakeWeight.d.ts +4 -0
  63. package/dist/neutral/steps/primitives/addressStakeWeight.d.ts.map +1 -0
  64. package/dist/neutral/steps/primitives/claimedRewards.d.ts +3 -0
  65. package/dist/neutral/steps/primitives/claimedRewards.d.ts.map +1 -0
  66. package/dist/neutral/steps/primitives/index.d.ts +17 -0
  67. package/dist/neutral/steps/primitives/index.d.ts.map +1 -0
  68. package/dist/neutral/steps/primitives/networkStakeStepAddressReward.d.ts +4 -0
  69. package/dist/neutral/steps/primitives/networkStakeStepAddressReward.d.ts.map +1 -0
  70. package/dist/neutral/steps/primitives/networkStakeStepPoolRewardShares.d.ts +4 -0
  71. package/dist/neutral/steps/primitives/networkStakeStepPoolRewardShares.d.ts.map +1 -0
  72. package/dist/neutral/steps/primitives/networkStakeStepPoolRewards.d.ts +4 -0
  73. package/dist/neutral/steps/primitives/networkStakeStepPoolRewards.d.ts.map +1 -0
  74. package/dist/neutral/steps/primitives/networkStakeStepRewardAddressHistory.d.ts +4 -0
  75. package/dist/neutral/steps/primitives/networkStakeStepRewardAddressHistory.d.ts.map +1 -0
  76. package/dist/neutral/steps/primitives/networkStakeStepRewardAddressShare.d.ts +4 -0
  77. package/dist/neutral/steps/primitives/networkStakeStepRewardAddressShare.d.ts.map +1 -0
  78. package/dist/neutral/steps/primitives/networkStakeStepRewardForStep.d.ts +3 -0
  79. package/dist/neutral/steps/primitives/networkStakeStepRewardForStep.d.ts.map +1 -0
  80. package/dist/neutral/steps/primitives/networkStakeStepRewardPositionWeight.d.ts +3 -0
  81. package/dist/neutral/steps/primitives/networkStakeStepRewardPositionWeight.d.ts.map +1 -0
  82. package/dist/neutral/steps/primitives/networkStakeStepRewardPotentialPositionLoss.d.ts +3 -0
  83. package/dist/neutral/steps/primitives/networkStakeStepRewardPotentialPositionLoss.d.ts.map +1 -0
  84. package/dist/neutral/steps/primitives/networkStakeStepRewardRandomizer.d.ts +3 -0
  85. package/dist/neutral/steps/primitives/networkStakeStepRewardRandomizer.d.ts.map +1 -0
  86. package/dist/neutral/steps/primitives/networkStakeStepRewardWeightForAddress.d.ts +4 -0
  87. package/dist/neutral/steps/primitives/networkStakeStepRewardWeightForAddress.d.ts.map +1 -0
  88. package/dist/neutral/steps/primitives/stakersAsOfBlock.d.ts +4 -0
  89. package/dist/neutral/steps/primitives/stakersAsOfBlock.d.ts.map +1 -0
  90. package/dist/neutral/steps/primitives/startingStakes.d.ts +4 -0
  91. package/dist/neutral/steps/primitives/startingStakes.d.ts.map +1 -0
  92. package/dist/neutral/steps/primitives/totalStakeWeight.d.ts +4 -0
  93. package/dist/neutral/steps/primitives/totalStakeWeight.d.ts.map +1 -0
  94. package/dist/neutral/steps/primitives/unclaimedRewards.d.ts +4 -0
  95. package/dist/neutral/steps/primitives/unclaimedRewards.d.ts.map +1 -0
  96. package/dist/neutral/time/index.d.ts +2 -0
  97. package/dist/neutral/time/index.d.ts.map +1 -0
  98. package/dist/neutral/time/primitives/index.d.ts +2 -0
  99. package/dist/neutral/time/primitives/index.d.ts.map +1 -0
  100. package/dist/neutral/time/primitives/xl1BlockNumberToEthBlockNumber.d.ts +3 -0
  101. package/dist/neutral/time/primitives/xl1BlockNumberToEthBlockNumber.d.ts.map +1 -0
  102. package/package.json +6 -5
  103. package/src/block/hydrate/allHashesPresent.ts +7 -0
  104. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +11 -0
  105. package/src/block/hydrate/flattenHydratedBlock.ts +7 -0
  106. package/src/block/hydrate/flattenHydratedBlocks.ts +7 -0
  107. package/src/block/hydrate/hydrateBlock.ts +38 -0
  108. package/src/block/hydrate/index.ts +7 -0
  109. package/src/block/hydrate/transactionsFromHydratedBlock.ts +8 -0
  110. package/src/block/hydrate/tryHydrateBlock.ts +25 -0
  111. package/src/block/index.ts +1 -1
  112. package/src/block/primitives/{balanceStepSummaryFromRange.ts → balances/balancesStepSummaryFromRange.ts} +10 -10
  113. package/src/block/primitives/{balanceSummary.ts → balances/balancesSummary.ts} +6 -6
  114. package/src/block/primitives/balances/index.ts +2 -0
  115. package/src/block/primitives/blockFromBlockNumber.ts +33 -0
  116. package/src/block/primitives/hashFromBlockNumber.ts +3 -26
  117. package/src/block/primitives/index.ts +4 -3
  118. package/src/block/primitives/model.ts +7 -2
  119. package/src/block/primitives/{payloads.ts → payloads/BalancesStepSummary.ts} +4 -23
  120. package/src/block/primitives/payloads/ChainWindow.ts +6 -0
  121. package/src/block/primitives/payloads/StepSummary.ts +15 -0
  122. package/src/block/primitives/payloads/TransfersSummary.ts +30 -0
  123. package/src/block/primitives/payloads/index.ts +4 -0
  124. package/src/block/primitives/transfers/index.ts +2 -0
  125. package/src/block/primitives/transfers/transfersStepSummaryFromRange.ts +79 -0
  126. package/src/block/primitives/transfers/transfersSummary.ts +31 -0
  127. package/src/config/Producer.ts +17 -0
  128. package/src/index.ts +2 -0
  129. package/src/payload/index.ts +1 -0
  130. package/src/payload/netTransfersForPayloads.ts +30 -0
  131. package/src/steps/index.ts +1 -0
  132. package/src/steps/primitives/addressStakeWeight.ts +51 -0
  133. package/src/steps/primitives/claimedRewards.ts +5 -0
  134. package/src/steps/primitives/index.ts +16 -0
  135. package/src/steps/primitives/networkStakeStepAddressReward.ts +6 -0
  136. package/src/steps/primitives/networkStakeStepPoolRewardShares.ts +6 -0
  137. package/src/steps/primitives/networkStakeStepPoolRewards.ts +6 -0
  138. package/src/steps/primitives/networkStakeStepRewardAddressHistory.ts +6 -0
  139. package/src/steps/primitives/networkStakeStepRewardAddressShare.ts +6 -0
  140. package/src/steps/primitives/networkStakeStepRewardForStep.ts +5 -0
  141. package/src/steps/primitives/networkStakeStepRewardPositionWeight.ts +5 -0
  142. package/src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts +5 -0
  143. package/src/steps/primitives/networkStakeStepRewardRandomizer.ts +5 -0
  144. package/src/steps/primitives/networkStakeStepRewardWeightForAddress.ts +6 -0
  145. package/src/steps/primitives/stakersAsOfBlock.ts +18 -0
  146. package/src/steps/primitives/startingStakes.ts +30 -0
  147. package/src/steps/primitives/totalStakeWeight.ts +35 -0
  148. package/src/steps/primitives/unclaimedRewards.ts +6 -0
  149. package/src/time/index.ts +1 -0
  150. package/src/time/primitives/index.ts +1 -0
  151. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +13 -0
  152. package/dist/neutral/block/hydrateBlock.d.ts +0 -12
  153. package/dist/neutral/block/hydrateBlock.d.ts.map +0 -1
  154. package/dist/neutral/block/primitives/balanceStepSummaryFromRange.d.ts +0 -6
  155. package/dist/neutral/block/primitives/balanceStepSummaryFromRange.d.ts.map +0 -1
  156. package/dist/neutral/block/primitives/balanceSummary.d.ts +0 -4
  157. package/dist/neutral/block/primitives/balanceSummary.d.ts.map +0 -1
  158. package/dist/neutral/block/primitives/payloads.d.ts.map +0 -1
  159. package/src/block/hydrateBlock.ts +0 -84
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,2CAA2C,CAAA;AACzD,cAAc,yCAAyC,CAAA;AACvD,cAAc,oCAAoC,CAAA;AAClD,cAAc,2CAA2C,CAAA;AACzD,cAAc,kDAAkD,CAAA;AAChE,cAAc,uCAAuC,CAAA;AACrD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepAddressReward(address: Address, step: number, block: number): Promisable<Record<Address, bigint>>;
4
+ //# sourceMappingURL=networkStakeStepAddressReward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepAddressReward.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepAddressReward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAEhI"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepPoolRewardShares(step: number, block: number): Promisable<Record<Address, bigint>>;
4
+ //# sourceMappingURL=networkStakeStepPoolRewardShares.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepPoolRewardShares.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewardShares.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAEjH"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepPoolRewards(step: number, block: number): Promisable<Record<Address, bigint>>;
4
+ //# sourceMappingURL=networkStakeStepPoolRewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepPoolRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAE5G"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepRewardAddressHistory(address: Address): Promisable<Record<Address, bigint>>;
4
+ //# sourceMappingURL=networkStakeStepRewardAddressHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardAddressHistory.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardAddressHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAE1G"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepRewardAddressShare(address: Address, step: number, block: number): Promisable<[bigint, bigint]>;
4
+ //# sourceMappingURL=networkStakeStepRewardAddressShare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardAddressShare.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardAddressShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE9H"}
@@ -0,0 +1,3 @@
1
+ import type { Promisable } from '@xylabs/promise';
2
+ export declare function networkStakeStepRewardForStep(step: number): Promisable<bigint>;
3
+ //# sourceMappingURL=networkStakeStepRewardForStep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardForStep.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardForStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAE9E"}
@@ -0,0 +1,3 @@
1
+ import type { Promisable } from '@xylabs/promise';
2
+ export declare function networkStakeStepRewardPositionWeight(position: bigint, step: number): Promisable<number>;
3
+ //# sourceMappingURL=networkStakeStepRewardPositionWeight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardPositionWeight.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPositionWeight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAEvG"}
@@ -0,0 +1,3 @@
1
+ import type { Promisable } from '@xylabs/promise';
2
+ export declare function networkStakeStepRewardPotentialPositionLoss(position: bigint, step: number): Promisable<bigint>;
3
+ //# sourceMappingURL=networkStakeStepRewardPotentialPositionLoss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardPotentialPositionLoss.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2CAA2C,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAE9G"}
@@ -0,0 +1,3 @@
1
+ import type { Promisable } from '@xylabs/promise';
2
+ export declare function networkStakeStepRewardRandomizer(step: number, block: number): Promisable<bigint>;
3
+ //# sourceMappingURL=networkStakeStepRewardRandomizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardRandomizer.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardRandomizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAEhG"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function networkStakeStepRewardWeightForAddress(address: Address, step: number): Promisable<bigint>;
4
+ //# sourceMappingURL=networkStakeStepRewardWeightForAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStakeStepRewardWeightForAddress.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardWeightForAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAEzG"}
@@ -0,0 +1,4 @@
1
+ import { type Address } from '@xylabs/hex';
2
+ import type { AddressStakingV2 } from '@xyo-network/typechain';
3
+ export declare function stakersAsOfBlock(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Address[]>;
4
+ //# sourceMappingURL=stakersAsOfBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakersAsOfBlock.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/stakersAsOfBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAU7H"}
@@ -0,0 +1,4 @@
1
+ import { type Address } from '@xylabs/hex';
2
+ import type { AddressStakingV2 } from '@xyo-network/typechain';
3
+ export declare function startingStakes(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Record<Address, bigint>>;
4
+ //# sourceMappingURL=startingStakes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startingStakes.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/startingStakes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAG9D,wBAAsB,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAyBzI"}
@@ -0,0 +1,4 @@
1
+ import { type Address } from '@xylabs/hex';
2
+ import type { AddressStakingV2 } from '@xyo-network/typechain';
3
+ export declare function totalStakeWeight(stakeContract: AddressStakingV2, staked: Address, startEthBlock: number, endEthBlock: number): Promise<bigint>;
4
+ //# sourceMappingURL=totalStakeWeight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"totalStakeWeight.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/totalStakeWeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAK9D,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BpJ"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ export declare function unclaimedRewards(address: Address): Promisable<bigint>;
4
+ //# sourceMappingURL=unclaimedRewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unclaimedRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/unclaimedRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAErE"}
@@ -0,0 +1,2 @@
1
+ export * from './primitives/index.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/time/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './xl1BlockNumberToEthBlockNumber.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/time/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { type ChainContext } from '../../block/index.ts';
2
+ export declare function xl1BlockNumberToEthBlockNumber(context: ChainContext, xl1BlockNumber: number): Promise<number>;
3
+ //# sourceMappingURL=xl1BlockNumberToEthBlockNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xl1BlockNumberToEthBlockNumber.d.ts","sourceRoot":"","sources":["../../../../src/time/primitives/xl1BlockNumberToEthBlockNumber.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAA;AAE7B,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKnH"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-protocol-sdk",
4
- "version": "1.14.4",
4
+ "version": "1.15.1",
5
5
  "description": "XYO Layer One SDK Protocol",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -52,18 +52,19 @@
52
52
  "@xyo-network/boundwitness-model": "~5.1.2",
53
53
  "@xyo-network/payload-builder": "~5.1.2",
54
54
  "@xyo-network/payload-model": "~5.1.2",
55
+ "@xyo-network/typechain": "^4.0.8",
55
56
  "@xyo-network/wallet": "~5.1.2",
56
57
  "@xyo-network/wallet-model": "~5.1.2",
57
- "@xyo-network/xl1-protocol": "~1.12.22",
58
- "zod": "~4.1.5"
58
+ "@xyo-network/xl1-protocol": "~1.12.33",
59
+ "zod": "~4.1.11"
59
60
  },
60
61
  "devDependencies": {
61
- "@types/node": "~24.3.1",
62
+ "@types/node": "~24.5.2",
62
63
  "@xylabs/ts-scripts-yarn3": "~7.1.7",
63
64
  "@xylabs/tsconfig": "~7.1.7",
64
65
  "@xyo-network/account": "~5.1.2",
65
66
  "@xyo-network/boundwitness-validator": "~5.1.2",
66
- "eslint": "^9.34.0",
67
+ "eslint": "^9.36.0",
67
68
  "typescript": "~5.9.2",
68
69
  "vitest": "~3.2.4"
69
70
  },
@@ -0,0 +1,7 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
3
+
4
+ export function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean {
5
+ const payloadHashes = new Set(payloads.map(p => p._hash))
6
+ return hashes.every(hash => payloadHashes.has(hash))
7
+ }
@@ -0,0 +1,11 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
4
+ import { isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
5
+
6
+ export const blockPayloadsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<Payload>[] => {
7
+ return block[0].payload_hashes.map(hash => assertEx(
8
+ block[1].find(p => p._hash === hash),
9
+ () => `missing payload ${hash}`,
10
+ )).filter(x => !isTransactionBoundWitnessWithStorageMeta(x))
11
+ }
@@ -0,0 +1,7 @@
1
+ import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
2
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
3
+
4
+ export const flattenHydratedBlock = (hydratedBlock: HydratedBlock): WithStorageMeta<Payload>[] => {
5
+ const [blk, blkPayloads] = hydratedBlock
6
+ return [...blkPayloads, blk]
7
+ }
@@ -0,0 +1,7 @@
1
+ import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
2
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
3
+
4
+ import { flattenHydratedBlock } from './flattenHydratedBlock.ts'
5
+
6
+ export const flattenHydratedBlocks = (hydratedBlocks: HydratedBlock[]): WithStorageMeta<Payload>[] =>
7
+ hydratedBlocks.flatMap(blk => flattenHydratedBlock(blk))
@@ -0,0 +1,38 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Hash } from '@xylabs/hex'
3
+ import type { ReadArchivist } from '@xyo-network/archivist-model'
4
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
5
+ import { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
6
+
7
+ import { allHashesPresent } from './allHashesPresent.ts'
8
+
9
+ export const hydrateBlock = async (
10
+ archivist: ReadArchivist,
11
+ hash: Hash,
12
+ maxDepth: number = 1,
13
+ minDepth = maxDepth,
14
+ ): Promise<HydratedBlock> => {
15
+ assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')
16
+ assertEx(minDepth >= 0, () => 'minDepth must be greater than or equal to 0')
17
+ assertEx(maxDepth >= minDepth, () => 'maxDepth must be greater than or equal to minDepth')
18
+ const bw = assertEx(
19
+ (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta),
20
+ () => `block ${hash} not found`,
21
+ )
22
+ if (maxDepth === 0) return [bw, []]
23
+ const blkPayloads = await archivist.get(bw.payload_hashes)
24
+ if (minDepth === 1) assertEx(allHashesPresent(bw.payload_hashes, blkPayloads), () => `Unable to find all payloads for block ${hash}`)
25
+ if (maxDepth === 1) return [bw, blkPayloads]
26
+ const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)
27
+ const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)
28
+ const transactionsPayloads = await archivist.get(transactionsPayloadHashes)
29
+ assertEx(allHashesPresent(transactionsPayloadHashes, transactionsPayloads), () => `Unable to find all payloads for transactions in block ${hash}`)
30
+ const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))
31
+ const allPayloads = await archivist.get([...allPayloadsHashes])
32
+ const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))
33
+ if (maxDepth === 2) assertEx(allHashesPresent(
34
+ [...allPayloadsHashes],
35
+ allPayloadsFiltered,
36
+ ), () => `Unable to find all payloads for transactions in block ${hash}`)
37
+ return [bw, allPayloadsFiltered]
38
+ }
@@ -0,0 +1,7 @@
1
+ export * from './allHashesPresent.ts'
2
+ export * from './blockPayloadsFromHydratedBlock.ts'
3
+ export * from './flattenHydratedBlock.ts'
4
+ export * from './flattenHydratedBlocks.ts'
5
+ export * from './hydrateBlock.ts'
6
+ export * from './transactionsFromHydratedBlock.ts'
7
+ export * from './tryHydrateBlock.ts'
@@ -0,0 +1,8 @@
1
+ import { filterAs } from '@xylabs/array'
2
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
3
+ import type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol'
4
+ import { asTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
5
+
6
+ export const transactionsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<TransactionBoundWitness>[] => {
7
+ return filterAs(block[1], asTransactionBoundWitnessWithStorageMeta)
8
+ }
@@ -0,0 +1,25 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Hash } from '@xylabs/hex'
3
+ import type { ReadArchivist } from '@xyo-network/archivist-model'
4
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
5
+ import { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
6
+
7
+ export const tryHydrateBlock = async (
8
+ archivist: ReadArchivist,
9
+ hash: Hash,
10
+ maxDepth: number = 1,
11
+ ): Promise<HydratedBlock | undefined> => {
12
+ assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')
13
+ const bw = (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta)
14
+ if (!bw) return undefined
15
+ if (maxDepth === 0) return [bw, []]
16
+ const blkPayloads = await archivist.get(bw.payload_hashes)
17
+ if (maxDepth === 1) return [bw, blkPayloads]
18
+ const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)
19
+ const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)
20
+ const transactionsPayloads = await archivist.get(transactionsPayloadHashes)
21
+ const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))
22
+ const allPayloads = await archivist.get([...allPayloadsHashes])
23
+ const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))
24
+ return [bw, allPayloadsFiltered]
25
+ }
@@ -1,2 +1,2 @@
1
- export * from './hydrateBlock.ts'
1
+ export * from './hydrate/index.ts'
2
2
  export * from './primitives/index.ts'
@@ -5,18 +5,18 @@ import type { WithStorageMeta } from '@xyo-network/payload-model'
5
5
  import { isAnyPayload } from '@xyo-network/payload-model'
6
6
  import { StepSizes } from '@xyo-network/xl1-protocol'
7
7
 
8
- import { netBalancesForPayloads } from '../../payload/index.ts'
8
+ import { netBalancesForPayloads } from '../../../payload/index.ts'
9
9
  import {
10
10
  parseSignedBigInt, type SignedBigInt, toSignedBigInt,
11
- } from '../../SignedBigInt.ts'
12
- import { hydrateBlock } from '../hydrateBlock.ts'
13
- import type { BlockNumberRange } from './frames/index.ts'
14
- import { deepCalculateFramesFromRange } from './frames/index.ts'
15
- import { hashFromBlockNumber } from './hashFromBlockNumber.ts'
16
- import type { BalanceStepSummaryContext } from './model.ts'
17
- import { type BalancesStepSummary, BalancesStepSummarySchema } from './payloads.ts'
11
+ } from '../../../SignedBigInt.ts'
12
+ import { hydrateBlock } from '../../hydrate/index.ts'
13
+ import type { BlockNumberRange } from '../frames/index.ts'
14
+ import { deepCalculateFramesFromRange } from '../frames/index.ts'
15
+ import { hashFromBlockNumber } from '../hashFromBlockNumber.ts'
16
+ import type { BalanceStepSummaryContext } from '../model.ts'
17
+ import { type BalancesStepSummary, BalancesStepSummarySchema } from '../payloads/index.ts'
18
18
 
19
- export async function balanceStepSummaryFromRange(
19
+ export async function balancesStepSummaryFromRange(
20
20
  context: BalanceStepSummaryContext,
21
21
  range: BlockNumberRange,
22
22
  ): Promise<WithStorageMeta<BalancesStepSummary>> {
@@ -47,7 +47,7 @@ export async function balanceStepSummaryFromRange(
47
47
  } else {
48
48
  // We do not have it, so lets build it
49
49
  const subRanges = deepCalculateFramesFromRange(range, step - 1)
50
- const promises = subRanges.map(subRange => balanceStepSummaryFromRange(
50
+ const promises = subRanges.map(subRange => balancesStepSummaryFromRange(
51
51
  context,
52
52
  subRange,
53
53
  ))
@@ -4,12 +4,12 @@ import { spanRootAsync } from '@xylabs/telemetry'
4
4
  import { isDefined } from '@xylabs/typeof'
5
5
  import { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
6
6
 
7
- import { parseSignedBigInt } from '../../SignedBigInt.ts'
8
- import { balanceStepSummaryFromRange } from './balanceStepSummaryFromRange.ts'
9
- import { deepCalculateFramesFromRange } from './frames/index.ts'
10
- import type { BalanceStepSummaryContext } from './model.ts'
7
+ import { parseSignedBigInt } from '../../../SignedBigInt.ts'
8
+ import { deepCalculateFramesFromRange } from '../frames/index.ts'
9
+ import type { BalanceStepSummaryContext } from '../model.ts'
10
+ import { balancesStepSummaryFromRange } from './balancesStepSummaryFromRange.ts'
11
11
 
12
- export async function balanceSummary(
12
+ export async function balancesSummary(
13
13
  context: BalanceStepSummaryContext,
14
14
  ): Promise<Partial<Record<Address, bigint>>> {
15
15
  return await spanRootAsync('balanceSummary', async () => {
@@ -17,7 +17,7 @@ export async function balanceSummary(
17
17
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })
18
18
  const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0
19
19
  const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])
20
- const summaries = await Promise.all(ranges.map(range => balanceStepSummaryFromRange(context, range)))
20
+ const summaries = await Promise.all(ranges.map(range => balancesStepSummaryFromRange(context, range)))
21
21
  const balances: Partial<Record<Address, bigint>> = {}
22
22
  for (let summary of summaries) {
23
23
  for (const [address, balance] of Object.entries(summary.balances)) {
@@ -0,0 +1,2 @@
1
+ export * from './balancesStepSummaryFromRange.ts'
2
+ export * from './balancesSummary.ts'
@@ -0,0 +1,33 @@
1
+ import { asHash, type Hash } from '@xylabs/hex'
2
+ import { toSafeJsonString } from '@xylabs/object'
3
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
4
+ import type { BlockBoundWitness } from '@xyo-network/xl1-protocol'
5
+ import { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'
6
+
7
+ import type { ChainContext } from './model.ts'
8
+
9
+ export async function blockFromBlockNumber(context: ChainContext, blockNumber: number): Promise<WithStorageMeta<BlockBoundWitness>> {
10
+ const result = await context.chainArchivist.get([context.head])
11
+ let currentBlock = asBlockBoundWitnessWithStorageMeta(result.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })
12
+ while (currentBlock.block > blockNumber) {
13
+ let jumpHash: Hash | null = currentBlock.previous
14
+ let jumpBlockNumber = currentBlock.block - 1
15
+ for (const [step, stepSize] of StepSizes.entries()) {
16
+ const possibleJumpBlockNumber = currentBlock.block - stepSize
17
+ if (possibleJumpBlockNumber >= blockNumber && possibleJumpBlockNumber <= jumpBlockNumber) {
18
+ jumpBlockNumber = possibleJumpBlockNumber
19
+ jumpHash = asHash(currentBlock.step_hashes.at(step), () => `Step hash not found for step ${step} in block ${currentBlock.block}`)
20
+ }
21
+ }
22
+ const [newBlock] = await context.chainArchivist.get([
23
+ asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`)])
24
+ currentBlock = asBlockBoundWitnessWithStorageMeta(newBlock, () => `Block not found for hash: ${jumpHash}`, { required: true })
25
+ if (currentBlock.block === blockNumber) {
26
+ break
27
+ }
28
+ if (currentBlock.block < blockNumber) {
29
+ throw new Error(`Block number ${blockNumber} is not a valid step block number for block ${context.head}.`)
30
+ }
31
+ }
32
+ return currentBlock
33
+ }
@@ -1,31 +1,8 @@
1
- import { asHash, type Hash } from '@xylabs/hex'
2
- import { toSafeJsonString } from '@xylabs/object'
3
- import { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'
1
+ import { type Hash } from '@xylabs/hex'
4
2
 
3
+ import { blockFromBlockNumber } from './blockFromBlockNumber.ts'
5
4
  import type { ChainContext } from './model.ts'
6
5
 
7
6
  export async function hashFromBlockNumber(context: ChainContext, blockNumber: number): Promise<Hash> {
8
- const result = await context.chainArchivist.get([context.head])
9
- let currentBlock = asBlockBoundWitnessWithStorageMeta(result.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })
10
- while (currentBlock.block > blockNumber) {
11
- let jumpHash: Hash | null = currentBlock.previous
12
- let jumpBlockNumber = currentBlock.block - 1
13
- for (const [step, stepSize] of StepSizes.entries()) {
14
- const possibleJumpBlockNumber = currentBlock.block - stepSize
15
- if (possibleJumpBlockNumber >= blockNumber && possibleJumpBlockNumber <= jumpBlockNumber) {
16
- jumpBlockNumber = possibleJumpBlockNumber
17
- jumpHash = asHash(currentBlock.step_hashes.at(step), () => `Step hash not found for step ${step} in block ${currentBlock.block}`)
18
- }
19
- }
20
- const [newBlock] = await context.chainArchivist.get([
21
- asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`)])
22
- currentBlock = asBlockBoundWitnessWithStorageMeta(newBlock, () => `Block not found for hash: ${jumpHash}`, { required: true })
23
- if (currentBlock.block === blockNumber) {
24
- break
25
- }
26
- if (currentBlock.block < blockNumber) {
27
- throw new Error(`Block number ${blockNumber} is not a valid step block number for block ${context.head}.`)
28
- }
29
- }
30
- return currentBlock._hash
7
+ return (await blockFromBlockNumber(context, blockNumber))._hash
31
8
  }
@@ -1,6 +1,7 @@
1
- export * from './balanceStepSummaryFromRange.ts'
2
- export * from './balanceSummary.ts'
1
+ export * from './balances/index.ts'
2
+ export * from './blockFromBlockNumber.ts'
3
3
  export * from './frames/index.ts'
4
4
  export * from './hashFromBlockNumber.ts'
5
5
  export * from './model.ts'
6
- export * from './payloads.ts'
6
+ export * from './payloads/index.ts'
7
+ export * from './transfers/index.ts'
@@ -1,9 +1,9 @@
1
- import type { Hash } from '@xylabs/hex'
1
+ import type { Address, Hash } from '@xylabs/hex'
2
2
  import type { ReadArchivist } from '@xyo-network/archivist-model'
3
3
  import type { Payload } from '@xyo-network/payload-model'
4
4
  import type { PayloadRepository } from '@xyo-network/xl1-protocol'
5
5
 
6
- import type { BalancesStepSummary } from './payloads.ts'
6
+ import type { BalancesStepSummary, TransfersStepSummary } from './payloads/index.ts'
7
7
 
8
8
  export interface ChainContext {
9
9
  chainArchivist: ReadArchivist
@@ -16,3 +16,8 @@ export interface ChainSummaryContext<T extends Payload> extends ChainContext {
16
16
  }
17
17
 
18
18
  export interface BalanceStepSummaryContext extends ChainSummaryContext<BalancesStepSummary> {}
19
+
20
+ export interface TransfersStepSummaryContext extends ChainSummaryContext<TransfersStepSummary> {
21
+ /* The address that the transfers to/from are being summarized */
22
+ account: Address
23
+ }
@@ -1,29 +1,10 @@
1
- import type { Address, Hash } from '@xylabs/hex'
2
- import type { EmptyObject } from '@xylabs/object'
1
+ import type { Address } from '@xylabs/hex'
3
2
  import { AsObjectFactory } from '@xylabs/object'
4
- import type {
5
- Payload, Schema, WithStorageMeta,
6
- } from '@xyo-network/payload-model'
3
+ import type { Schema, WithStorageMeta } from '@xyo-network/payload-model'
7
4
  import { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'
8
5
 
9
- import type { SignedBigInt } from '../../SignedBigInt.ts'
10
-
11
- export const StepSummarySchema: Schema = 'network.xyo.step.summary'
12
- export type StepSummarySchema = typeof StepSummarySchema
13
-
14
- export interface StepSummaryFields {
15
- hash: Hash // the stepHash - the hash of the last block in the step frame
16
- stepSize: number // the stepSize in blocks
17
- }
18
-
19
- export interface ChainWindow {
20
- depth: number // number of blocks the window covers, including the head
21
- head: Hash // the head of the chain
22
- }
23
-
24
- export type StepSummary<TAdditionalFields extends EmptyObject | void = void,
25
- TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields,
26
- TSchema extends void ? StepSummarySchema : TSchema>
6
+ import type { SignedBigInt } from '../../../SignedBigInt.ts'
7
+ import type { StepSummary } from './StepSummary.ts'
27
8
 
28
9
  export const BalancesStepSummarySchema: Schema = 'network.xyo.step.summary.balances'
29
10
  export type BalancesStepSummarySchema = typeof BalancesStepSummarySchema
@@ -0,0 +1,6 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+
3
+ export interface ChainWindow {
4
+ depth: number // number of blocks the window covers, including the head
5
+ head: Hash // the head of the chain
6
+ }
@@ -0,0 +1,15 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import type { EmptyObject } from '@xylabs/object'
3
+ import type { Payload, Schema } from '@xyo-network/payload-model'
4
+
5
+ export const StepSummarySchema: Schema = 'network.xyo.step.summary'
6
+ export type StepSummarySchema = typeof StepSummarySchema
7
+
8
+ export interface StepSummaryFields {
9
+ hash: Hash // the stepHash - the hash of the last block in the step frame
10
+ stepSize: number // the stepSize in blocks
11
+ }
12
+
13
+ export type StepSummary<TAdditionalFields extends EmptyObject | void = void,
14
+ TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields,
15
+ TSchema extends void ? StepSummarySchema : TSchema>
@@ -0,0 +1,30 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import { AsObjectFactory } from '@xylabs/object'
3
+ import type { Schema, WithStorageMeta } from '@xyo-network/payload-model'
4
+ import { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'
5
+
6
+ import type { SignedBigInt } from '../../../SignedBigInt.ts'
7
+ import type { StepSummary } from './StepSummary.ts'
8
+
9
+ export const TransfersStepSummarySchema: Schema = 'network.xyo.step.summary.transfer'
10
+ export type TransfersStepSummarySchema = typeof TransfersStepSummarySchema
11
+
12
+ export type TransfersStepSummary = StepSummary<{
13
+ account: Address
14
+ transfers: Record<Address, SignedBigInt>
15
+ }, TransfersStepSummarySchema>
16
+
17
+ /**
18
+ * Identity function for determining if an object is an TransfersStepSummary
19
+ */
20
+ export const isTransfersStepSummary = isPayloadOfSchemaType<TransfersStepSummary>(TransfersStepSummarySchema)
21
+ export const asTransfersStepSummary = AsObjectFactory.create<TransfersStepSummary>(isTransfersStepSummary)
22
+
23
+ /**
24
+ * Identity function for determining if an object is an TransfersStepSummary with Storage Meta
25
+ */
26
+ export const isTransfersStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<TransfersStepSummary> => {
27
+ return isTransfersStepSummary(value) && isStorageMeta(value)
28
+ }
29
+ export const asTransfersStepSummaryWithStorageMeta
30
+ = AsObjectFactory.create<WithStorageMeta<TransfersStepSummary>>(isTransfersStepSummaryWithStorageMeta)
@@ -0,0 +1,4 @@
1
+ export * from './BalancesStepSummary.ts'
2
+ export * from './ChainWindow.ts'
3
+ export * from './StepSummary.ts'
4
+ export * from './TransfersSummary.ts'
@@ -0,0 +1,2 @@
1
+ export * from './transfersStepSummaryFromRange.ts'
2
+ export * from './transfersSummary.ts'