@xyo-network/xl1-protocol-sdk 1.17.2 → 1.17.3

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 (187) hide show
  1. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts +6 -0
  2. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts.map +1 -0
  3. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts +42 -0
  4. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts.map +1 -0
  5. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts +12 -0
  6. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts.map +1 -0
  7. package/dist/neutral/CreatableProvider/LabeledCreatableProviderFactory.d.ts +12 -0
  8. package/dist/neutral/CreatableProvider/LabeledCreatableProviderFactory.d.ts.map +1 -0
  9. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts +14 -0
  10. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts.map +1 -0
  11. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts +48 -0
  12. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts.map +1 -0
  13. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts +39 -0
  14. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts.map +1 -0
  15. package/dist/neutral/CreatableProvider/index.d.ts +8 -0
  16. package/dist/neutral/CreatableProvider/index.d.ts.map +1 -0
  17. package/dist/neutral/block/hydrate/flattenHydratedBlock.d.ts +3 -1
  18. package/dist/neutral/block/hydrate/flattenHydratedBlock.d.ts.map +1 -1
  19. package/dist/neutral/config/Bridge.d.ts +27 -0
  20. package/dist/neutral/config/Bridge.d.ts.map +1 -1
  21. package/dist/neutral/config/Config.d.ts +12 -0
  22. package/dist/neutral/config/Config.d.ts.map +1 -1
  23. package/dist/neutral/config/index.d.ts +1 -0
  24. package/dist/neutral/config/index.d.ts.map +1 -1
  25. package/dist/neutral/index.d.ts +1 -0
  26. package/dist/neutral/index.d.ts.map +1 -1
  27. package/dist/neutral/index.mjs +749 -212
  28. package/dist/neutral/index.mjs.map +1 -1
  29. package/dist/neutral/map/AsyncMap.d.ts +36 -0
  30. package/dist/neutral/map/AsyncMap.d.ts.map +1 -0
  31. package/dist/neutral/map/MapType.d.ts +8 -7
  32. package/dist/neutral/map/MapType.d.ts.map +1 -1
  33. package/dist/neutral/map/SyncMap.d.ts +35 -0
  34. package/dist/neutral/map/SyncMap.d.ts.map +1 -0
  35. package/dist/neutral/map/index.d.ts +2 -2
  36. package/dist/neutral/map/index.d.ts.map +1 -1
  37. package/dist/neutral/model/Provider.d.ts +8 -0
  38. package/dist/neutral/model/Provider.d.ts.map +1 -0
  39. package/dist/neutral/model/index.d.ts +1 -0
  40. package/dist/neutral/model/index.d.ts.map +1 -1
  41. package/dist/neutral/primitives/rewardFromBlockNumber.d.ts.map +1 -1
  42. package/dist/neutral/provider/DataLake.d.ts +5 -1
  43. package/dist/neutral/provider/DataLake.d.ts.map +1 -1
  44. package/dist/neutral/provider/viewer/NetworkStake/NetworkStakeViewer.d.ts +4 -1
  45. package/dist/neutral/provider/viewer/NetworkStake/NetworkStakeViewer.d.ts.map +1 -1
  46. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByPositionViewer.d.ts +4 -1
  47. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByPositionViewer.d.ts.map +1 -1
  48. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByStakerViewer.d.ts +4 -1
  49. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByStakerViewer.d.ts.map +1 -1
  50. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByStepViewer.d.ts +4 -1
  51. package/dist/neutral/provider/viewer/NetworkStake/Rewards/ByStepViewer.d.ts.map +1 -1
  52. package/dist/neutral/provider/viewer/NetworkStake/Rewards/TotalViewer.d.ts +4 -1
  53. package/dist/neutral/provider/viewer/NetworkStake/Rewards/TotalViewer.d.ts.map +1 -1
  54. package/dist/neutral/provider/viewer/NetworkStake/Rewards/Viewer.d.ts +4 -1
  55. package/dist/neutral/provider/viewer/NetworkStake/Rewards/Viewer.d.ts.map +1 -1
  56. package/dist/neutral/provider/viewer/XyoViewer.d.ts +6 -3
  57. package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
  58. package/dist/neutral/services/Chain/ChainService.d.ts +1 -1
  59. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
  60. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +11 -5
  61. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
  62. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +12 -6
  63. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
  64. package/dist/neutral/simple/blockReward/SimpleBlockRewardViewer.d.ts +7 -3
  65. package/dist/neutral/simple/blockReward/SimpleBlockRewardViewer.d.ts.map +1 -1
  66. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts +6 -3
  67. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts.map +1 -1
  68. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts +6 -3
  69. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +1 -1
  70. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts +6 -3
  71. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +1 -1
  72. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts +18 -0
  73. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts.map +1 -0
  74. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +8 -7
  75. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts.map +1 -1
  76. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts +7 -15
  77. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts.map +1 -1
  78. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts +7 -4
  79. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts.map +1 -1
  80. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts +13 -5
  81. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +1 -1
  82. package/dist/neutral/summary/primitives/balances/balancesSummary.d.ts.map +1 -1
  83. package/dist/neutral/summary/primitives/schemas/schemasSummary.d.ts.map +1 -1
  84. package/dist/neutral/summary/primitives/transfers/transfersSummary.d.ts.map +1 -1
  85. package/dist/neutral/transaction/hydrateTransaction.d.ts +2 -0
  86. package/dist/neutral/transaction/hydrateTransaction.d.ts.map +1 -1
  87. package/dist/neutral/viewers/AccountBalance.d.ts +4 -3
  88. package/dist/neutral/viewers/AccountBalance.d.ts.map +1 -1
  89. package/dist/neutral/viewers/Block.d.ts +4 -1
  90. package/dist/neutral/viewers/Block.d.ts.map +1 -1
  91. package/dist/neutral/viewers/BlockReward.d.ts +4 -1
  92. package/dist/neutral/viewers/BlockReward.d.ts.map +1 -1
  93. package/dist/neutral/viewers/Chain.d.ts +4 -1
  94. package/dist/neutral/viewers/Chain.d.ts.map +1 -1
  95. package/dist/neutral/viewers/ChainContract.d.ts +4 -1
  96. package/dist/neutral/viewers/ChainContract.d.ts.map +1 -1
  97. package/dist/neutral/viewers/ChainStakeViewer.d.ts +4 -1
  98. package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -1
  99. package/dist/neutral/viewers/Mempool.d.ts +4 -1
  100. package/dist/neutral/viewers/Mempool.d.ts.map +1 -1
  101. package/dist/neutral/viewers/NetworkStakeStepReward.d.ts +6 -1
  102. package/dist/neutral/viewers/NetworkStakeStepReward.d.ts.map +1 -1
  103. package/dist/neutral/viewers/Stake.d.ts +7 -3
  104. package/dist/neutral/viewers/Stake.d.ts.map +1 -1
  105. package/dist/neutral/viewers/StakeEvents.d.ts +4 -1
  106. package/dist/neutral/viewers/StakeEvents.d.ts.map +1 -1
  107. package/dist/neutral/viewers/StakeIntent.d.ts +4 -2
  108. package/dist/neutral/viewers/StakeIntent.d.ts.map +1 -1
  109. package/dist/neutral/viewers/StakeTotals.d.ts +4 -1
  110. package/dist/neutral/viewers/StakeTotals.d.ts.map +1 -1
  111. package/dist/neutral/viewers/StepStake.d.ts +4 -1
  112. package/dist/neutral/viewers/StepStake.d.ts.map +1 -1
  113. package/dist/neutral/viewers/StepViewer.d.ts +4 -2
  114. package/dist/neutral/viewers/StepViewer.d.ts.map +1 -1
  115. package/dist/neutral/viewers/TimeSync.d.ts +4 -1
  116. package/dist/neutral/viewers/TimeSync.d.ts.map +1 -1
  117. package/dist/neutral/viewers/TransferBalance.d.ts +5 -2
  118. package/dist/neutral/viewers/TransferBalance.d.ts.map +1 -1
  119. package/package.json +7 -6
  120. package/src/CreatableProvider/AbstractCreatableProvider.ts +17 -0
  121. package/src/CreatableProvider/CreatableProvider.ts +68 -0
  122. package/src/CreatableProvider/CreatableProviderRegistry.ts +85 -0
  123. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +22 -0
  124. package/src/CreatableProvider/ProviderFactory.ts +59 -0
  125. package/src/CreatableProvider/ProviderFactoryLocator.ts +102 -0
  126. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +47 -0
  127. package/src/CreatableProvider/index.ts +7 -0
  128. package/src/block/hydrate/flattenHydratedBlock.ts +19 -1
  129. package/src/config/Bridge.ts +101 -3
  130. package/src/config/index.ts +1 -0
  131. package/src/index.ts +1 -0
  132. package/src/map/AsyncMap.ts +32 -0
  133. package/src/map/MapType.ts +13 -7
  134. package/src/map/SyncMap.ts +32 -0
  135. package/src/map/index.ts +2 -2
  136. package/src/model/Provider.ts +15 -0
  137. package/src/model/index.ts +1 -0
  138. package/src/payloads/netBalancesForPayloads.ts +1 -1
  139. package/src/payloads/netSchemasForPayloads.ts +1 -1
  140. package/src/payloads/netTransfersForPayloads.ts +1 -1
  141. package/src/primitives/rewardFromBlockNumber.ts +3 -3
  142. package/src/provider/DataLake.ts +7 -1
  143. package/src/provider/viewer/NetworkStake/NetworkStakeViewer.ts +5 -1
  144. package/src/provider/viewer/NetworkStake/Rewards/ByPositionViewer.ts +6 -1
  145. package/src/provider/viewer/NetworkStake/Rewards/ByStakerViewer.ts +7 -1
  146. package/src/provider/viewer/NetworkStake/Rewards/ByStepViewer.ts +6 -1
  147. package/src/provider/viewer/NetworkStake/Rewards/TotalViewer.ts +6 -1
  148. package/src/provider/viewer/NetworkStake/Rewards/Viewer.ts +5 -1
  149. package/src/provider/viewer/XyoViewer.ts +9 -5
  150. package/src/services/Chain/ChainService.ts +1 -1
  151. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +15 -11
  152. package/src/simple/block/SimpleBlockViewer.ts +12 -6
  153. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +12 -8
  154. package/src/simple/chain/SimpleChainViewer.ts +11 -8
  155. package/src/simple/chainStake/SimpleChainStakeViewer.ts +14 -8
  156. package/src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts +12 -7
  157. package/src/simple/datalake/AbstractSimpleDataLake.ts +64 -0
  158. package/src/simple/datalake/SimpleDataLakeRunner.ts +14 -11
  159. package/src/simple/datalake/SimpleDataLakeViewer.ts +15 -48
  160. package/src/simple/mempool/SimpleMempoolViewer.ts +11 -7
  161. package/src/simple/timesync/SimpleTimeSyncViewer.ts +20 -7
  162. package/src/summary/primitives/balances/balancesSummary.ts +3 -2
  163. package/src/summary/primitives/schemas/schemasSummary.ts +1 -2
  164. package/src/summary/primitives/transfers/transfersSummary.ts +3 -2
  165. package/src/transaction/hydrateTransaction.ts +18 -1
  166. package/src/viewers/AccountBalance.ts +8 -2
  167. package/src/viewers/Block.ts +6 -1
  168. package/src/viewers/BlockReward.ts +6 -1
  169. package/src/viewers/Chain.ts +6 -1
  170. package/src/viewers/ChainContract.ts +6 -1
  171. package/src/viewers/ChainStakeViewer.ts +6 -1
  172. package/src/viewers/Mempool.ts +6 -1
  173. package/src/viewers/NetworkStakeStepReward.ts +8 -1
  174. package/src/viewers/Stake.ts +9 -3
  175. package/src/viewers/StakeEvents.ts +6 -1
  176. package/src/viewers/StakeIntent.ts +5 -2
  177. package/src/viewers/StakeTotals.ts +6 -1
  178. package/src/viewers/StepStake.ts +6 -1
  179. package/src/viewers/StepViewer.ts +5 -2
  180. package/src/viewers/TimeSync.ts +6 -1
  181. package/src/viewers/TransferBalance.ts +7 -2
  182. package/dist/neutral/map/AsynchronousMap.d.ts +0 -15
  183. package/dist/neutral/map/AsynchronousMap.d.ts.map +0 -1
  184. package/dist/neutral/map/SynchronousMap.d.ts +0 -14
  185. package/dist/neutral/map/SynchronousMap.d.ts.map +0 -1
  186. package/src/map/AsynchronousMap.ts +0 -16
  187. package/src/map/SynchronousMap.ts +0 -14
