@xyo-network/xl1-protocol-sdk 1.26.11 → 1.26.13

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 (316) hide show
  1. package/package.json +29 -16
  2. package/src/ChainContextHelpers.ts +0 -50
  3. package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
  4. package/src/CreatableProvider/CreatableProvider.ts +0 -102
  5. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
  6. package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
  7. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
  8. package/src/CreatableProvider/ProviderFactory.ts +0 -138
  9. package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
  10. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
  11. package/src/CreatableProvider/index.ts +0 -8
  12. package/src/SignedBigInt.ts +0 -59
  13. package/src/_internal/context/getTestProviderContext.ts +0 -13
  14. package/src/_internal/context/index.ts +0 -1
  15. package/src/_internal/index.ts +0 -2
  16. package/src/actor/ActorV3.ts +0 -177
  17. package/src/actor/index.ts +0 -1
  18. package/src/amount/ShiftedBigInt.ts +0 -73
  19. package/src/amount/XL1Amount.ts +0 -103
  20. package/src/amount/index.ts +0 -4
  21. package/src/amount/splitOnDecimal.ts +0 -6
  22. package/src/amount/splitOnDecimalToString.ts +0 -40
  23. package/src/block/hydrate/allHashesPresent.ts +0 -8
  24. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
  25. package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
  26. package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
  27. package/src/block/hydrate/hydrateBlock.ts +0 -43
  28. package/src/block/hydrate/index.ts +0 -7
  29. package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
  30. package/src/block/hydrate/tryHydrateBlock.ts +0 -26
  31. package/src/block/index.ts +0 -2
  32. package/src/block/primitives/blockFromBlockNumber.ts +0 -69
  33. package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
  34. package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
  35. package/src/block/primitives/frames/index.ts +0 -2
  36. package/src/block/primitives/hashFromBlockNumber.ts +0 -9
  37. package/src/block/primitives/index.ts +0 -7
  38. package/src/block/primitives/model.ts +0 -18
  39. package/src/block/primitives/payloads/ChainWindow.ts +0 -7
  40. package/src/block/primitives/payloads/index.ts +0 -1
  41. package/src/block/primitives/toStepIdentityString.ts +0 -6
  42. package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
  43. package/src/config/Actor.ts +0 -32
  44. package/src/config/Actors.ts +0 -9
  45. package/src/config/Base.ts +0 -27
  46. package/src/config/Chain.ts +0 -23
  47. package/src/config/Config.ts +0 -24
  48. package/src/config/DataLake/DataLake.ts +0 -12
  49. package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
  50. package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
  51. package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
  52. package/src/config/DataLake/index.ts +0 -4
  53. package/src/config/DeepPartial.ts +0 -4
  54. package/src/config/Evm.ts +0 -38
  55. package/src/config/HostActor.ts +0 -32
  56. package/src/config/Log.ts +0 -25
  57. package/src/config/Provider.ts +0 -20
  58. package/src/config/Providers.ts +0 -9
  59. package/src/config/Remote.ts +0 -59
  60. package/src/config/Telemetry.ts +0 -49
  61. package/src/config/UsageMeta.ts +0 -46
  62. package/src/config/Validation.ts +0 -29
  63. package/src/config/index.ts +0 -12
  64. package/src/config/storage/Storage.ts +0 -16
  65. package/src/config/storage/driver/Mongo.ts +0 -53
  66. package/src/config/storage/driver/index.ts +0 -1
  67. package/src/config/storage/index.ts +0 -2
  68. package/src/constants.ts +0 -4
  69. package/src/context/Actor.ts +0 -20
  70. package/src/context/HostActor.ts +0 -20
  71. package/src/context/getEmptyProviderContext.ts +0 -19
  72. package/src/context/index.ts +0 -3
  73. package/src/createDeclarationPayload.ts +0 -15
  74. package/src/createTransferPayload.ts +0 -16
  75. package/src/driver/cache/LruCacheMap.ts +0 -48
  76. package/src/driver/cache/index.ts +0 -1
  77. package/src/driver/index.ts +0 -2
  78. package/src/driver/memory/MemoryMap.ts +0 -48
  79. package/src/driver/memory/index.ts +0 -1
  80. package/src/eip-712/Payloads/EIP712Data.ts +0 -35
  81. package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
  82. package/src/eip-712/Payloads/index.ts +0 -2
  83. package/src/eip-712/Types.ts +0 -41
  84. package/src/eip-712/index.ts +0 -4
  85. package/src/eip-712/sign.ts +0 -19
  86. package/src/eip-712/spec/fixtures.ts +0 -27
  87. package/src/eip-712/verify.ts +0 -20
  88. package/src/getFileConfig.ts +0 -36
  89. package/src/index.ts +0 -27
  90. package/src/instances/Address.ts +0 -16
  91. package/src/instances/BoundWitness.ts +0 -13
  92. package/src/instances/Data.ts +0 -4
  93. package/src/instances/Fees.ts +0 -9
  94. package/src/instances/HydratedBoundWitness.ts +0 -16
  95. package/src/instances/Object.ts +0 -6
  96. package/src/instances/Payload.ts +0 -7
  97. package/src/instances/Signature.ts +0 -12
  98. package/src/instances/block/BlockFields.ts +0 -18
  99. package/src/instances/block/HydratedBlock.ts +0 -10
  100. package/src/instances/block/index.ts +0 -1
  101. package/src/instances/index.ts +0 -10
  102. package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
  103. package/src/instances/modifiers/BlockWindowState.ts +0 -6
  104. package/src/instances/modifiers/Signed.ts +0 -9
  105. package/src/instances/modifiers/Validatable.ts +0 -6
  106. package/src/instances/modifiers/index.ts +0 -4
  107. package/src/instances/transaction/HydratedTransaction.ts +0 -9
  108. package/src/instances/transaction/TransactionFields.ts +0 -22
  109. package/src/instances/transaction/index.ts +0 -1
  110. package/src/isInternetAvailable.ts +0 -11
  111. package/src/model/ChainFork/ChainForkStatic.ts +0 -9
  112. package/src/model/ChainFork/index.ts +0 -1
  113. package/src/model/ChainIdentity.ts +0 -6
  114. package/src/model/ChainStore.ts +0 -16
  115. package/src/model/CreatableProviderContext.ts +0 -6
  116. package/src/model/CreatableProviderContext.zod.ts +0 -55
  117. package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
  118. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
  119. package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
  120. package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
  121. package/src/model/PayloadBundle/index.ts +0 -4
  122. package/src/model/index.ts +0 -6
  123. package/src/multipliers.ts +0 -18
  124. package/src/payloads/AddressPairPayload.ts +0 -27
  125. package/src/payloads/index.ts +0 -4
  126. package/src/payloads/netBalancesForPayloads.ts +0 -24
  127. package/src/payloads/netSchemasForPayloads.ts +0 -24
  128. package/src/payloads/netTransfersForPayloads.ts +0 -27
  129. package/src/primitives/block/index.ts +0 -2
  130. package/src/primitives/block/range/blockRangeSteps.ts +0 -23
  131. package/src/primitives/block/range/index.ts +0 -1
  132. package/src/primitives/block/rate/blockRate.ts +0 -77
  133. package/src/primitives/block/rate/index.ts +0 -4
  134. package/src/primitives/block/rate/stepRate.ts +0 -37
  135. package/src/primitives/block/rate/timeHelpers.ts +0 -61
  136. package/src/primitives/block/rate/timeRate.ts +0 -121
  137. package/src/primitives/chain/getWindowedChain.ts +0 -50
  138. package/src/primitives/chain/index.ts +0 -3
  139. package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
  140. package/src/primitives/chain/step/index.ts +0 -4
  141. package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
  142. package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
  143. package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
  144. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
  145. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
  146. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
  147. package/src/primitives/chain/time/index.ts +0 -3
  148. package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
  149. package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
  150. package/src/primitives/datalake/index.ts +0 -2
  151. package/src/primitives/index.ts +0 -13
  152. package/src/primitives/mapToMapType.ts +0 -35
  153. package/src/primitives/payload/index.ts +0 -1
  154. package/src/primitives/payload/mergeTransfers.ts +0 -16
  155. package/src/primitives/readPayloadMapFromStore.ts +0 -58
  156. package/src/primitives/rewardFromBlockNumber.ts +0 -19
  157. package/src/primitives/rewards/index.ts +0 -1
  158. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
  159. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
  160. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
  161. package/src/primitives/stake/allStakersForRange.ts +0 -32
  162. package/src/primitives/stake/allStakersForStep.ts +0 -24
  163. package/src/primitives/stake/index.ts +0 -6
  164. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
  165. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
  166. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
  167. package/src/primitives/state/findMostRecentBlock.ts +0 -44
  168. package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
  169. package/src/primitives/state/index.ts +0 -2
  170. package/src/primitives/step/completedStepRewardAddress.ts +0 -10
  171. package/src/primitives/step/derivedReceiveAddress.ts +0 -9
  172. package/src/primitives/step/index.ts +0 -4
  173. package/src/primitives/step/stepBlockRange.ts +0 -9
  174. package/src/primitives/step/stepTransferIndex.ts +0 -19
  175. package/src/primitives/transaction/elevatedPayloads.ts +0 -24
  176. package/src/primitives/transaction/index.ts +0 -1
  177. package/src/primitives/uncle/findBestUncle.ts +0 -9
  178. package/src/primitives/uncle/findUncles.ts +0 -75
  179. package/src/primitives/uncle/index.ts +0 -3
  180. package/src/primitives/uncle/scoreUncle.ts +0 -7
  181. package/src/services/AccountTransfersService.ts +0 -13
  182. package/src/services/BlockProducerService.ts +0 -11
  183. package/src/services/Chain/BaseChainService.ts +0 -4
  184. package/src/services/Chain/ChainHeadService.ts +0 -8
  185. package/src/services/Chain/ChainService.ts +0 -6
  186. package/src/services/Chain/index.ts +0 -3
  187. package/src/services/Election.ts +0 -14
  188. package/src/services/NetworkStakeService.ts +0 -4
  189. package/src/services/Params.ts +0 -13
  190. package/src/services/PendingTransactionsService.ts +0 -7
  191. package/src/services/SchemasService.ts +0 -11
  192. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
  193. package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
  194. package/src/services/StakeIntentService/index.ts +0 -2
  195. package/src/services/index.ts +0 -8
  196. package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
  197. package/src/simple/StakeEventsViewer/index.ts +0 -1
  198. package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
  199. package/src/simple/StakeTotalsViewer/index.ts +0 -1
  200. package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
  201. package/src/simple/StakeViewer/index.ts +0 -1
  202. package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
  203. package/src/simple/TransactionViewer/index.ts +0 -1
  204. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
  205. package/src/simple/accountBalance/index.ts +0 -1
  206. package/src/simple/block/SimpleBlockViewer.ts +0 -231
  207. package/src/simple/block/index.ts +0 -1
  208. package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
  209. package/src/simple/blockInvalidation/index.ts +0 -1
  210. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
  211. package/src/simple/blockReward/index.ts +0 -1
  212. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
  213. package/src/simple/blockValidation/index.ts +0 -1
  214. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
  215. package/src/simple/chainContractViewer/index.ts +0 -1
  216. package/src/simple/client/SimpleXyoClient.ts +0 -14
  217. package/src/simple/client/index.ts +0 -1
  218. package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
  219. package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
  220. package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
  221. package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
  222. package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
  223. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
  224. package/src/simple/datalake/index.ts +0 -4
  225. package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
  226. package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
  227. package/src/simple/finalization/index.ts +0 -2
  228. package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
  229. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
  230. package/src/simple/gateway/index.ts +0 -2
  231. package/src/simple/index.ts +0 -22
  232. package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
  233. package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
  234. package/src/simple/mempool/index.ts +0 -2
  235. package/src/simple/network/SimpleXyoNetwork.ts +0 -48
  236. package/src/simple/network/index.ts +0 -1
  237. package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
  238. package/src/simple/network/lib/StatusNetworks.ts +0 -32
  239. package/src/simple/network/lib/index.ts +0 -2
  240. package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
  241. package/src/simple/permissions/index.ts +0 -2
  242. package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
  243. package/src/simple/permissions/store/PermissionsStore.ts +0 -17
  244. package/src/simple/permissions/store/index.ts +0 -2
  245. package/src/simple/runner/SimpleXyoRunner.ts +0 -41
  246. package/src/simple/runner/index.ts +0 -1
  247. package/src/simple/signer/SimpleXyoSigner.ts +0 -78
  248. package/src/simple/signer/index.ts +0 -1
  249. package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
  250. package/src/simple/timeSync2/index.ts +0 -1
  251. package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
  252. package/src/simple/transactionInvalidation/index.ts +0 -1
  253. package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
  254. package/src/simple/transactionValidation/index.ts +0 -1
  255. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
  256. package/src/simple/windowedBlock/index.ts +0 -1
  257. package/src/status/RuntimeStatusMonitor.ts +0 -120
  258. package/src/status/ServiceStatus.ts +0 -21
  259. package/src/status/index.ts +0 -2
  260. package/src/summary/index.ts +0 -2
  261. package/src/summary/model/BalancesStepSummary.ts +0 -35
  262. package/src/summary/model/SchemasStepSummary.ts +0 -33
  263. package/src/summary/model/StepSummary.ts +0 -20
  264. package/src/summary/model/TransfersSummary.ts +0 -36
  265. package/src/summary/model/index.ts +0 -4
  266. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
  267. package/src/summary/primitives/balances/balancesSummary.ts +0 -48
  268. package/src/summary/primitives/balances/index.ts +0 -2
  269. package/src/summary/primitives/index.ts +0 -3
  270. package/src/summary/primitives/schemas/index.ts +0 -2
  271. package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
  272. package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
  273. package/src/summary/primitives/transfers/index.ts +0 -2
  274. package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
  275. package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
  276. package/src/test/BuildBlockOptions.ts +0 -81
  277. package/src/test/buildBlock.ts +0 -105
  278. package/src/test/buildGenesisBlock.ts +0 -29
  279. package/src/test/buildNextBlock.ts +0 -37
  280. package/src/test/buildRandomChain.ts +0 -92
  281. package/src/test/buildRandomGenesisBlock.ts +0 -47
  282. package/src/test/createGenesisBlock.ts +0 -41
  283. package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
  284. package/src/test/getSimpleBlockViewerLocator.ts +0 -41
  285. package/src/test/getTestProviderContext.ts +0 -8
  286. package/src/test/index.ts +0 -2
  287. package/src/time/index.ts +0 -1
  288. package/src/time/primitives/index.ts +0 -1
  289. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
  290. package/src/transaction/TransactionBuilder.ts +0 -164
  291. package/src/transaction/buildRandomTransaction.ts +0 -38
  292. package/src/transaction/buildTransaction.ts +0 -68
  293. package/src/transaction/buildUnsignedTransaction.ts +0 -56
  294. package/src/transaction/confirmSubmittedTransaction.ts +0 -42
  295. package/src/transaction/hydrateTransaction.ts +0 -117
  296. package/src/transaction/index.ts +0 -9
  297. package/src/transaction/primitives/index.ts +0 -4
  298. package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
  299. package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
  300. package/src/transaction/primitives/transactionOperations.ts +0 -13
  301. package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
  302. package/src/transaction/script.ts +0 -48
  303. package/src/transaction/signTransaction.ts +0 -32
  304. package/src/utils/HydratedCache.ts +0 -39
  305. package/src/utils/index.ts +0 -2
  306. package/src/utils/isZodError.ts +0 -11
  307. package/src/validation/index.ts +0 -2
  308. package/src/validation/lib/getUrl.ts +0 -7
  309. package/src/validation/lib/index.ts +0 -2
  310. package/src/validation/lib/isLocalhost.ts +0 -9
  311. package/src/validation/schema/Address.ts +0 -2
  312. package/src/validation/schema/Mnemonic.ts +0 -21
  313. package/src/validation/schema/index.ts +0 -2
  314. package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
  315. package/src/wallet/index.ts +0 -2
  316. package/src/wallet/paths.ts +0 -17
