@xyo-network/xl1-protocol-sdk 1.17.7 → 1.18.0-rc.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.
- package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts +103 -1
- package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts.map +1 -1
- package/dist/neutral/CreatableProvider/CreatableProvider.d.ts +25 -8
- package/dist/neutral/CreatableProvider/CreatableProvider.d.ts.map +1 -1
- package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts.map +1 -1
- package/dist/neutral/CreatableProvider/ProviderFactory.d.ts +11 -3
- package/dist/neutral/CreatableProvider/ProviderFactory.d.ts.map +1 -1
- package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts +19 -13
- package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts.map +1 -1
- package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts +14 -10
- package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts.map +1 -1
- package/dist/neutral/config/Bridge.d.ts +3 -0
- package/dist/neutral/config/Bridge.d.ts.map +1 -1
- package/dist/neutral/config/Chain.d.ts +1 -1
- package/dist/neutral/config/Config.d.ts +6 -3
- package/dist/neutral/config/Config.d.ts.map +1 -1
- package/dist/neutral/config/Log.d.ts +1 -1
- package/dist/neutral/createDeclarationPayload.d.ts +4 -0
- package/dist/neutral/createDeclarationPayload.d.ts.map +1 -0
- package/dist/neutral/createTransferPayload.d.ts +4 -0
- package/dist/neutral/createTransferPayload.d.ts.map +1 -0
- package/dist/neutral/driver/cache/LruCacheMap.d.ts +2 -2
- package/dist/neutral/driver/cache/LruCacheMap.d.ts.map +1 -1
- package/dist/neutral/driver/memory/MemoryMap.d.ts +2 -2
- package/dist/neutral/driver/memory/MemoryMap.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +3 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +1584 -655
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/map/MapType.d.ts +3 -2
- package/dist/neutral/map/MapType.d.ts.map +1 -1
- package/dist/neutral/model/ChainContext/ChainContext.d.ts +4 -4
- package/dist/neutral/model/ChainContext/ChainContext.d.ts.map +1 -1
- package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts +2 -2
- package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts.map +1 -1
- package/dist/neutral/primitives/block/index.d.ts +2 -0
- package/dist/neutral/primitives/block/index.d.ts.map +1 -0
- package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts +3 -0
- package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts.map +1 -0
- package/dist/neutral/primitives/block/range/index.d.ts +2 -0
- package/dist/neutral/primitives/block/range/index.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/index.d.ts +3 -0
- package/dist/neutral/primitives/chain/index.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts +5 -0
- package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/step/index.d.ts +5 -0
- package/dist/neutral/primitives/chain/step/index.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts +4 -0
- package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts +4 -0
- package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts +6 -0
- package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts +5 -0
- package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts +5 -0
- package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts +5 -0
- package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts.map +1 -0
- package/dist/neutral/primitives/chain/time/index.d.ts +4 -0
- package/dist/neutral/primitives/chain/time/index.d.ts.map +1 -0
- package/dist/neutral/primitives/index.d.ts +6 -0
- package/dist/neutral/primitives/index.d.ts.map +1 -1
- package/dist/neutral/primitives/mapToMapType.d.ts +3 -0
- package/dist/neutral/primitives/mapToMapType.d.ts.map +1 -0
- package/dist/neutral/primitives/payload/index.d.ts +2 -0
- package/dist/neutral/primitives/payload/index.d.ts.map +1 -0
- package/dist/neutral/primitives/payload/mergeTransfers.d.ts +4 -0
- package/dist/neutral/primitives/payload/mergeTransfers.d.ts.map +1 -0
- package/dist/neutral/primitives/readPayloadMapFromStore.d.ts +5 -4
- package/dist/neutral/primitives/readPayloadMapFromStore.d.ts.map +1 -1
- package/dist/neutral/primitives/rewards/index.d.ts +2 -0
- package/dist/neutral/primitives/rewards/index.d.ts.map +1 -0
- package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts +5 -0
- package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts +4 -0
- package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts +3 -0
- package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/allStakersForRange.d.ts +4 -0
- package/dist/neutral/primitives/stake/allStakersForRange.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/allStakersForStep.d.ts +6 -0
- package/dist/neutral/primitives/stake/allStakersForStep.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/index.d.ts +7 -0
- package/dist/neutral/primitives/stake/index.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts +3 -0
- package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts +4 -0
- package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts.map +1 -0
- package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts +6 -0
- package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts.map +1 -0
- package/dist/neutral/provider/DataLake.d.ts +10 -9
- package/dist/neutral/provider/DataLake.d.ts.map +1 -1
- package/dist/neutral/provider/XyoConnection.d.ts +4 -1
- package/dist/neutral/provider/XyoConnection.d.ts.map +1 -1
- package/dist/neutral/provider/XyoGatewayRunner.d.ts +3 -3
- package/dist/neutral/provider/XyoGatewayRunner.d.ts.map +1 -1
- package/dist/neutral/provider/XyoRunner.d.ts +5 -2
- package/dist/neutral/provider/XyoRunner.d.ts.map +1 -1
- package/dist/neutral/provider/viewer/XyoViewer.d.ts +9 -8
- package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
- package/dist/neutral/runners/Block.d.ts +7 -2
- package/dist/neutral/runners/Block.d.ts.map +1 -1
- package/dist/neutral/runners/Mempool.d.ts +4 -1
- package/dist/neutral/runners/Mempool.d.ts.map +1 -1
- package/dist/neutral/services/Chain/ChainService.d.ts +2 -2
- package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
- package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +5 -12
- package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
- package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +9 -6
- package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
- package/dist/neutral/simple/chainStake/{SimpleChainStakeViewer.d.ts → SimpleStakeViewer.d.ts} +3 -5
- package/dist/neutral/simple/chainStake/SimpleStakeViewer.d.ts.map +1 -0
- package/dist/neutral/simple/chainStake/index.d.ts +1 -1
- package/dist/neutral/simple/chainStake/index.d.ts.map +1 -1
- package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts +5 -2
- package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts.map +1 -1
- package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +4 -3
- package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts.map +1 -1
- package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts +0 -3
- package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts.map +1 -1
- package/dist/neutral/simple/index.d.ts +1 -0
- package/dist/neutral/simple/index.d.ts.map +1 -1
- package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts +8 -4
- package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts.map +1 -1
- package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts.map +1 -1
- package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts +24 -6
- package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts.map +1 -1
- package/dist/neutral/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.d.ts → stakeEvents/SimpleStakeEventsViewer.d.ts} +3 -3
- package/dist/neutral/simple/stakeEvents/SimpleStakeEventsViewer.d.ts.map +1 -0
- package/dist/neutral/simple/stakeEvents/index.d.ts +2 -0
- package/dist/neutral/simple/stakeEvents/index.d.ts.map +1 -0
- package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts +4 -3
- package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +1 -1
- package/dist/neutral/status/RuntimeStatusMonitor.d.ts +31 -0
- package/dist/neutral/status/RuntimeStatusMonitor.d.ts.map +1 -0
- package/dist/neutral/status/ServiceStatus.d.ts +8 -0
- package/dist/neutral/status/ServiceStatus.d.ts.map +1 -0
- package/dist/neutral/status/index.d.ts +3 -0
- package/dist/neutral/status/index.d.ts.map +1 -0
- package/dist/neutral/summary/model/summary.d.ts +4 -4
- package/dist/neutral/summary/model/summary.d.ts.map +1 -1
- package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts +1 -1
- package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts.map +1 -1
- package/dist/neutral/transaction/TransactionBuilder.d.ts +82 -0
- package/dist/neutral/transaction/TransactionBuilder.d.ts.map +1 -0
- package/dist/neutral/transaction/buildRandomTransaction.d.ts +6 -0
- package/dist/neutral/transaction/buildRandomTransaction.d.ts.map +1 -0
- package/dist/neutral/transaction/index.d.ts +2 -0
- package/dist/neutral/transaction/index.d.ts.map +1 -1
- package/dist/neutral/viewers/Block.d.ts +4 -1
- package/dist/neutral/viewers/Block.d.ts.map +1 -1
- package/dist/neutral/viewers/ChainStakeViewer.d.ts +1 -2
- package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -1
- package/dist/neutral/viewers/Fork.d.ts +0 -1
- package/dist/neutral/viewers/Fork.d.ts.map +1 -1
- package/dist/neutral/viewers/Stake.d.ts +0 -1
- package/dist/neutral/viewers/Stake.d.ts.map +1 -1
- package/dist/neutral/viewers/index.d.ts +0 -1
- package/dist/neutral/viewers/index.d.ts.map +1 -1
- package/package.json +9 -7
- package/src/CreatableProvider/AbstractCreatableProvider.ts +44 -3
- package/src/CreatableProvider/CreatableProvider.ts +36 -9
- package/src/CreatableProvider/CreatableProviderRegistry.ts +9 -5
- package/src/CreatableProvider/ProviderFactory.ts +72 -10
- package/src/CreatableProvider/ProviderFactoryLocator.ts +78 -19
- package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +33 -10
- package/src/config/Bridge.ts +22 -4
- package/src/config/Chain.ts +2 -2
- package/src/createDeclarationPayload.ts +14 -0
- package/src/createTransferPayload.ts +15 -0
- package/src/driver/cache/LruCacheMap.ts +2 -2
- package/src/driver/memory/MemoryMap.ts +2 -2
- package/src/index.ts +3 -0
- package/src/map/MapType.ts +4 -2
- package/src/model/ChainContext/ChainContext.ts +4 -4
- package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +2 -2
- package/src/primitives/block/index.ts +1 -0
- package/src/primitives/block/range/blockRangeSteps.ts +22 -0
- package/src/primitives/block/range/index.ts +1 -0
- package/src/primitives/chain/index.ts +2 -0
- package/src/primitives/chain/step/chainStepRewardAddress.ts +28 -0
- package/src/primitives/chain/step/index.ts +4 -0
- package/src/primitives/chain/step/stepRewardBlock.ts +11 -0
- package/src/primitives/chain/step/stepRewardTotal.ts +45 -0
- package/src/primitives/chain/step/stepsRewardTotal.ts +34 -0
- package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +31 -0
- package/src/primitives/chain/time/externalBlockRangeFromStep.ts +19 -0
- package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +16 -0
- package/src/primitives/chain/time/index.ts +3 -0
- package/src/primitives/index.ts +6 -0
- package/src/primitives/mapToMapType.ts +35 -0
- package/src/primitives/payload/index.ts +1 -0
- package/src/primitives/payload/mergeTransfers.ts +15 -0
- package/src/primitives/readPayloadMapFromStore.ts +38 -8
- package/src/primitives/rewards/index.ts +1 -0
- package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +21 -0
- package/src/primitives/stake/activeStakeAtTimeByAddress.ts +26 -0
- package/src/primitives/stake/activeStakeAtTimeByPosition.ts +24 -0
- package/src/primitives/stake/allStakersForRange.ts +31 -0
- package/src/primitives/stake/allStakersForStep.ts +22 -0
- package/src/primitives/stake/index.ts +6 -0
- package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +14 -0
- package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +17 -0
- package/src/primitives/stake/weightedStakeForRangeByPosition.ts +54 -0
- package/src/provider/DataLake.ts +12 -11
- package/src/provider/XyoConnection.ts +5 -1
- package/src/provider/XyoGatewayRunner.ts +3 -3
- package/src/provider/XyoRunner.ts +6 -2
- package/src/provider/viewer/XyoViewer.ts +9 -8
- package/src/runners/Block.ts +10 -2
- package/src/runners/Mempool.ts +6 -1
- package/src/services/Chain/ChainService.ts +2 -4
- package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +21 -14
- package/src/simple/block/SimpleBlockViewer.ts +47 -14
- package/src/simple/chainStake/{SimpleChainStakeViewer.ts → SimpleStakeViewer.ts} +11 -16
- package/src/simple/chainStake/index.ts +1 -1
- package/src/simple/datalake/AbstractSimpleDataLake.ts +17 -17
- package/src/simple/datalake/SimpleDataLakeRunner.ts +4 -3
- package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -18
- package/src/simple/index.ts +1 -0
- package/src/simple/mempool/SimpleMempoolRunner.ts +13 -8
- package/src/simple/mempool/SimpleMempoolViewer.ts +6 -1
- package/src/simple/runner/SimpleXyoRunner.ts +41 -16
- package/src/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.ts → stakeEvents/SimpleStakeEventsViewer.ts} +5 -5
- package/src/simple/stakeEvents/index.ts +1 -0
- package/src/simple/timesync/SimpleTimeSyncViewer.ts +26 -5
- package/src/status/RuntimeStatusMonitor.ts +117 -0
- package/src/status/ServiceStatus.ts +20 -0
- package/src/status/index.ts +2 -0
- package/src/summary/model/summary.ts +6 -4
- package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +2 -3
- package/src/transaction/TransactionBuilder.ts +162 -0
- package/src/transaction/buildRandomTransaction.ts +36 -0
- package/src/transaction/hydrateTransaction.ts +1 -1
- package/src/transaction/index.ts +2 -0
- package/src/viewers/Block.ts +6 -1
- package/src/viewers/ChainStakeViewer.ts +1 -2
- package/src/viewers/Fork.ts +0 -1
- package/src/viewers/Stake.ts +0 -1
- package/src/viewers/index.ts +0 -1
- package/dist/neutral/simple/chain/SimpleChainViewer.d.ts +0 -15
- package/dist/neutral/simple/chain/SimpleChainViewer.d.ts.map +0 -1
- package/dist/neutral/simple/chain/index.d.ts +0 -2
- package/dist/neutral/simple/chain/index.d.ts.map +0 -1
- package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +0 -1
- package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +0 -1
- package/dist/neutral/simple/chainStakeEvents/index.d.ts +0 -2
- package/dist/neutral/simple/chainStakeEvents/index.d.ts.map +0 -1
- package/dist/neutral/viewers/Chain.d.ts +0 -11
- package/dist/neutral/viewers/Chain.d.ts.map +0 -1
- package/src/simple/chain/SimpleChainViewer.ts +0 -28
- package/src/simple/chain/index.ts +0 -1
- package/src/simple/chainStakeEvents/index.ts +0 -1
- package/src/viewers/Chain.ts +0 -13
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BlockRange, XL1BlockRange } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { BaseContext } from '../../../model/index.ts'
|
|
4
|
+
import type { BlockViewer } from '../../../viewers/index.ts'
|
|
5
|
+
import { externalBlockNumberFromXL1BlockNumber } from './externalBlockNumberFromXL1BlockNumber.ts'
|
|
6
|
+
|
|
7
|
+
export async function externalBlockRangeFromXL1BlockRange(
|
|
8
|
+
context: BaseContext,
|
|
9
|
+
blockViewer: BlockViewer,
|
|
10
|
+
xl1BlockRange: XL1BlockRange,
|
|
11
|
+
externalTimeName: 'ethereum' = 'ethereum',
|
|
12
|
+
): Promise<BlockRange> {
|
|
13
|
+
const start = await externalBlockNumberFromXL1BlockNumber(context, blockViewer, xl1BlockRange[0], externalTimeName)
|
|
14
|
+
const end = await externalBlockNumberFromXL1BlockNumber(context, blockViewer, xl1BlockRange[1], externalTimeName)
|
|
15
|
+
return [start, end]
|
|
16
|
+
}
|
package/src/primitives/index.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
export * from './block/index.ts'
|
|
2
|
+
export * from './chain/index.ts'
|
|
3
|
+
export * from './mapToMapType.ts'
|
|
4
|
+
export * from './payload/index.ts'
|
|
1
5
|
export * from './readPayloadMapFromStore.ts'
|
|
2
6
|
export * from './rewardFromBlockNumber.ts'
|
|
7
|
+
export * from './rewards/index.ts'
|
|
8
|
+
export * from './stake/index.ts'
|
|
3
9
|
export * from './state/index.ts'
|
|
4
10
|
export * from './step/index.ts'
|
|
5
11
|
export * from './timeBudget.ts'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { isDefined } from '@xylabs/sdk-js'
|
|
2
|
+
|
|
3
|
+
import type { SyncIterableMap } from '../map/index.ts'
|
|
4
|
+
|
|
5
|
+
export function mapToMapType<K extends {}, V extends {}>(map: Map<K, V> | SyncIterableMap<K, V>): SyncIterableMap<K, V> {
|
|
6
|
+
return {
|
|
7
|
+
get: (key: K) => map.get(key),
|
|
8
|
+
has: (key: K) => map.has(key),
|
|
9
|
+
set: (key: K, value: V) => {
|
|
10
|
+
map.set(key, value)
|
|
11
|
+
},
|
|
12
|
+
setMany: (entries: [K, V][]) => {
|
|
13
|
+
for (const [key, value] of entries) {
|
|
14
|
+
map.set(key, value)
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
delete: (key: K) => map.delete(key),
|
|
18
|
+
clear: () => map.clear(),
|
|
19
|
+
getMany: (keys: K[]) => {
|
|
20
|
+
const result: V[] = []
|
|
21
|
+
for (const key of keys) {
|
|
22
|
+
const value = map.get(key)
|
|
23
|
+
if (isDefined(value)) {
|
|
24
|
+
result.push(value)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result
|
|
28
|
+
},
|
|
29
|
+
[Symbol.iterator]: function* (): Iterator<[K, V]> {
|
|
30
|
+
for (const entry of map) {
|
|
31
|
+
yield entry
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './mergeTransfers.ts'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Address } from '@xylabs/sdk-js'
|
|
2
|
+
import { hexToBigInt, toAddress } from '@xylabs/sdk-js'
|
|
3
|
+
import type { Transfer } from '@xyo-network/xl1-protocol'
|
|
4
|
+
|
|
5
|
+
export function mergeTransfers(transfers: Transfer[]): Record<Address, Record<Address, bigint>> {
|
|
6
|
+
const result: Record<Address, Record<Address, bigint>> = {}
|
|
7
|
+
for (const transfer of transfers) {
|
|
8
|
+
result[transfer.from] = result[transfer.from] ?? {}
|
|
9
|
+
for (const [to, value] of Object.entries(transfer.transfers)) {
|
|
10
|
+
const typedTo = toAddress(to)
|
|
11
|
+
result[transfer.from][typedTo] = (result[transfer.from][typedTo] ?? 0n) + (hexToBigInt(value))
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return result
|
|
15
|
+
}
|
|
@@ -1,24 +1,54 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/sdk-js'
|
|
2
2
|
import { isDefined } from '@xylabs/sdk-js'
|
|
3
|
-
import type { ReadArchivist } from '@xyo-network/archivist-model'
|
|
4
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
3
|
+
import type { ReadArchivist, ReadWriteArchivist } from '@xyo-network/archivist-model'
|
|
4
|
+
import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
|
|
5
5
|
|
|
6
|
-
import { isReadArchivist } from '../block/index.ts'
|
|
7
|
-
import type { PayloadMapRead } from '../model/index.ts'
|
|
6
|
+
import { isReadArchivist, isReadWriteArchivist } from '../block/index.ts'
|
|
7
|
+
import type { PayloadMap, PayloadMapRead } from '../model/index.ts'
|
|
8
8
|
|
|
9
|
-
export function readPayloadMapFromStore<T extends Payload>(store: ReadArchivist<T> | PayloadMapRead<T
|
|
9
|
+
export function readPayloadMapFromStore<T extends Payload>(store: ReadArchivist<T> | PayloadMapRead<WithStorageMeta<T>>): PayloadMapRead<WithStorageMeta<T>> {
|
|
10
10
|
if (isReadArchivist(store)) {
|
|
11
11
|
return {
|
|
12
|
-
get: async (hash: Hash)
|
|
12
|
+
get: async (hash: Hash) => {
|
|
13
13
|
return (await store.get([hash]))[0]
|
|
14
14
|
},
|
|
15
|
-
getMany: async (hashes: Hash[])
|
|
15
|
+
getMany: async (hashes: Hash[]) => {
|
|
16
16
|
return (await store.get(hashes))
|
|
17
17
|
},
|
|
18
|
-
has: async (hash: Hash)
|
|
18
|
+
has: async (hash: Hash) => {
|
|
19
19
|
return isDefined((await store.get([hash]))[0])
|
|
20
20
|
},
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
return store
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
export function payloadMapFromStore<T extends Payload>(store: ReadWriteArchivist<T> | PayloadMap<WithStorageMeta<T>>): PayloadMap<WithStorageMeta<T>> {
|
|
27
|
+
if (isReadWriteArchivist(store)) {
|
|
28
|
+
return {
|
|
29
|
+
get: async (hash: Hash) => {
|
|
30
|
+
return (await store.get([hash]))[0]
|
|
31
|
+
},
|
|
32
|
+
getMany: async (hashes: Hash[]) => {
|
|
33
|
+
return (await store.get(hashes))
|
|
34
|
+
},
|
|
35
|
+
has: async (hash: Hash) => {
|
|
36
|
+
return isDefined((await store.get([hash]))[0])
|
|
37
|
+
},
|
|
38
|
+
clear: async () => {
|
|
39
|
+
return await store.clear()
|
|
40
|
+
},
|
|
41
|
+
delete: async (id: Hash) => {
|
|
42
|
+
await store.delete([id])
|
|
43
|
+
return true
|
|
44
|
+
},
|
|
45
|
+
set: async (_id: Hash, data: T) => {
|
|
46
|
+
await store.insert([data])
|
|
47
|
+
},
|
|
48
|
+
setMany: async (entries: [Hash, T][]) => {
|
|
49
|
+
await store.insert(entries.map(e => e[1]))
|
|
50
|
+
},
|
|
51
|
+
} satisfies PayloadMap<WithStorageMeta<T>>
|
|
52
|
+
}
|
|
53
|
+
return store
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './networkStakeStepRewardPositionWeight.ts'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type StepIdentity } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { StakedChainContextRead } from '../../model/index.ts'
|
|
4
|
+
import type { BlockViewer } from '../../viewers/Block.ts'
|
|
5
|
+
import { externalBlockRangeFromStep } from '../chain/time/index.ts'
|
|
6
|
+
import { weightedStakeForRangeByPosition } from '../stake/index.ts'
|
|
7
|
+
|
|
8
|
+
export async function networkStakeStepRewardPositionWeight(
|
|
9
|
+
context: StakedChainContextRead,
|
|
10
|
+
blockViewer: BlockViewer,
|
|
11
|
+
stepContext: StepIdentity,
|
|
12
|
+
position: number,
|
|
13
|
+
): Promise<bigint> {
|
|
14
|
+
const result = await weightedStakeForRangeByPosition(
|
|
15
|
+
context,
|
|
16
|
+
blockViewer,
|
|
17
|
+
await externalBlockRangeFromStep(context, blockViewer, stepContext),
|
|
18
|
+
position,
|
|
19
|
+
)
|
|
20
|
+
return result
|
|
21
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Address } from '@xylabs/sdk-js'
|
|
2
|
+
import { isDefined } from '@xylabs/sdk-js'
|
|
3
|
+
|
|
4
|
+
import type { StakeEventsViewer } from '../../viewers/index.ts'
|
|
5
|
+
import { mergedAddRemoveStakeEventsByStaker } from './mergedAddRemoveStakeEventsByStaker.ts'
|
|
6
|
+
|
|
7
|
+
export async function activeStakeAtTimeByAddress(
|
|
8
|
+
chain: StakeEventsViewer,
|
|
9
|
+
staked: Address,
|
|
10
|
+
time: number,
|
|
11
|
+
staker?: Address,
|
|
12
|
+
): Promise<bigint> {
|
|
13
|
+
const stakeEvents = (await mergedAddRemoveStakeEventsByStaker(chain, [0, time], staked, staker)).toSorted((a, b) => a.time - b.time)
|
|
14
|
+
let result = 0n
|
|
15
|
+
for (const event of stakeEvents) {
|
|
16
|
+
if (event.time > time) break
|
|
17
|
+
if (event.args.staked !== staked) continue
|
|
18
|
+
if (isDefined(staker) && (event.args.staker !== staker)) continue
|
|
19
|
+
if (event.name === 'StakeAdded') {
|
|
20
|
+
result += event.args.amount
|
|
21
|
+
} else if (event.name === 'StakeRemoved') {
|
|
22
|
+
result -= event.args.amount
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isUndefined } from '@xylabs/sdk-js'
|
|
2
|
+
|
|
3
|
+
import type { StakeEventsViewer } from '../../viewers/index.ts'
|
|
4
|
+
import { mergedAddRemoveStakeEventsByPosition } from './mergedAddRemoveStakeEventsByPosition.ts'
|
|
5
|
+
|
|
6
|
+
export async function activeStakeAtTimeByPosition(
|
|
7
|
+
chainStakeEvents: StakeEventsViewer,
|
|
8
|
+
externalTime: number,
|
|
9
|
+
position?: number,
|
|
10
|
+
): Promise<bigint> {
|
|
11
|
+
const stakeEvents = (await mergedAddRemoveStakeEventsByPosition(chainStakeEvents, [0, externalTime], position)).toSorted((a, b) => a.time - b.time)
|
|
12
|
+
let result = 0n
|
|
13
|
+
for (const event of stakeEvents) {
|
|
14
|
+
if (event.time > externalTime) break
|
|
15
|
+
if (isUndefined(position) || position === Number(event.args.id)) {
|
|
16
|
+
if (event.name === 'StakeAdded') {
|
|
17
|
+
result += event.args.amount
|
|
18
|
+
} else if (event.name === 'StakeRemoved') {
|
|
19
|
+
result -= event.args.amount
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Address,
|
|
3
|
+
toAddress,
|
|
4
|
+
} from '@xylabs/sdk-js'
|
|
5
|
+
|
|
6
|
+
import type { StakeEventsViewer } from '../../viewers/index.ts'
|
|
7
|
+
import { mergedAddRemoveStakeEventsByStaker } from './mergedAddRemoveStakeEventsByStaker.ts'
|
|
8
|
+
|
|
9
|
+
export async function allStakersForRange(
|
|
10
|
+
chain: StakeEventsViewer,
|
|
11
|
+
externalRange: [number, number],
|
|
12
|
+
staked: Address,
|
|
13
|
+
): Promise<Record<Address, bigint>> {
|
|
14
|
+
const mergedEvents = await mergedAddRemoveStakeEventsByStaker(chain, [0, externalRange[1]], staked)
|
|
15
|
+
const resultWithZeros: Record<Address, bigint> = {}
|
|
16
|
+
for (const event of mergedEvents) {
|
|
17
|
+
const staker = toAddress(event.args.staker)
|
|
18
|
+
resultWithZeros[staker] = resultWithZeros[staker] ?? 0n
|
|
19
|
+
if (event.name === 'StakeAdded') {
|
|
20
|
+
resultWithZeros[staker] += event.args.amount
|
|
21
|
+
} else if (event.name === 'StakeRemoved') {
|
|
22
|
+
resultWithZeros[staker] -= event.args.amount
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const nonZero = Object.entries(resultWithZeros).filter(([, amount]) => amount > 0n).map(([address]) => address)
|
|
26
|
+
const result: Record<Address, bigint> = {}
|
|
27
|
+
for (const address of nonZero) {
|
|
28
|
+
result[toAddress(address)] = resultWithZeros[toAddress(address)]
|
|
29
|
+
}
|
|
30
|
+
return result
|
|
31
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Address } from '@xylabs/sdk-js'
|
|
2
|
+
import type { StepIdentity } from '@xyo-network/xl1-protocol'
|
|
3
|
+
|
|
4
|
+
import type { StakedChainContextRead } from '../../model/index.ts'
|
|
5
|
+
import type { BlockViewer } from '../../viewers/index.ts'
|
|
6
|
+
import { externalBlockRangeFromXL1BlockRange } from '../chain/time/index.ts'
|
|
7
|
+
import { stepBlockRange } from '../step/index.ts'
|
|
8
|
+
import { allStakersForRange } from './allStakersForRange.ts'
|
|
9
|
+
|
|
10
|
+
export async function allStakersForStep(
|
|
11
|
+
context: StakedChainContextRead,
|
|
12
|
+
blockViewer: BlockViewer,
|
|
13
|
+
stepContext: StepIdentity,
|
|
14
|
+
staked: Address,
|
|
15
|
+
): Promise<Record<Address, bigint>> {
|
|
16
|
+
const xl1BlockRange = stepBlockRange(stepContext)
|
|
17
|
+
return await allStakersForRange(
|
|
18
|
+
context.stake.stakeEvents,
|
|
19
|
+
await externalBlockRangeFromXL1BlockRange(context, blockViewer, xl1BlockRange),
|
|
20
|
+
staked,
|
|
21
|
+
)
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './activeStakeAtTimeByAddress.ts'
|
|
2
|
+
export * from './activeStakeAtTimeByPosition.ts'
|
|
3
|
+
export * from './allStakersForRange.ts'
|
|
4
|
+
export * from './allStakersForStep.ts'
|
|
5
|
+
export * from './mergedAddRemoveStakeEventsByPosition.ts'
|
|
6
|
+
export * from './weightedStakeForRangeByPosition.ts'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StakeEvent, StakeEventsViewer } from '../../viewers/index.ts'
|
|
2
|
+
|
|
3
|
+
export async function mergedAddRemoveStakeEventsByPosition(
|
|
4
|
+
chainEvents: StakeEventsViewer,
|
|
5
|
+
range: [number, number],
|
|
6
|
+
position?: number,
|
|
7
|
+
): Promise<(StakeEvent<'StakeAdded'> | StakeEvent<'StakeRemoved'>)[]> {
|
|
8
|
+
const [addedEvents, removedEvents] = await Promise.all([
|
|
9
|
+
chainEvents.stakeEvents(range, { name: 'StakeAdded', args: { id: position } }),
|
|
10
|
+
chainEvents.stakeEvents(range, { name: 'StakeRemoved', args: { id: position } }),
|
|
11
|
+
])
|
|
12
|
+
const result = [...addedEvents, ...removedEvents].toSorted((a, b) => a.time - b.time)
|
|
13
|
+
return result
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Address } from '@xylabs/sdk-js'
|
|
2
|
+
|
|
3
|
+
import type { StakeEvent, StakeEventsViewer } from '../../viewers/index.ts'
|
|
4
|
+
|
|
5
|
+
export async function mergedAddRemoveStakeEventsByStaker(
|
|
6
|
+
chainEvents: StakeEventsViewer,
|
|
7
|
+
range: [number, number],
|
|
8
|
+
staked: Address,
|
|
9
|
+
staker?: Address,
|
|
10
|
+
): Promise<(StakeEvent<'StakeAdded'> | StakeEvent<'StakeRemoved'>)[]> {
|
|
11
|
+
const [addedEvents, removedEvents] = await Promise.all([
|
|
12
|
+
chainEvents.stakeEvents(range, { name: 'StakeAdded', args: { staked, staker } }),
|
|
13
|
+
chainEvents.stakeEvents(range, { name: 'StakeRemoved', args: { staked, staker } }),
|
|
14
|
+
])
|
|
15
|
+
const result = [...addedEvents, ...removedEvents].toSorted((a, b) => a.time - b.time)
|
|
16
|
+
return result
|
|
17
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { isDefined } from '@xylabs/sdk-js'
|
|
2
|
+
import { asBlockNumber, type BlockRange } from '@xyo-network/xl1-protocol'
|
|
3
|
+
|
|
4
|
+
import { type StakedChainContextRead, withContextCacheResponse } from '../../model/index.ts'
|
|
5
|
+
import type { BlockViewer } from '../../viewers/index.ts'
|
|
6
|
+
import { mergedAddRemoveStakeEventsByPosition } from './mergedAddRemoveStakeEventsByPosition.ts'
|
|
7
|
+
|
|
8
|
+
export async function weightedStakeForRangeByPosition(
|
|
9
|
+
context: StakedChainContextRead,
|
|
10
|
+
blockViewer: BlockViewer,
|
|
11
|
+
externalRange: BlockRange, // first to last block of step
|
|
12
|
+
positionId?: number,
|
|
13
|
+
): Promise<bigint> {
|
|
14
|
+
const cacheKey = isDefined(positionId) ? `${externalRange[0]}-${externalRange[1]}-${positionId}` : `${externalRange[0]}-${externalRange[1]}-all`
|
|
15
|
+
return await withContextCacheResponse(context, 'weightedStakeForRangeByPosition', cacheKey, async () => {
|
|
16
|
+
let weightedStakeSum = 0n
|
|
17
|
+
if (isDefined(positionId)) {
|
|
18
|
+
const mergedEvents = (await mergedAddRemoveStakeEventsByPosition(
|
|
19
|
+
context.stake.stakeEvents,
|
|
20
|
+
[0, externalRange[1]],
|
|
21
|
+
positionId,
|
|
22
|
+
)).toSorted((a, b) => a.time - b.time)
|
|
23
|
+
let currentTime = externalRange[0]
|
|
24
|
+
let currentStake = 0n // await activeStakeAtTimeByPosition(chainEvents, pos.staked, currentTime - 1, position)
|
|
25
|
+
for (const event of mergedEvents) {
|
|
26
|
+
if (event.time > currentTime) {
|
|
27
|
+
// Add the weighted stake for the period between the range start or previous event and this event
|
|
28
|
+
weightedStakeSum += currentStake * BigInt(event.time - currentTime)
|
|
29
|
+
}
|
|
30
|
+
if (event.name === 'StakeAdded') {
|
|
31
|
+
currentStake += event.args.amount
|
|
32
|
+
} else if (event.name === 'StakeRemoved') {
|
|
33
|
+
currentStake -= event.args.amount
|
|
34
|
+
}
|
|
35
|
+
// seems that sometimes we get multiple remove events, so ensure stake doesn't go negative
|
|
36
|
+
currentStake = currentStake < 0n ? 0n : currentStake
|
|
37
|
+
currentTime = asBlockNumber(event.time, { name: 'weightedStakeForRangeByPosition' })
|
|
38
|
+
if (currentTime > externalRange[1]) {
|
|
39
|
+
break
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (externalRange[1] > currentTime) {
|
|
43
|
+
// Add the weighted stake for the period between the last event and the end of the range
|
|
44
|
+
weightedStakeSum += currentStake * BigInt(externalRange[1] - currentTime)
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
const positionCount = await context.stake.stakeEvents.positionCount(externalRange)
|
|
48
|
+
for (let pos = 0; pos < positionCount; pos++) {
|
|
49
|
+
weightedStakeSum += await weightedStakeForRangeByPosition(context, blockViewer, externalRange, pos)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return weightedStakeSum
|
|
53
|
+
})
|
|
54
|
+
}
|
package/src/provider/DataLake.ts
CHANGED
|
@@ -2,24 +2,25 @@ import type { Hash } from '@xylabs/sdk-js'
|
|
|
2
2
|
import type { Payload, Schema } from '@xyo-network/payload-model'
|
|
3
3
|
|
|
4
4
|
import type { MapType } from '../map/index.ts'
|
|
5
|
+
import type { Provider } from '../model/index.ts'
|
|
5
6
|
|
|
6
7
|
export type DataLakeData = Payload | ArrayBuffer
|
|
7
8
|
|
|
8
|
-
export type DataLakeViewerMethods = Pick<MapType<Hash, DataLakeData>, 'get' | 'getMany' | 'has'>
|
|
9
|
-
|
|
10
|
-
export interface DataLakeViewer extends DataLakeViewerMethods {
|
|
11
|
-
allowedSchemas?: Schema[]
|
|
12
|
-
disallowedSchemas?: Schema[]
|
|
13
|
-
}
|
|
14
|
-
|
|
15
9
|
export const DataLakeViewerMoniker = 'DataLakeViewer' as const
|
|
16
10
|
export type DataLakeViewerMoniker = typeof DataLakeViewerMoniker
|
|
17
11
|
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
}
|
|
12
|
+
export interface DataLakeViewerMethods extends
|
|
13
|
+
Pick<MapType<Hash, DataLakeData>, 'get' | 'getMany' | 'has'> {}
|
|
21
14
|
|
|
22
|
-
export interface
|
|
15
|
+
export interface DataLakeViewer extends DataLakeViewerMethods, Provider<DataLakeViewerMoniker> {
|
|
16
|
+
allowedSchemas?: Schema[]
|
|
17
|
+
disallowedSchemas?: Schema[]
|
|
18
|
+
}
|
|
23
19
|
|
|
24
20
|
export const DataLakeRunnerMoniker = 'DataLakeRunner' as const
|
|
25
21
|
export type DataLakeRunnerMoniker = typeof DataLakeRunnerMoniker
|
|
22
|
+
|
|
23
|
+
export interface DataLakeRunnerMethods extends Pick<MapType<Hash, DataLakeData>, 'setMany' | 'set' | 'delete' | 'clear'>,
|
|
24
|
+
DataLakeViewerMethods {}
|
|
25
|
+
|
|
26
|
+
export interface DataLakeRunner extends DataLakeRunnerMethods, Provider<DataLakeRunnerMoniker> {}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import type { Provider } from '../model/index.ts'
|
|
1
2
|
import type { DataLakeRunner, DataLakeViewer } from './DataLake.ts'
|
|
2
3
|
import type { NetworkStakeViewer, XyoViewer } from './viewer/index.ts'
|
|
3
4
|
import type { XyoNetwork } from './XyoNetwork.ts'
|
|
4
5
|
import type { XyoRunner } from './XyoRunner.ts'
|
|
5
6
|
|
|
6
|
-
export
|
|
7
|
+
export const XyoConnectionMoniker = 'XyoConnection' as const
|
|
8
|
+
export type XyoConnectionMoniker = typeof XyoConnectionMoniker
|
|
9
|
+
|
|
10
|
+
export interface XyoConnection extends Provider<XyoConnectionMoniker> {
|
|
7
11
|
network?: XyoNetwork
|
|
8
12
|
networkStake?: NetworkStakeViewer
|
|
9
13
|
runner?: XyoRunner
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
Address, Hash,
|
|
2
|
+
Address, Hash, Promisable,
|
|
3
3
|
} from '@xylabs/sdk-js'
|
|
4
4
|
import type { Payload } from '@xyo-network/payload-model'
|
|
5
5
|
import type {
|
|
6
|
-
AllowedBlockPayload, AttoXL1, SignedHydratedTransaction, SignedHydratedTransactionWithHashMeta, TransactionFeesBigInt,
|
|
6
|
+
AllowedBlockPayload, AttoXL1, ChainId, SignedHydratedTransaction, SignedHydratedTransactionWithHashMeta, TransactionFeesBigInt,
|
|
7
7
|
UnsignedHydratedTransaction,
|
|
8
8
|
XL1BlockNumber,
|
|
9
9
|
} from '@xyo-network/xl1-protocol'
|
|
@@ -13,7 +13,7 @@ import type { DataLakeRunner } from './DataLake.ts'
|
|
|
13
13
|
import type { XyoGateway } from './XyoGateway.ts'
|
|
14
14
|
|
|
15
15
|
export interface TransactionOptions {
|
|
16
|
-
chain?:
|
|
16
|
+
chain?: ChainId
|
|
17
17
|
exp?: XL1BlockNumber
|
|
18
18
|
fees?: TransactionFeesBigInt
|
|
19
19
|
from?: Address
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
2
2
|
import type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
3
3
|
|
|
4
|
+
import type { Provider } from '../model/index.ts'
|
|
4
5
|
import type { MempoolRunner } from '../runners/index.ts'
|
|
5
6
|
|
|
6
7
|
export interface XyoRunnerMethods {
|
|
7
8
|
broadcastTransaction(transaction: SignedHydratedTransaction): Promisable<Hash>
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
export
|
|
11
|
-
|
|
11
|
+
export const XyoRunnerMoniker = 'XyoRunner' as const
|
|
12
|
+
export type XyoRunnerMoniker = typeof XyoRunnerMoniker
|
|
13
|
+
|
|
14
|
+
export interface XyoRunner extends XyoRunnerMethods, Provider<XyoRunnerMoniker> {
|
|
15
|
+
mempool: MempoolRunner
|
|
12
16
|
}
|
|
@@ -9,18 +9,18 @@ import type {
|
|
|
9
9
|
AccountBalanceViewer,
|
|
10
10
|
BlockViewer,
|
|
11
11
|
BlockViewerMethods,
|
|
12
|
-
ChainViewerMethods,
|
|
13
12
|
ForkViewerMethods,
|
|
14
13
|
MempoolViewer,
|
|
15
14
|
NetworkStakeStepRewardViewerMethods,
|
|
16
15
|
StakeViewerMethods,
|
|
17
16
|
StepViewer,
|
|
17
|
+
TimeSyncViewer,
|
|
18
18
|
TransactionViewerMethods,
|
|
19
19
|
} from '../../viewers/index.ts'
|
|
20
20
|
import type { NetworkStakeViewer } from './NetworkStake/index.ts'
|
|
21
21
|
|
|
22
22
|
export interface XyoViewerMethods extends
|
|
23
|
-
NetworkStakeStepRewardViewerMethods,
|
|
23
|
+
NetworkStakeStepRewardViewerMethods, BlockViewerMethods,
|
|
24
24
|
TransactionViewerMethods, StakeViewerMethods, ForkViewerMethods {
|
|
25
25
|
accountBalance(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AttoXL1>
|
|
26
26
|
accountBalanceHistory(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AccountBalanceHistoryItem[]>
|
|
@@ -31,11 +31,12 @@ export type XyoViewerMoniker = typeof XyoViewerMoniker
|
|
|
31
31
|
|
|
32
32
|
export interface XyoViewer extends Omit<BlockViewer, 'moniker'>, XyoViewerMethods,
|
|
33
33
|
Omit<StakeViewerMethods, 'moniker'>, Provider<XyoViewerMoniker> {
|
|
34
|
-
account
|
|
35
|
-
balance
|
|
34
|
+
account: {
|
|
35
|
+
balance: AccountBalanceViewer
|
|
36
36
|
}
|
|
37
|
-
block
|
|
38
|
-
mempool
|
|
39
|
-
networkStake
|
|
40
|
-
step
|
|
37
|
+
block: BlockViewer
|
|
38
|
+
mempool: MempoolViewer
|
|
39
|
+
networkStake: NetworkStakeViewer
|
|
40
|
+
step: StepViewer
|
|
41
|
+
time: TimeSyncViewer
|
|
41
42
|
}
|
package/src/runners/Block.ts
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WithHashMeta } from '@xyo-network/payload-model'
|
|
2
|
+
import type {
|
|
3
|
+
BlockBoundWitness, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta,
|
|
4
|
+
} from '@xyo-network/xl1-protocol'
|
|
5
|
+
|
|
6
|
+
import type { Provider } from '../model/index.ts'
|
|
2
7
|
|
|
3
8
|
export interface BlockRunnerMethods {
|
|
4
9
|
produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force: true): Promise<SignedHydratedBlockWithHashMeta>
|
|
5
10
|
produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force?: false): Promise<SignedHydratedBlockWithHashMeta | undefined>
|
|
6
11
|
}
|
|
7
12
|
|
|
8
|
-
export
|
|
13
|
+
export const BlockRunnerMoniker = 'BlockRunner' as const
|
|
14
|
+
export type BlockRunnerMoniker = typeof BlockRunnerMoniker
|
|
9
15
|
|
|
16
|
+
export interface BlockRunner extends BlockRunnerMethods, Provider<BlockRunnerMoniker> {
|
|
17
|
+
next(head: WithHashMeta<BlockBoundWitness>): Promise<SignedHydratedBlockWithHashMeta | undefined>
|
|
10
18
|
}
|
package/src/runners/Mempool.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/sdk-js'
|
|
2
2
|
import type { SignedHydratedBlock, SignedHydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
3
3
|
|
|
4
|
+
import type { Provider } from '../model/index.ts'
|
|
5
|
+
|
|
4
6
|
export interface MempoolRunnerMethods {
|
|
5
7
|
submitBlocks(blocks: SignedHydratedBlock[]): Promise<Hash[]>
|
|
6
8
|
submitTransactions(transactions: SignedHydratedTransaction[]): Promise<Hash[]>
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
11
|
+
export const MempoolRunnerMoniker = 'MempoolRunner' as const
|
|
12
|
+
export type MempoolRunnerMoniker = typeof MempoolRunnerMoniker
|
|
13
|
+
|
|
14
|
+
export interface MempoolRunner extends MempoolRunnerMethods, Provider<MempoolRunnerMoniker> {}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
ChainContractViewer, ChainStakeViewer, ChainViewer,
|
|
3
|
-
} from '../../viewers/index.ts'
|
|
1
|
+
import type { ChainContractViewer, ChainStakeViewer } from '../../viewers/index.ts'
|
|
4
2
|
import type { BaseChainService } from './BaseChainService.ts'
|
|
5
3
|
|
|
6
|
-
export interface ChainService extends Omit<ChainContractViewer, 'moniker'>, Omit<ChainStakeViewer, 'moniker'>,
|
|
4
|
+
export interface ChainService extends Omit<ChainContractViewer, 'moniker'>, Omit<ChainStakeViewer, 'moniker'>, BaseChainService {}
|
|
@@ -16,9 +16,10 @@ import {
|
|
|
16
16
|
import { deepCalculateFramesFromRange } from '../../block/index.ts'
|
|
17
17
|
import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
|
|
18
18
|
import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
|
|
19
|
-
import type {
|
|
19
|
+
import type { Qualified } from '../../model/index.ts'
|
|
20
20
|
import type {
|
|
21
|
-
BalanceStepSummaryContext,
|
|
21
|
+
BalanceStepSummaryContext,
|
|
22
|
+
TransfersStepSummary,
|
|
22
23
|
TransfersStepSummaryContext,
|
|
23
24
|
} from '../../summary/index.ts'
|
|
24
25
|
import {
|
|
@@ -28,11 +29,11 @@ import {
|
|
|
28
29
|
import {
|
|
29
30
|
type AccountBalanceHistoryItem, type AccountBalanceViewer, AccountBalanceViewerMoniker,
|
|
30
31
|
type BlockViewer,
|
|
32
|
+
BlockViewerMoniker,
|
|
31
33
|
} from '../../viewers/index.ts'
|
|
32
34
|
|
|
33
35
|
export interface SimpleAccountBalanceViewerParams extends CreatableProviderParams {
|
|
34
|
-
|
|
35
|
-
context: BalanceStepSummaryContext
|
|
36
|
+
balanceSummaryContext: BalanceStepSummaryContext
|
|
36
37
|
transfersSummaryContext: TransfersStepSummaryContext
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -42,24 +43,25 @@ export class SimpleAccountBalanceViewer extends AbstractCreatableProvider<Simple
|
|
|
42
43
|
static readonly monikers = [AccountBalanceViewerMoniker]
|
|
43
44
|
moniker = SimpleAccountBalanceViewer.defaultMoniker
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
private _blockViewer?: BlockViewer
|
|
47
|
+
|
|
48
|
+
get balanceSummaryContext() {
|
|
49
|
+
return this.params.balanceSummaryContext!
|
|
47
50
|
}
|
|
48
51
|
|
|
49
|
-
get
|
|
50
|
-
return this.
|
|
52
|
+
get blockViewer() {
|
|
53
|
+
return this._blockViewer!
|
|
51
54
|
}
|
|
52
55
|
|
|
53
|
-
get transfersSummaryContext()
|
|
56
|
+
get transfersSummaryContext() {
|
|
54
57
|
return this.params.transfersSummaryContext!
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
static override async paramsHandler(params: Partial<SimpleAccountBalanceViewerParams>) {
|
|
58
|
-
assertEx(params.blockViewer, () => 'blockViewer is required')
|
|
59
|
-
assertEx(params.context, () => 'context is required')
|
|
60
|
+
static override async paramsHandler(params: Partial<SimpleAccountBalanceViewerParams> = {}) {
|
|
60
61
|
assertEx(params.transfersSummaryContext, () => 'transfersSummaryContext is required')
|
|
62
|
+
assertEx(params.balanceSummaryContext, () => 'balanceSummaryContext is required')
|
|
61
63
|
|
|
62
|
-
return
|
|
64
|
+
return await super.paramsHandler({ ...params })
|
|
63
65
|
}
|
|
64
66
|
|
|
65
67
|
async accountBalance(address: Address, headOrRange?: XL1BlockRange | Hash): Promise<AttoXL1> {
|
|
@@ -104,6 +106,11 @@ export class SimpleAccountBalanceViewer extends AbstractCreatableProvider<Simple
|
|
|
104
106
|
return result
|
|
105
107
|
}
|
|
106
108
|
|
|
109
|
+
override async createHandler() {
|
|
110
|
+
await super.createHandler()
|
|
111
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
|
|
112
|
+
}
|
|
113
|
+
|
|
107
114
|
async qualifiedAccountBalanceHistories(
|
|
108
115
|
addresses: Address[],
|
|
109
116
|
headOrRange?: Hash | XL1BlockRange,
|
|
@@ -146,7 +153,7 @@ export class SimpleAccountBalanceViewer extends AbstractCreatableProvider<Simple
|
|
|
146
153
|
): Promise<Qualified<Record<Address, AttoXL1>>> {
|
|
147
154
|
return await spanRootAsync('qualifiedAccountsBalances', async () => {
|
|
148
155
|
const qualifiedSummary = await balancesSummary(
|
|
149
|
-
this.
|
|
156
|
+
this.balanceSummaryContext,
|
|
150
157
|
)
|
|
151
158
|
const result: Record<Address, AttoXL1> = {}
|
|
152
159
|
for (const addr of address) {
|