@@ -1,25 +1,31 @@
1
1
  import {
2
2
  type Address, asAddress, toAddress,
3
3
  } from '@xylabs/sdk-js'
4
- import {
5
- AbstractCreatable, assertEx,
6
- creatable, CreatableParams,
7
- } from '@xylabs/sdk-js'
4
+ import { assertEx } from '@xylabs/sdk-js'
8
5
  import { Account } from '@xyo-network/account'
9
6
 
7
+ import {
8
+ AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
9
+ } from '../../CreatableProvider/index.ts'
10
10
  import { PayloadMap, Position } from '../../model/index.ts'
11
- import { StakeEventsViewer, StakeViewer } from '../../viewers/index.ts'
11
+ import {
12
+ StakeEventsViewer, StakeViewer, StakeViewerMoniker,
13
+ } from '../../viewers/index.ts'
12
14
  import { SimpleChainStakeEventsViewer } from '../chainStakeEvents/index.ts'
13
15
 
14
- export interface SimpleChainStakeParams extends CreatableParams {
16
+ export interface SimpleChainStakeParams extends CreatableProviderParams {
15
17
  chainId?: Address
16
18
  chainMap: PayloadMap
17
19
  minWithdrawalBlocks?: number
18
20
  positions: Position[]
19
21
  }
20
22
 
21
- @creatable()
22
- export class SimpleChainStakeViewer extends AbstractCreatable<SimpleChainStakeParams> implements StakeViewer {
23
+ @creatableProvider()
24
+ export class SimpleChainStakeViewer extends AbstractCreatableProvider<SimpleChainStakeParams> implements StakeViewer {
25
+ static readonly defaultMoniker = StakeViewerMoniker
26
+ static readonly monikers = [StakeViewerMoniker]
27
+ moniker = SimpleChainStakeViewer.defaultMoniker
28
+
23
29
  private _chainId: Address | undefined
24
30
  private _chainStakeEventsViewer: StakeEventsViewer | undefined
25
31
 
@@ -1,19 +1,24 @@
1
- import {
2
- AbstractCreatable,
3
- creatable, CreatableParams, isDefined,
4
- } from '@xylabs/sdk-js'
1
+ import { isDefined } from '@xylabs/sdk-js'
5
2
 
3
+ import {
4
+ AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
5
+ } from '../../CreatableProvider/index.ts'
6
6
  import { Position } from '../../model/index.ts'
7
7
  import {
8
8
  StakeEvent, StakeEventFilter, StakeEventName, StakeEventsViewer,
9
+ StakeEventsViewerMoniker,
9
10
  } from '../../viewers/index.ts'
10
11
 
11
- export interface SimpleChainStakeEventsParams extends CreatableParams {
12
+ export interface SimpleChainStakeEventsParams extends CreatableProviderParams {
12
13
  positions: Position[]
13
14
  }
14
15
 
15
- @creatable()
16
- export class SimpleChainStakeEventsViewer extends AbstractCreatable<SimpleChainStakeEventsParams> implements StakeEventsViewer {
16
+ @creatableProvider()
17
+ export class SimpleChainStakeEventsViewer extends AbstractCreatableProvider<SimpleChainStakeEventsParams> implements StakeEventsViewer {
18
+ static readonly defaultMoniker = StakeEventsViewerMoniker
19
+ static readonly monikers = [StakeEventsViewerMoniker]
20
+ moniker = SimpleChainStakeEventsViewer.defaultMoniker
21
+
17
22
  protected get positions() {
18
23
  return this.params.positions
19
24
  }
@@ -0,0 +1,64 @@
1
+ import type { Hash } from '@xylabs/sdk-js'
2
+ import { isAnyPayload, type Schema } from '@xyo-network/payload-model'
3
+
4
+ import { AbstractCreatableProvider, type CreatableProviderParams } from '../../CreatableProvider/index.ts'
5
+ import type { MapTypeRead, MapTypeWrite } from '../../map/index.ts'
6
+ import { type DataLakeData } from '../../provider/index.ts'
7
+
8
+ export interface AbstractSimpleDataLakeParams<TMap extends
9
+ MapTypeRead<Hash, DataLakeData> | MapTypeWrite<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData> | MapTypeWrite<Hash, DataLakeData>> extends
10
+ CreatableProviderParams {
11
+
12
+ allowedSchemas?: Schema[]
13
+ disallowedSchemas?: Schema[]
14
+ map: TMap
15
+ }
16
+
17
+ export class AbstractSimpleDataLake<TParams extends AbstractSimpleDataLakeParams = AbstractSimpleDataLakeParams> extends AbstractCreatableProvider<TParams> {
18
+ get allowedSchemas(): Schema[] | undefined {
19
+ return this.params.allowedSchemas
20
+ }
21
+
22
+ get disallowedSchemas(): Schema[] | undefined {
23
+ return this.params.disallowedSchemas
24
+ }
25
+
26
+ protected get map(): TParams['map'] {
27
+ return this.params.map
28
+ }
29
+
30
+ // async get(hash: Hash): Promise<DataLakeData | undefined> {
31
+ // const result = await this.map.get(hash)
32
+ // return this.isAllowed(result) ? result : undefined
33
+ // }
34
+
35
+ // async getMany(hashes: Hash[]): Promise<DataLakeData[]> {
36
+ // const result = await this.map.getMany(hashes)
37
+ // return result.filter(data => this.isAllowed(data))
38
+ // }
39
+
40
+ // async has(hash: Hash): Promise<boolean> {
41
+ // const value = await this.get(hash)
42
+ // if (isAnyPayload(value)) {
43
+ // return this.isAllowed(value)
44
+ // }
45
+ // return value !== undefined
46
+ // }
47
+
48
+ protected isAllowed(value: DataLakeData | undefined): boolean {
49
+ if (isAnyPayload(value)) {
50
+ return this.isAllowedSchema(value.schema)
51
+ }
52
+ return true
53
+ }
54
+
55
+ protected isAllowedSchema(schema: Schema): boolean {
56
+ if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {
57
+ return false
58
+ }
59
+ if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {
60
+ return false
61
+ }
62
+ return true
63
+ }
64
+ }
@@ -1,19 +1,22 @@
1
1
  import type { Hash } from '@xylabs/sdk-js'
2
2
 
3
- import type { MapType } from '../../map/index.ts'
4
- import type {
5
- DataLakeData,
6
- DataLakeRunner,
3
+ import { creatableProvider } from '../../CreatableProvider/index.ts'
4
+ import type { MapTypeWrite } from '../../map/index.ts'
5
+ import {
6
+ type DataLakeData,
7
+ type DataLakeRunner,
8
+ DataLakeRunnerMoniker,
7
9
  } from '../../provider/index.ts'
8
- import type { DataLakeViewerParams } from './SimpleDataLakeViewer.ts'
9
- import { SimpleDataLakeViewer } from './SimpleDataLakeViewer.ts'
10
+ import { AbstractSimpleDataLake, AbstractSimpleDataLakeParams } from './AbstractSimpleDataLake.ts'
10
11
 
11
- export interface DataLakeRunnerParams extends DataLakeViewerParams<MapType<Hash, DataLakeData>> {}
12
+ export interface DataLakeRunnerParams extends AbstractSimpleDataLakeParams<MapTypeWrite<Hash, DataLakeData>> {}
12
13
 
13
- export class SimpleDataLakeRunner<TParams extends DataLakeRunnerParams> extends SimpleDataLakeViewer<MapType<Hash, DataLakeData>> implements DataLakeRunner {
14
- constructor(params: TParams) {
15
- super(params)
16
- }
14
+ @creatableProvider()
15
+ export class SimpleDataLakeRunner<TParams extends DataLakeRunnerParams> extends
16
+ AbstractSimpleDataLake<TParams> implements DataLakeRunner {
17
+ static readonly defaultMoniker = DataLakeRunnerMoniker
18
+ static readonly monikers = [DataLakeRunnerMoniker]
19
+ moniker = SimpleDataLakeRunner.defaultMoniker
17
20
 
18
21
  async clear(): Promise<void> {
19
22
  await this.map.clear()
@@ -1,41 +1,25 @@
1
1
  import type { Hash } from '@xylabs/sdk-js'
2
- import { isAnyPayload, type Schema } from '@xyo-network/payload-model'
2
+ import { isAnyPayload } from '@xyo-network/payload-model'
3
3
 
4
+ import { creatableProvider } from '../../CreatableProvider/index.ts'
4
5
  import type { MapTypeRead } from '../../map/index.ts'
5
- import type {
6
- DataLakeData,
7
- DataLakeViewer,
6
+ import {
7
+ type DataLakeData,
8
+ type DataLakeViewer,
9
+ DataLakeViewerMoniker,
8
10
  } from '../../provider/index.ts'
11
+ import { AbstractSimpleDataLake, AbstractSimpleDataLakeParams } from './AbstractSimpleDataLake.ts'
9
12
 
10
- export interface DataLakeViewerParams<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>> {
11
- allowedSchemas?: Schema[]
12
- disallowedSchemas?: Schema[]
13
- map: TMap
13
+ export interface DataLakeViewerParams<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>> extends
14
+ AbstractSimpleDataLakeParams<TMap> {
14
15
  }
15
16
 
16
- export class SimpleDataLakeViewer<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>,
17
- TParams extends DataLakeViewerParams<TMap> = DataLakeViewerParams<TMap>> implements DataLakeViewer {
18
- private readonly _params: TParams
19
-
20
- constructor(params: TParams) {
21
- this._params = params
22
- }
23
-
24
- get allowedSchemas(): Schema[] | undefined {
25
- return this._params.allowedSchemas
26
- }
27
-
28
- get disallowedSchemas(): Schema[] | undefined {
29
- return this._params.disallowedSchemas
30
- }
31
-
32
- protected get map(): TMap {
33
- return this._params.map
34
- }
35
-
36
- protected get params() {
37
- return this._params
38
- }
17
+ @creatableProvider()
18
+ export class SimpleDataLakeViewer<TParams extends DataLakeViewerParams = DataLakeViewerParams>
19
+ extends AbstractSimpleDataLake<TParams> implements DataLakeViewer {
20
+ static readonly defaultMoniker = DataLakeViewerMoniker
21
+ static readonly monikers = [DataLakeViewerMoniker]
22
+ moniker = SimpleDataLakeViewer.defaultMoniker
39
23
 
40
24
  async get(hash: Hash): Promise<DataLakeData | undefined> {
41
25
  const result = await this.map.get(hash)
@@ -54,21 +38,4 @@ export class SimpleDataLakeViewer<TMap extends MapTypeRead<Hash, DataLakeData> =
54
38
  }
55
39
  return value !== undefined
56
40
  }
57
-
58
- protected isAllowed(value: DataLakeData | undefined): boolean {
59
- if (isAnyPayload(value)) {
60
- return this.isAllowedSchema(value.schema)
61
- }
62
- return true
63
- }
64
-
65
- protected isAllowedSchema(schema: Schema): boolean {
66
- if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {
67
- return false
68
- }
69
- if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {
70
- return false
71
- }
72
- return true
73
- }
74
41
  }
@@ -1,7 +1,5 @@
1
1
  import {
2
- AbstractCreatable,
3
2
  creatable,
4
- CreatableParams,
5
3
  exists, isDefined, isHash,
6
4
  } from '@xylabs/sdk-js'
7
5
  import type { ArchivistInstance } from '@xyo-network/archivist-model'
@@ -10,19 +8,25 @@ import {
10
8
  } from '@xyo-network/payload-model'
11
9
  import type { SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta } from '@xyo-network/xl1-protocol'
12
10
 
11
+ import { AbstractCreatableProvider, CreatableProviderParams } from '../../CreatableProvider/index.ts'
13
12
  import { bundledPayloadToHydratedBlock, bundledPayloadToHydratedTransaction } from '../../model/index.ts'
14
- import type {
15
- MempoolViewer,
16
- PendingTransactionsOptions,
13
+ import {
14
+ type MempoolViewer,
15
+ MempoolViewerMoniker,
16
+ type PendingTransactionsOptions,
17
17
  } from '../../viewers/index.ts'
18
18
 
19
- export interface SimpleMempoolViewerParams extends CreatableParams {
19
+ export interface SimpleMempoolViewerParams extends CreatableProviderParams {
20
20
  pendingBlocksArchivist: ArchivistInstance
21
21
  pendingTransactionsArchivist: ArchivistInstance
22
22
  }
23
23
 
24
24
  @creatable()
25
- export class SimpleMempoolViewer extends AbstractCreatable<SimpleMempoolViewerParams> implements MempoolViewer {
25
+ export class SimpleMempoolViewer extends AbstractCreatableProvider<SimpleMempoolViewerParams> implements MempoolViewer {
26
+ static readonly defaultMoniker = MempoolViewerMoniker
27
+ static readonly monikers = [MempoolViewerMoniker]
28
+ moniker = SimpleMempoolViewer.defaultMoniker
29
+
26
30
  protected get pendingBlocksArchivist() {
27
31
  return this.params.pendingBlocksArchivist
28
32
  }
@@ -8,15 +8,28 @@ import {
8
8
  } from '@xyo-network/xl1-protocol'
9
9
  import type { Provider } from 'ethers'
10
10
 
11
- import type { BlockViewer, TimeSyncViewer } from '../../viewers/index.ts'
11
+ import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
12
+ import { AbstractCreatableProvider } from '../../CreatableProvider/index.ts'
13
+ import {
14
+ type BlockViewer, type TimeSyncViewer, TimeSyncViewerMoniker,
15
+ } from '../../viewers/index.ts'
16
+
17
+ export interface SimpleTimeSyncViewerParams extends CreatableProviderParams {
18
+ blockViewer: BlockViewer
19
+ ethProvider?: Provider
20
+ }
12
21
 
13
- export class SimpleTimeSyncViewer implements TimeSyncViewer {
14
- protected readonly blockViewer: BlockViewer
15
- protected readonly ethProvider?: Provider
22
+ export class SimpleTimeSyncViewer extends AbstractCreatableProvider<SimpleTimeSyncViewerParams> implements TimeSyncViewer {
23
+ static readonly defaultMoniker = TimeSyncViewerMoniker
24
+ static readonly monikers = [TimeSyncViewerMoniker]
25
+ moniker = SimpleTimeSyncViewer.defaultMoniker
26
+
27
+ protected get blockViewer() {
28
+ return this.params.blockViewer
29
+ }
16
30
 
17
- constructor(blockViewer: BlockViewer, ethProvider?: Provider) {
18
- this.blockViewer = blockViewer
19
- this.ethProvider = ethProvider
31
+ protected get ethProvider() {
32
+ return this.params.ethProvider
20
33
  }
21
34
 
22
35
  async convertTime(fromDomain: TimeDomain, toDomain: TimeDomain, from: number): Promise<number> {
@@ -1,6 +1,7 @@
1
1
  import type { Address } from '@xylabs/sdk-js'
2
- import { asAddress, isDefined } from '@xylabs/sdk-js'
3
- import { spanRootAsync } from '@xylabs/telemetry'
2
+ import {
3
+ asAddress, isDefined, spanRootAsync,
4
+ } from '@xylabs/sdk-js'
4
5
  import {
5
6
  asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
6
7
  } from '@xyo-network/xl1-protocol'
@@ -1,5 +1,4 @@
1
- import { isDefined } from '@xylabs/sdk-js'
2
- import { spanRootAsync } from '@xylabs/telemetry'
1
+ import { isDefined, spanRootAsync } from '@xylabs/sdk-js'
3
2
  import type { Schema } from '@xyo-network/payload-model'
4
3
  import {
5
4
  asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
@@ -1,6 +1,7 @@
1
1
  import type { Address, Hash } from '@xylabs/sdk-js'
2
- import { asAddress, isDefined } from '@xylabs/sdk-js'
3
- import { spanRootAsync } from '@xylabs/telemetry'
2
+ import {
3
+ asAddress, isDefined, spanRootAsync,
4
+ } from '@xylabs/sdk-js'
4
5
  import {
5
6
  asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
6
7
  } from '@xyo-network/xl1-protocol'
@@ -6,7 +6,9 @@ import type {
6
6
  AllowedBlockPayload, SignedHydratedTransaction,
7
7
  SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness,
8
8
  } from '@xyo-network/xl1-protocol'
9
- import { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'
9
+ import {
10
+ asSignedHydratedBlock, asSignedHydratedTransaction, isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta,
11
+ } from '@xyo-network/xl1-protocol'
10
12
 
11
13
  import type { ChainStoreRead } from '../model/index.ts'
12
14
 
@@ -51,6 +53,21 @@ export const flattenHydratedTransaction = (hydratedTransaction: SignedHydratedTr
51
53
  return [...txPayloads, tx]
52
54
  }
53
55
 
56
+ export const tryUnflattenHydratedTransaction = (
57
+ flattened: Payload[],
58
+ ): SignedHydratedTransaction | undefined => {
59
+ // Last element is always the transaction bound witness
60
+ const tx = flattened.at(-1)
61
+
62
+ // Everything else is a payloads
63
+ const txPayloads = flattened.slice(0, -1)
64
+
65
+ return asSignedHydratedTransaction([tx, txPayloads])
66
+ }
67
+
68
+ export const unflattenHydratedTransaction = (flattened: Payload[]): SignedHydratedTransaction =>
69
+ asSignedHydratedTransaction(tryUnflattenHydratedTransaction(flattened), true)
70
+
54
71
  export const flattenHydratedTransactions = (hydratedTransactions: SignedHydratedTransaction[]): Payload[] =>
55
72
  hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))
56
73
 
@@ -10,7 +10,10 @@ import {
10
10
  import { BlockBoundWitnessZod, TransactionBoundWitnessZod } from '@xyo-network/xl1-protocol'
11
11
  import z from 'zod'
12
12
 
13
- import type { Qualified } from '../model/index.ts'
13
+ import type {
14
+ Provider,
15
+ Qualified,
16
+ } from '../model/index.ts'
14
17
 
15
18
  export const AccountBalanceHistoryItemZod = z.tuple([
16
19
  WithHashMetaZod(BlockBoundWitnessZod),
@@ -28,9 +31,12 @@ export interface AccountBalanceViewerMethods {
28
31
  qualifiedAccountBalances(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Qualified<Record<Address, AttoXL1>>>
29
32
  }
30
33
 
31
- export interface AccountBalanceViewer extends AccountBalanceViewerMethods {
34
+ export interface AccountBalanceViewer extends AccountBalanceViewerMethods, Provider<AccountBalanceViewerMoniker> {
32
35
  accountBalance(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AttoXL1>
33
36
  accountBalanceHistories(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Record<Address, AccountBalanceHistoryItem[]>>
34
37
  accountBalanceHistory(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AccountBalanceHistoryItem[]>
35
38
  accountBalances(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Record<Address, AttoXL1>>
36
39
  }
40
+
41
+ export const AccountBalanceViewerMoniker = 'AccountBalanceViewer' as const
42
+ export type AccountBalanceViewerMoniker = typeof AccountBalanceViewerMoniker
@@ -2,6 +2,8 @@ import type { Hash, Promisable } from '@xylabs/sdk-js'
2
2
  import type { Payload, WithHashMeta } from '@xyo-network/payload-model'
3
3
  import type { SignedHydratedBlockWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-protocol'
4
4
 
5
+ import type { Provider } from '../model/index.ts'
6
+
5
7
  export interface BlockViewerMethods {
6
8
  blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
7
9
  blocksByNumber(block: XL1BlockNumber, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
@@ -9,7 +11,10 @@ export interface BlockViewerMethods {
9
11
  payloadsByHash(hashes: Hash[]): Promisable<WithHashMeta<Payload>[]>
10
12
  }
11
13
 
12
- export interface BlockViewer extends BlockViewerMethods {
14
+ export const BlockViewerMoniker = 'BlockViewer' as const
15
+ export type BlockViewerMoniker = typeof BlockViewerMoniker
16
+
17
+ export interface BlockViewer extends BlockViewerMethods, Provider<BlockViewerMoniker> {
13
18
  blockByHash(hash: Hash): Promisable<SignedHydratedBlockWithHashMeta | null>
14
19
  blockByNumber(block: XL1BlockNumber): Promisable<SignedHydratedBlockWithHashMeta | null>
15
20
  currentBlockHash(): Promisable<Hash>
@@ -1,9 +1,14 @@
1
1
  import type { Promisable } from '@xylabs/sdk-js'
2
2
  import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
3
3
 
4
+ import type { Provider } from '../model/index.ts'
5
+
4
6
  export interface BlockRewardViewerMethods {
5
7
  // The amount of xl1 to send to the producer from the block reward
6
8
  allowedRewardForBlock(block: XL1BlockNumber): Promisable<AttoXL1>
7
9
  }
8
10
 
9
- export interface BlockRewardViewer extends BlockRewardViewerMethods {}
11
+ export const BlockRewardViewerMoniker = 'BlockRewardViewer' as const
12
+ export type BlockRewardViewerMoniker = typeof BlockRewardViewerMoniker
13
+
14
+ export interface BlockRewardViewer extends BlockRewardViewerMethods, Provider<BlockRewardViewerMoniker> {}
@@ -1,8 +1,13 @@
1
1
  import type { Promisable } from '@xylabs/sdk-js'
2
2
  import type { ChainId } from '@xyo-network/xl1-protocol'
3
3
 
4
+ import type { Provider } from '../model/index.ts'
5
+
4
6
  export interface ChainViewerMethods {
5
7
  chainId(): Promisable<ChainId>
6
8
  }
7
9
 
8
- export interface ChainViewer extends ChainViewerMethods {}
10
+ export const ChainViewerMoniker = 'ChainViewer' as const
11
+ export type ChainViewerMoniker = typeof ChainViewerMoniker
12
+
13
+ export interface ChainViewer extends ChainViewerMethods, Provider<ChainViewerMoniker> {}
@@ -1,5 +1,7 @@
1
1
  import type { Address } from '@xylabs/sdk-js'
2
2
 
3
+ import type { Provider } from '../model/index.ts'
4
+
3
5
  export interface ChainContractViewerMethods {
4
6
  forkedAtBlockNumber(): Promise<bigint>
5
7
  forkedAtHash(): Promise<bigint>
@@ -9,4 +11,7 @@ export interface ChainContractViewerMethods {
9
11
  stakingTokenAddress(): Promise<string>
10
12
  }
11
13
 
12
- export interface ChainContractViewer extends ChainContractViewerMethods {}
14
+ export const ChainContractViewerMoniker = 'ChainContractViewer' as const
15
+ export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker
16
+
17
+ export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {}
@@ -1,7 +1,12 @@
1
+ import type { Provider } from '../model/index.ts'
1
2
  import type { ChainViewer } from './Chain.ts'
2
3
  import type { ChainContractViewer } from './ChainContract.ts'
3
4
  import type { StakeTotalsViewer } from './StakeTotals.ts'
4
5
 
5
- export interface ChainStakeViewer extends ChainContractViewer, StakeTotalsViewer, ChainViewer {
6
+ export const ChainStakeViewerMoniker = 'ChainStakeViewer' as const
7
+ export type ChainStakeViewerMoniker = typeof ChainStakeViewerMoniker
8
+
9
+ export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>,
10
+ Omit<ChainViewer, 'moniker'>, Provider<ChainStakeViewerMoniker> {
6
11
 
7
12
  }
@@ -3,6 +3,8 @@ import type { SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHash
3
3
  import { XL1BlockRangeZod } from '@xyo-network/xl1-protocol'
4
4
  import z from 'zod'
5
5
 
6
+ import type { Provider } from '../model/index.ts'
7
+
6
8
  export const PendingTransactionsOptionsZod = z.object({
7
9
  cursor: HashZod.optional(),
8
10
  limit: z.number().int().positive().optional(),
@@ -24,4 +26,7 @@ export interface MempoolViewerMethods {
24
26
  pendingTransactions(options?: PendingTransactionsOptions): Promise<SignedHydratedTransactionWithHashMeta[]>
25
27
  }
26
28
 
27
- export interface MempoolViewer extends MempoolViewerMethods {}
29
+ export const MempoolViewerMoniker = 'MempoolViewer' as const
30
+ export type MempoolViewerMoniker = typeof MempoolViewerMoniker
31
+
32
+ export interface MempoolViewer extends MempoolViewerMethods, Provider<MempoolViewerMoniker> {}
@@ -1,6 +1,8 @@
1
1
  import type { Address, Promisable } from '@xylabs/sdk-js'
2
2
  import type { StepIdentity, StepIdentityString } from '@xyo-network/xl1-protocol'
3
3
 
4
+ import type { Provider } from '../model/index.ts'
5
+
4
6
  export interface NetworkStakeStepAddressRewardViewerMethods {
5
7
  // the step rewards for a specific network stakers for all of history
6
8
  networkStakeStepRewardAddressHistory(address: Address): Promisable<Record<Address, bigint>>
@@ -32,7 +34,7 @@ export interface NetworkStakeStepRewardPositionViewerMethods {
32
34
  networkStakeStepRewardPotentialPositionLoss(context: StepIdentity, position: number): Promisable<bigint>
33
35
  }
34
36
 
35
- export interface NetworkStakeStepRewardViewer extends
37
+ export interface NetworkStakeStepRewardViewerMethods extends
36
38
  NetworkStakeStepPoolRewardViewerMethods,
37
39
  NetworkStakeStepAddressRewardViewerMethods,
38
40
  NetworkStakeStepRewardPositionViewerMethods
@@ -66,3 +68,8 @@ export interface NetworkStakeStepRewardViewer extends
66
68
  // the total rewards for a given range and step level
67
69
  networkStakeStepRewardsForStepLevel(stepLevel: number, range: [number, number]): Promisable<bigint>
68
70
  }
71
+
72
+ export const NetworkStakeStepRewardViewerMoniker = 'NetworkStakeStepRewardViewer' as const
73
+ export type NetworkStakeStepRewardViewerMoniker = typeof NetworkStakeStepRewardViewerMoniker
74
+
75
+ export interface NetworkStakeStepRewardViewer extends NetworkStakeStepRewardViewerMethods, Provider<NetworkStakeStepRewardViewerMoniker> {}
@@ -1,6 +1,6 @@
1
1
  import type { Address, Promisable } from '@xylabs/sdk-js'
2
2
 
3
- import type { Position } from '../model/index.ts'
3
+ import type { Position, Provider } from '../model/index.ts'
4
4
  import type { StakeEventsViewer } from './StakeEvents.ts'
5
5
 
6
6
  export interface StakeViewerProperties {
@@ -18,7 +18,10 @@ export interface StakeViewerMethods {
18
18
  stakesByStaker(staker: Address): Promisable<Position[]>
19
19
  }
20
20
 
21
- export interface StakeViewer extends StakeViewerMethods, StakeViewerProperties {
21
+ export const StakeViewerMoniker = 'StakeViewer' as const
22
+ export type StakeViewerMoniker = typeof StakeViewerMoniker
23
+
24
+ export interface StakeViewer extends StakeViewerMethods, StakeViewerProperties, Provider<StakeViewerMoniker> {
22
25
  active(time?: number): Promisable<bigint>
23
26
  activeByAddressStaked(address: string, time?: number): Promisable<bigint>
24
27
  activeByStaker(address: string, time?: number): Promisable<bigint>
@@ -28,7 +31,10 @@ export interface StakeViewer extends StakeViewerMethods, StakeViewerProperties {
28
31
  withdrawnByStaker(staker: string, time?: number): Promisable<bigint>
29
32
  }
30
33
 
31
- export interface StakeRunner extends StakeViewer {
34
+ export const StakeRunnerMoniker = 'StakeRunner' as const
35
+ export type StakeRunnerMoniker = typeof StakeRunnerMoniker
36
+
37
+ export interface StakeRunner extends Provider<StakeRunnerMoniker> {
32
38
  addStake(staked: string, amount: bigint): Promise<boolean>
33
39
  removeStake(slot: bigint): Promise<boolean>
34
40
  withdrawStake(slot: bigint): Promise<boolean>
@@ -2,6 +2,8 @@ import type {
2
2
  Address, JsonObject, Promisable,
3
3
  } from '@xylabs/sdk-js'
4
4
 
5
+ import type { Provider } from '../model/index.ts'
6
+
5
7
  export const StakeEventNames = ['StakeAdded', 'StakeRemoved', 'StakeWithdrawn'] as const
6
8
  export type StakeEventName = typeof StakeEventNames[number]
7
9
 
@@ -33,7 +35,10 @@ export interface StakeEvent<TName extends StakeEventName = StakeEventName> exten
33
35
  args: StakeEventArgs
34
36
  }
35
37
 
36
- export interface StakeEventsViewer {
38
+ export const StakeEventsViewerMoniker = 'StakeEventsViewer' as const
39
+ export type StakeEventsViewerMoniker = typeof StakeEventsViewerMoniker
40
+
41
+ export interface StakeEventsViewer extends Provider<StakeEventsViewerMoniker> {
37
42
  positionCount(range: [number, number | 'latest']): Promisable<number>
38
43
  stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], filter?: StakeEventFilter<TName>): Promisable<StakeEvent<TName>[]>
39
44
  }
@@ -3,12 +3,15 @@ import type {
3
3
  } from '@xylabs/sdk-js'
4
4
  import type { ChainStakeIntent, XL1BlockRange } from '@xyo-network/xl1-protocol'
5
5
 
6
- import type { Qualified } from '../model/index.ts'
6
+ import type { Provider, Qualified } from '../model/index.ts'
7
7
 
8
8
  export interface StakeIntentViewerMethods {
9
9
  qualifiedIntentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<Qualified<ChainStakeIntent | null>>
10
10
  }
11
11
 
12
- export interface StakeIntentViewer extends StakeIntentViewerMethods {
12
+ export const StakeIntentViewerMoniker = 'StakeIntentViewer' as const
13
+ export type StakeIntentViewerMoniker = typeof StakeIntentViewerMoniker
14
+
15
+ export interface StakeIntentViewer extends StakeIntentViewerMethods, Provider<StakeIntentViewerMoniker> {
13
16
  intentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<ChainStakeIntent | null>
14
17
  }
@@ -1,5 +1,7 @@
1
1
  import type { Address, Promisable } from '@xylabs/sdk-js'
2
2
 
3
+ import type { Provider } from '../model/index.ts'
4
+
3
5
  export interface StakeTotalsViewerMethods {
4
6
  active(): Promisable<bigint>
5
7
  activeByStaked(staked: Address): Promisable<bigint>
@@ -10,4 +12,7 @@ export interface StakeTotalsViewerMethods {
10
12
  withdrawnByStaker(staker: Address): Promisable<bigint>
11
13
  }
12
14
 
13
- export interface StakeTotalsViewer extends StakeTotalsViewerMethods {}
15
+ export const StakeTotalsViewerMoniker = 'StakeTotalsViewer' as const
16
+ export type StakeTotalsViewerMoniker = typeof StakeTotalsViewerMoniker
17
+
18
+ export interface StakeTotalsViewer extends StakeTotalsViewerMethods, Provider<StakeTotalsViewerMoniker> {}