@@ -1,164 +0,0 @@
1
- import {
2
- type Address, asAddress, Promisable, toAddress,
3
- } from '@xylabs/sdk-js'
4
- import { assertEx } from '@xylabs/sdk-js'
5
- import {
6
- Position, StakeEventsViewer, StakeEventsViewerMoniker, StakeViewer, StakeViewerMoniker,
7
- } from '@xyo-network/xl1-protocol-lib'
8
-
9
- import {
10
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
11
- } from '../../CreatableProvider/index.ts'
12
-
13
- /** Parameters for SimpleStakeViewer. */
14
- export interface SimpleStakeViewerParams extends CreatableProviderParams {
15
- chainId?: Address
16
- minWithdrawalBlocks?: number
17
- positions: Position[]
18
- }
19
-
20
- /** SimpleStakeViewer implementation. */
21
- @creatableProvider()
22
- export class SimpleStakeViewer extends AbstractCreatableProvider<SimpleStakeViewerParams> implements StakeViewer {
23
- static readonly defaultMoniker = StakeViewerMoniker
24
- static readonly dependencies = [StakeEventsViewerMoniker]
25
- static readonly monikers = [StakeViewerMoniker]
26
- moniker = SimpleStakeViewer.defaultMoniker
27
-
28
- private _chainStakeEventsViewer: StakeEventsViewer | undefined
29
-
30
- get stakeEvents() {
31
- return assertEx(this._chainStakeEventsViewer, () => 'Stake events viewer not set')
32
- }
33
-
34
- protected get positions() {
35
- return this.params.positions
36
- }
37
-
38
- async active(): Promise<bigint> {
39
- let active = 0n
40
- const positions = await this.activeStakes()
41
- for (const position of positions) {
42
- if (position.removeBlock === 0) {
43
- active += position.amount
44
- }
45
- }
46
- return active
47
- }
48
-
49
- async activeByAddressStaked(staked: Address) {
50
- let active = 0n
51
- const positions = await this.activeStakes()
52
- for (const position of positions) {
53
- if (position.removeBlock === 0 && asAddress(position.staked) === asAddress(staked)) {
54
- active += position.amount
55
- }
56
- }
57
- return active
58
- }
59
-
60
- async activeByStaker(staker: Address): Promise<bigint> {
61
- let active = 0n
62
- const positions = await this.activeStakes()
63
- for (const position of positions) {
64
- if (position.removeBlock === 0 && asAddress(position.staker) === asAddress(staker)) {
65
- active += position.amount
66
- }
67
- }
68
- return active
69
- }
70
-
71
- activeStakes(): Promisable<Position[]> {
72
- return this.positions.filter(s => (s.withdrawBlock === 0) && (s.removeBlock === 0))
73
- }
74
-
75
- override async createHandler() {
76
- await super.createHandler()
77
- this._chainStakeEventsViewer = assertEx(
78
- (await this.locateAndCreate<StakeEventsViewer>(StakeEventsViewerMoniker)),
79
- () => 'Failed to create StakeEventsViewer',
80
- )
81
- }
82
-
83
- minWithdrawalBlocks(): number {
84
- return this.params.minWithdrawalBlocks ?? 10
85
- }
86
-
87
- async pending() {
88
- let pending = 0n
89
- const positions = await this.removedStakes()
90
- for (const position of positions) {
91
- if (position.removeBlock !== 0 && position.withdrawBlock === 0) {
92
- pending += position.amount
93
- }
94
- }
95
- return pending
96
- }
97
-
98
- async pendingByStaker(staker: Address) {
99
- let pending = 0n
100
- const positions = await this.removedStakes()
101
- for (const position of positions) {
102
- if (position.removeBlock !== 0 && position.withdrawBlock === 0 && asAddress(position.staker) === asAddress(staker)) {
103
- pending += position.amount
104
- }
105
- }
106
- return pending
107
- }
108
-
109
- removedStakes(): Promisable<Position[]> {
110
- return this.positions.filter(s => (s.withdrawBlock === 0) && (s.removeBlock !== 0))
111
- }
112
-
113
- rewardsContract(): Address {
114
- return toAddress(toAddress(1n))
115
- }
116
-
117
- stakeById(id: number): Position {
118
- return assertEx(this.positions[id], () => new Error(`Stake with id ${id} not found`))
119
- }
120
-
121
- stakeByStaker(staker: Address, slot: number): Position {
122
- return this.positions.filter(s => asAddress(s.staker) === asAddress(staker))[slot]
123
- }
124
-
125
- stakesByStaked(staked: Address, range: [number, number | undefined] = [0, undefined]): Position[] {
126
- const endBlock = (range[1] ?? Number.MAX_SAFE_INTEGER)
127
- return this.positions.filter(s => asAddress(s.staked) === asAddress(staked) && s.addBlock <= endBlock && s.removeBlock <= endBlock)
128
- }
129
-
130
- stakesByStaker(staker: Address, range: [number, number | undefined] = [0, undefined]): Position[] {
131
- const endBlock = (range[1] ?? Number.MAX_SAFE_INTEGER)
132
- return this.positions.filter(s => asAddress(s.staker) === asAddress(staker) && s.addBlock <= endBlock && s.removeBlock <= endBlock)
133
- }
134
-
135
- stakingTokenAddress(): Address {
136
- return toAddress('0x000000000000000000000000000011')
137
- }
138
-
139
- async withdrawn() {
140
- let withdrawn = 0n
141
- const positions = await this.withdrawnStakes()
142
- for (const position of positions) {
143
- if (position.withdrawBlock !== 0) {
144
- withdrawn += position.amount
145
- }
146
- }
147
- return withdrawn
148
- }
149
-
150
- async withdrawnByStaker(staker: Address) {
151
- let withdrawn = 0n
152
- const positions = await this.withdrawnStakes()
153
- for (const position of positions) {
154
- if (position.withdrawBlock !== 0 && asAddress(position.staker) === asAddress(staker)) {
155
- withdrawn += position.amount
156
- }
157
- }
158
- return withdrawn
159
- }
160
-
161
- withdrawnStakes(): Promisable<Position[]> {
162
- return this.positions.filter(s => (s.withdrawBlock !== 0))
163
- }
164
- }
@@ -1 +0,0 @@
1
- export * from './SimpleStakeViewer.ts'
@@ -1,100 +0,0 @@
1
- import {
2
- assertEx, exists, Hash,
3
- } from '@xylabs/sdk-js'
4
- import { BoundWitnessSchema } from '@xyo-network/sdk-js'
5
- import {
6
- asSignedHydratedTransactionWithHashMeta,
7
- asSignedTransactionBoundWitness,
8
- BlockViewer,
9
- BlockViewerMoniker,
10
- isTransactionBoundWitnessWithHashMeta,
11
- SignedHydratedTransactionWithHashMeta, TransactionViewer, TransactionViewerMoniker,
12
- XL1BlockNumber,
13
- } from '@xyo-network/xl1-protocol-lib'
14
-
15
- import {
16
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
17
- } from '../../CreatableProvider/index.ts'
18
-
19
- /** Parameters for SimpleTransactionViewer. */
20
- export interface SimpleTransactionViewerParams extends CreatableProviderParams {
21
-
22
- }
23
-
24
- /** SimpleTransactionViewer implementation. */
25
- @creatableProvider()
26
- export class SimpleTransactionViewer extends AbstractCreatableProvider<SimpleTransactionViewerParams> implements TransactionViewer {
27
- static readonly defaultMoniker = TransactionViewerMoniker
28
- static readonly dependencies = [BlockViewerMoniker]
29
- static readonly monikers = [TransactionViewerMoniker]
30
- moniker = SimpleTransactionViewer.defaultMoniker
31
-
32
- private _blockViewer!: BlockViewer
33
-
34
- protected get blockViewer() {
35
- return this._blockViewer
36
- }
37
-
38
- async byBlockHashAndIndex(blockHash: Hash, transactionIndex: number): Promise<SignedHydratedTransactionWithHashMeta | null> {
39
- return await this.spanAsync('byBlockHashAndIndex', async () => {
40
- assertEx(transactionIndex >= 0, () => 'transactionIndex must be greater than or equal to 0')
41
- try {
42
- const block = await this.blockViewer.blockByHash(blockHash)
43
- if (!block) return null
44
- const blockBoundWitnessIndexes = block[0].payload_schemas.map((schema, index) => schema === BoundWitnessSchema ? index : undefined).filter(exists)
45
- const blockBoundWitnessHashes = new Set(blockBoundWitnessIndexes.map(index => block[0].payload_hashes[index]))
46
- const blockBoundWitnesses = block[1].filter(payload => blockBoundWitnessHashes.has(payload._hash) || blockBoundWitnessHashes.has(payload._dataHash))
47
- const blockTransactionBoundWitnesses = blockBoundWitnesses.filter(isTransactionBoundWitnessWithHashMeta)
48
- const transaction = blockTransactionBoundWitnesses.at(transactionIndex)
49
- if (!transaction) return null
50
- return await this.byHash(transaction._hash)
51
- } catch {
52
- return null
53
- }
54
- }, this.context)
55
- }
56
-
57
- async byBlockNumberAndIndex(blockNumber: XL1BlockNumber, transactionIndex: number): Promise<SignedHydratedTransactionWithHashMeta | null> {
58
- return await this.spanAsync('byBlockNumberAndIndex', async () => {
59
- try {
60
- const block = await this.blockViewer.blockByNumber(blockNumber)
61
- if (!block) return null
62
- return await this.byBlockHashAndIndex(block[0]._hash, transactionIndex)
63
- } catch {
64
- return null
65
- }
66
- }, this.context)
67
- }
68
-
69
- async byHash(transactionHash: Hash): Promise<SignedHydratedTransactionWithHashMeta | null> {
70
- return await this.spanAsync('byHash', async () => {
71
- try {
72
- const transaction = asSignedTransactionBoundWitness(await this.blockViewer.payloadByHash(transactionHash))
73
- if (transaction) {
74
- const payloads = await this.blockViewer.payloadsByHash(transaction.payload_hashes)
75
- return asSignedHydratedTransactionWithHashMeta([transaction, payloads]) ?? null
76
- }
77
- return null
78
- } catch {
79
- return null
80
- }
81
- }, this.context)
82
- }
83
-
84
- override async createHandler(): Promise<void> {
85
- await super.createHandler()
86
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
87
- }
88
-
89
- async transactionByBlockHashAndIndex(blockHash: Hash, transactionIndex: number = 0): Promise<SignedHydratedTransactionWithHashMeta | null> {
90
- return await this.byBlockHashAndIndex(blockHash, transactionIndex)
91
- }
92
-
93
- async transactionByBlockNumberAndIndex(blockNumber: XL1BlockNumber, transactionIndex: number = 0): Promise<SignedHydratedTransactionWithHashMeta | null> {
94
- return await this.byBlockNumberAndIndex(blockNumber, transactionIndex)
95
- }
96
-
97
- async transactionByHash(transactionHash: Hash): Promise<SignedHydratedTransactionWithHashMeta | null> {
98
- return await this.byHash(transactionHash)
99
- }
100
- }
@@ -1 +0,0 @@
1
- export * from './SimpleTransactionViewer.ts'
@@ -1,271 +0,0 @@
1
- import type { Address, Hash } from '@xylabs/sdk-js'
2
- import {
3
- asHash,
4
- assertEx, exists, isDefined,
5
- ZERO_ADDRESS,
6
- } from '@xylabs/sdk-js'
7
- import type { WithHashMeta, WithStorageMeta } from '@xyo-network/sdk-js'
8
- import type {
9
- AccountBalanceConfig,
10
- AccountBalanceHistoryItem,
11
- AccountBalanceViewer,
12
- BlockViewer,
13
- ChainQualification,
14
- ChainQualified,
15
- MapType,
16
- SignedBlockBoundWitnessWithHashMeta, Transfer, XL1BlockNumber, XL1BlockRange,
17
- } from '@xyo-network/xl1-protocol-lib'
18
- import {
19
- AccountBalanceViewerMoniker,
20
- asRange, asXL1BlockNumber, asXL1BlockRange, AttoXL1,
21
- BlockViewerMoniker,
22
- isChainQualifiedHeadConfig,
23
- isChainQualifiedRangeConfig,
24
- StepSizes,
25
- TransferSchema,
26
- } from '@xyo-network/xl1-protocol-lib'
27
- import { Semaphore } from 'async-mutex'
28
-
29
- import { deepCalculateFramesFromRange } from '../../block/index.ts'
30
- import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
31
- import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
32
- import type { BalancesStepSummary, TransfersStepSummary } from '../../summary/index.ts'
33
- import {
34
- balancesSummary,
35
- transfersStepSummaryFromRange,
36
- } from '../../summary/index.ts'
37
-
38
- /** Parameters for SimpleAccountBalanceViewer. */
39
- export interface SimpleAccountBalanceViewerParams extends CreatableProviderParams {
40
- balancesSummaryMap: MapType<string, WithHashMeta<BalancesStepSummary>>
41
- transfersSummaryMap: MapType<string, WithHashMeta<TransfersStepSummary>>
42
- }
43
-
44
- /** SimpleAccountBalanceViewer implementation. */
45
- @creatableProvider()
46
- export class SimpleAccountBalanceViewer extends AbstractCreatableProvider<SimpleAccountBalanceViewerParams> implements AccountBalanceViewer {
47
- static readonly defaultMoniker = AccountBalanceViewerMoniker
48
- static readonly dependencies = [BlockViewerMoniker]
49
- static readonly monikers = [AccountBalanceViewerMoniker]
50
- moniker = SimpleAccountBalanceViewer.defaultMoniker
51
-
52
- private _balanceStepSemaphores = StepSizes.map(() => new Semaphore(20))
53
- private _blockViewer!: BlockViewer
54
- private _transferStepSemaphores = StepSizes.map(() => new Semaphore(20))
55
-
56
- get balancesSummaryMap() {
57
- return this.params.balancesSummaryMap
58
- }
59
-
60
- get blockViewer() {
61
- return this._blockViewer
62
- }
63
-
64
- get transfersSummaryMap() {
65
- return this.params.transfersSummaryMap
66
- }
67
-
68
- static override async paramsHandler(params: Partial<SimpleAccountBalanceViewerParams> = {}) {
69
- return {
70
- ...await super.paramsHandler(params),
71
- balancesSummaryMap: assertEx(params.balancesSummaryMap, () => 'balancesSummaryMap is required'),
72
- transfersSummaryMap: assertEx(params.transfersSummaryMap, () => 'transfersSummaryMap is required'),
73
- }
74
- }
75
-
76
- async accountBalance(address: Address, config?: AccountBalanceConfig) {
77
- const balances = await this.accountBalances([address], config)
78
- return balances[address] ?? AttoXL1(0n)
79
- }
80
-
81
- async accountBalanceHistories(addresses: Address[], config: AccountBalanceConfig = {}) {
82
- return (await this.qualifiedAccountBalanceHistories(addresses, config))[0]
83
- }
84
-
85
- async accountBalanceHistory(address: Address, config?: AccountBalanceConfig) {
86
- return await this.spanAsync('accountBalanceHistory', async () => {
87
- const range = isChainQualifiedRangeConfig(config) ? config.range : undefined
88
- const startingRange = asXL1BlockRange(range ?? [0, await this.blockViewer.currentBlockNumber()], true)
89
- const blockNumbers = await this.distillTransferHistory(address, startingRange)
90
- const blocks = (await Promise.all(blockNumbers.map(async bn => await this.blockViewer.blockByNumber(bn)))).filter(exists)
91
- const result: AccountBalanceHistoryItem[] = []
92
- for (const block of blocks) {
93
- const transferIndexes = block[0].payload_schemas.map((schema, index) => schema === TransferSchema ? index : undefined).filter(exists)
94
- const transfers = transferIndexes.map((index) => {
95
- const hash = block[0].payload_hashes[index]
96
- return assertEx(
97
- block[1].find(p => p._hash === hash) as WithStorageMeta<Transfer>,
98
- () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`,
99
- )
100
- }).filter(exists).filter(t => ((t.from === address) || (isDefined(t.transfers[address]))))
101
- if (transfers.length === 0) {
102
- continue
103
- }
104
- const pairs: [SignedBlockBoundWitnessWithHashMeta, WithHashMeta<Transfer>][] = (transfers.map((transfer) => {
105
- return [block[0], transfer]
106
- }))
107
- result.push(...pairs.map(([block, transfer]) => [block,
108
- null,
109
- transfer] satisfies AccountBalanceHistoryItem))
110
- }
111
- return result
112
- }, this.context)
113
- }
114
-
115
- async accountBalances(address: Address[], config?: AccountBalanceConfig) {
116
- const [result] = (await this.qualifiedAccountBalances(address, config ?? {}))
117
- return result
118
- }
119
-
120
- override async createHandler() {
121
- await super.createHandler()
122
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
123
- }
124
-
125
- async qualifiedAccountBalanceHistories(
126
- addresses: Address[],
127
- config: AccountBalanceConfig,
128
- ) {
129
- return await this.spanAsync('qualifiedAccountBalanceHistories', async () => {
130
- const head = isChainQualifiedHeadConfig(config) ? config.head : await this.blockViewer.currentBlockHash()
131
- const range = isChainQualifiedRangeConfig(config)
132
- ? config.range
133
- : asXL1BlockRange([0,
134
- assertEx(
135
- await this.blockViewer.blockByHash(head),
136
- () => `Error: Could not find block with hash ${head}`,
137
- )[0].block])
138
- const qualifiedEntries = await Promise.all(addresses.map(async address => ([
139
- address,
140
- await this.qualifiedAccountBalanceHistory(address, range),
141
- ]))) satisfies [Address, ChainQualified<AccountBalanceHistoryItem[]>][]
142
-
143
- const entries = qualifiedEntries.map(([address, [history]]) => {
144
- return [address, history]
145
- })
146
- const qualifiedRange = qualifiedEntries[0][1][1].range
147
- const qualifiedHeadHash = qualifiedEntries[0][1][1].head
148
-
149
- // check for drift
150
- for (const [_, [__, { range, head }]] of qualifiedEntries) {
151
- assertEx(
152
- range[0] === qualifiedRange[0] && range[1] === qualifiedRange[1],
153
- () => 'Inconsistent ranges in qualifiedAccountBalanceHistories',
154
- )
155
- assertEx(
156
- head === qualifiedHeadHash,
157
- () => 'Inconsistent head hashes in qualifiedAccountBalanceHistories',
158
- )
159
- }
160
-
161
- return [Object.fromEntries(entries), { range: qualifiedRange, head: qualifiedHeadHash }] satisfies
162
- [Record<Address, AccountBalanceHistoryItem[]>, ChainQualification]
163
- }, this.context)
164
- }
165
-
166
- async qualifiedAccountBalances(
167
- address: Address[],
168
- config: AccountBalanceConfig,
169
- ): Promise<ChainQualified<Record<Address, AttoXL1>>> {
170
- return await this.spanAsync('qualifiedAccountsBalances', async () => {
171
- const qualifiedSummary = await balancesSummary(
172
- this.context,
173
- this._balanceStepSemaphores,
174
- this.blockViewer,
175
- this.balancesSummaryMap,
176
- config,
177
- )
178
- const result: Record<Address, AttoXL1> = {}
179
- for (const addr of address) {
180
- const summaryBalance = qualifiedSummary[0][addr] ?? 0n
181
- result[addr] = AttoXL1(summaryBalance < 0n ? 0n : summaryBalance)
182
- }
183
- return [result, qualifiedSummary[1]]
184
- }, this.context)
185
- }
186
-
187
- override async startHandler() {
188
- await super.startHandler()
189
- await Promise.all([
190
- this.accountBalance(ZERO_ADDRESS),
191
- this.accountBalanceHistory(ZERO_ADDRESS),
192
- ])
193
- }
194
-
195
- private async distillTransferHistory(address: Address, range: XL1BlockRange, max: number = 50): Promise<XL1BlockNumber[]> {
196
- return await this.spanAsync('distillTransferHistory', async () => {
197
- if ((range[1] - range[0]) <= StepSizes[0] || max <= 1) {
198
- return Array.from({ length: range[1] - range[0] + 1 }, (_, i) => range[1] - i).slice(0, max).map(n => asXL1BlockNumber(n, true))
199
- }
200
- const frames = deepCalculateFramesFromRange(asXL1BlockRange(range, true))
201
- const transferSummaryPairs = await Promise.all(frames.map(
202
- async (frame) => {
203
- return [frame, await transfersStepSummaryFromRange(this.context, this._transferStepSemaphores, this.blockViewer, this.transfersSummaryMap, frame)]
204
- },
205
- )) as [XL1BlockRange, WithStorageMeta<TransfersStepSummary>][]
206
-
207
- const filteredTransferSummaryPairs = transferSummaryPairs.filter(([_, summary]) => Object.keys(summary.transfers).includes(address))
208
-
209
- // sort it latest to earliest
210
- const sortedTransferSummaryPairs = filteredTransferSummaryPairs.toSorted((a, b) => {
211
- return b[0][1] - a[0][1]
212
- })
213
-
214
- const resultBlockNumbers: Set<XL1BlockNumber> = new Set()
215
- for (const [frame] of sortedTransferSummaryPairs) {
216
- if ((frame[1] - frame[0] + 1) > StepSizes[0]) {
217
- const values = await this.distillTransferHistory(address, asXL1BlockRange([frame[0], frame[1] - 1], true), max - resultBlockNumbers.size)
218
- for (const value of values) {
219
- resultBlockNumbers.add(value)
220
- }
221
- resultBlockNumbers.add(frame[1])
222
- } else {
223
- for (let i = frame[0]; i <= frame[1]; i++) {
224
- resultBlockNumbers.add(i)
225
- }
226
- }
227
- if (resultBlockNumbers.size >= max) {
228
- break
229
- }
230
- }
231
- return [...resultBlockNumbers].toSorted((a, b) => b - a).slice(0, max)
232
- }, this.context)
233
- }
234
-
235
- private async qualifiedAccountBalanceHistory(
236
- address: Address,
237
- headOrRange?: Hash | XL1BlockRange,
238
- ): Promise<ChainQualified<AccountBalanceHistoryItem[]>> {
239
- return await this.spanAsync('qualifiedAccountBalanceHistory', async () => {
240
- const range = asRange(headOrRange)
241
- const headHash = asHash(headOrRange)
242
- const [head] = assertEx(isDefined(headHash)
243
- ? (await this.blockViewer.blockByHash(headHash))
244
- : (await this.blockViewer.currentBlock()), () => 'Could not resolve head block')
245
- const startingRange = asXL1BlockRange(range ?? [0, head.block], true)
246
- const blockNumbers = await this.distillTransferHistory(address, startingRange)
247
- const blocks = (await Promise.all(blockNumbers.map(async bn => await this.blockViewer.blockByNumber(bn)))).filter(exists)
248
- const result: AccountBalanceHistoryItem[] = []
249
- for (const block of blocks) {
250
- const transferIndexes = block[0].payload_schemas.map((schema, index) => schema === TransferSchema ? index : undefined).filter(exists)
251
- const transfers = transferIndexes.map((index) => {
252
- const hash = block[0].payload_hashes[index]
253
- return assertEx(
254
- block[1].find(p => p._hash === hash) as WithStorageMeta<Transfer>,
255
- () => `Error: Could not find Transfer with hash ${hash} in block ${block[0]._hash}`,
256
- )
257
- }).filter(exists).filter(t => ((t.from === address) || (isDefined(t.transfers[address]))))
258
- if (transfers.length === 0) {
259
- continue
260
- }
261
- const pairs: [SignedBlockBoundWitnessWithHashMeta, WithHashMeta<Transfer>][] = (transfers.map((transfer) => {
262
- return [block[0], transfer]
263
- }))
264
- result.push(...pairs.map(([block, transfer]) => [block,
265
- null,
266
- transfer] satisfies AccountBalanceHistoryItem))
267
- }
268
- return [result, { range: startingRange, head: head._hash }]
269
- }, this.context)
270
- }
271
- }
@@ -1 +0,0 @@
1
- export * from './SimpleAccountBalanceViewer.ts'