@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,26 +1,124 @@
1
+ import {
2
+ AddressZod, HexZod, toAddress, toHex,
3
+ } from '@xylabs/hex'
4
+ import type { ChainId } from '@xyo-network/xl1-protocol'
5
+ import { AttoXL1ConvertFactor, XL1 } from '@xyo-network/xl1-protocol'
1
6
  import { globalRegistry } from 'zod'
2
7
  import * as z from 'zod'
3
8
 
4
9
  import { MnemonicStringZod } from '../validation/index.ts'
5
10
 
11
+ const DEFAULT_FIXED_FEE = toHex(XL1(1n) * AttoXL1ConvertFactor.xl1)
12
+ const DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(10n) * AttoXL1ConvertFactor.xl1)
13
+ const DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(100_000n) * AttoXL1ConvertFactor.xl1)
14
+ const DEFAULT_HARDHAT_CHAIN_ID: ChainId = toHex('7A69')
15
+ const DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress('5FbDB2315678afecb367f032d93F642f64180aa3')
16
+ const DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress('2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6')
17
+
18
+ export const BasisPointsZod = z.coerce.number().int().nonnegative().max(10_000)
19
+ export type BasisPoints = z.infer<typeof BasisPointsZod>
20
+
6
21
  export const BridgeConfigZod = z.object({
22
+ chainRpcApiUrl: z.string().default('http://localhost:8080/rpc').register(globalRegistry, {
23
+ default: 'http://localhost:8080/rpc',
24
+ description: 'URL for the Chain RPC API',
25
+ title: 'bridge.chainRpcApiUrl',
26
+ type: 'string',
27
+ }),
28
+ escrowAddress: AddressZod.optional().register(globalRegistry, {
29
+ description: 'Address to which bridge escrow will be sent',
30
+ title: 'bridge.escrowAddress',
31
+ type: 'string',
32
+ }),
33
+ feesAddress: AddressZod.optional().register(globalRegistry, {
34
+ description: 'Address to which bridge fees will be sent',
35
+ title: 'bridge.feesAddress',
36
+ type: 'string',
37
+ }),
38
+ feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry, {
39
+ default: DEFAULT_FIXED_FEE,
40
+ description: 'Fixed fee (in AttoXL1) applied to bridge transfers',
41
+ title: 'bridge.feeFixed',
42
+ type: 'bigint',
43
+ }),
44
+ feeRateBasisPoints: BasisPointsZod.default(500).register(globalRegistry, {
45
+ default: 500,
46
+ description: 'Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers',
47
+ title: 'bridge.feeRateBasisPoints',
48
+ type: 'number',
49
+ }),
7
50
  host: z.string().default('localhost').register(globalRegistry, {
8
51
  default: 'localhost',
9
52
  description: 'Host for the Bridge',
10
- title: 'api.host',
53
+ title: 'bridge.host',
54
+ type: 'string',
55
+ }),
56
+ maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry, {
57
+ default: DEFAULT_MAX_BRIDGE_AMOUNT,
58
+ description: 'Maximum amount allowed for a bridge transfer',
59
+ title: 'bridge.maxBridgeAmount',
60
+ type: 'string',
61
+ }),
62
+ minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry, {
63
+ default: DEFAULT_MIN_BRIDGE_AMOUNT,
64
+ description: 'Minimum amount required for a bridge transfer',
65
+ title: 'bridge.minBridgeAmount',
11
66
  type: 'string',
12
67
  }),
13
68
  mnemonic: MnemonicStringZod.optional().register(globalRegistry, {
14
69
  description: 'Mnemonic for the Bridge wallet',
15
- title: 'api.mnemonic',
70
+ title: 'bridge.mnemonic',
16
71
  type: 'string',
17
72
  }),
18
73
  port: z.coerce.number().default(8081).register(globalRegistry, {
19
74
  default: 8081,
20
75
  description: 'Port for the Bridge',
21
- title: 'api.port',
76
+ title: 'bridge.port',
22
77
  type: 'number',
23
78
  }),
79
+ remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry, {
80
+ default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
81
+ description: 'Hex representation of remote token address used for bridging',
82
+ title: 'bridge.remoteBridgeContractAddress',
83
+ type: 'string',
84
+ }),
85
+ remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry, {
86
+ default: DEFAULT_HARDHAT_CHAIN_ID,
87
+ description: 'Remote chain ID',
88
+ title: 'bridge.remoteChainId',
89
+ type: 'string',
90
+ }),
91
+ remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry, {
92
+ default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
93
+ description: 'Hex representation of remote token address used for bridging',
94
+ title: 'bridge.remoteTokenAddress',
95
+ type: 'string',
96
+ }),
97
+ xl1ChainId: HexZod.optional().register(globalRegistry, {
98
+ description: 'XL1 chain id used for bridging',
99
+ title: 'bridge.xl1ChainId',
100
+ type: 'string',
101
+ }),
102
+ xl1TokenAddress: HexZod.optional().register(globalRegistry, {
103
+ description: 'XL1 token address used for bridging',
104
+ title: 'bridge.xl1TokenAddress',
105
+ type: 'string',
106
+ }),
24
107
  })
25
108
 
26
109
  export type BridgeConfig = z.infer<typeof BridgeConfigZod>
110
+
111
+ export const BridgeSettingsZod = BridgeConfigZod.pick({
112
+ feeFixed: true,
113
+ feeRateBasisPoints: true,
114
+ feesAddress: true,
115
+ escrowAddress: true,
116
+ maxBridgeAmount: true,
117
+ minBridgeAmount: true,
118
+ remoteChainId: true,
119
+ remoteTokenAddress: true,
120
+ xl1TokenAddress: true,
121
+ xl1ChainId: true,
122
+ }).required()
123
+
124
+ export type BridgeSettings = z.infer<typeof BridgeSettingsZod>
@@ -1,3 +1,4 @@
1
+ export * from './Bridge.ts'
1
2
  export * from './Config.ts'
2
3
  export { hasMongoConfig } from './storage/index.ts'
3
4
  export * from './UsageMeta.ts'
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ export * from './block/index.ts'
2
2
  export * from './ChainServiceCollectionV2.ts'
3
3
  export * from './config/index.ts'
4
4
  export * from './constants.ts'
5
+ export * from './CreatableProvider/index.ts'
5
6
  export * from './driver/index.ts'
6
7
  export * from './eip-712/index.ts'
7
8
  export * from './instances/index.ts'
@@ -0,0 +1,32 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+
3
+ export interface AsyncMapRead<K, V> {
4
+ get(id: K): Promisable<V | undefined>
5
+ getMany(id: K[]): Promisable<V[]>
6
+ has(id: K): Promisable<boolean>
7
+ }
8
+ /**
9
+ * @deprecated Use AsyncMapRead instead
10
+ */
11
+ export interface AsynchronousMapRead<K, V> extends AsyncMapRead<K, V> {}
12
+
13
+ export interface AsyncMapWrite<K, V> {
14
+ clear(): Promisable<void>
15
+ delete(id: K): Promisable<boolean>
16
+ set(id: K, data: V): Promisable<void>
17
+ setMany(entries: [K, V][]): Promisable<void>
18
+ }
19
+ /**
20
+ * @deprecated Use AsyncMapWrite instead
21
+ */
22
+ export interface AsynchronousMapWrite<K, V> extends AsyncMapWrite<K, V> {}
23
+
24
+ export interface AsyncMap<K, V> extends AsyncMapRead<K, V>, AsyncMapWrite<K, V> {}
25
+ /**
26
+ * @deprecated Use AsyncMap instead
27
+ */
28
+ export interface AsynchronousMap<K, V> extends AsyncMap<K, V> {}
29
+
30
+ export interface AsyncIterableMapRead<K, V>extends AsyncMapRead<K, V>, AsyncIterable<[K, V]> {}
31
+ export interface AsyncIterableMapWrite<K, V>extends AsyncMapWrite<K, V>, AsyncIterable<[K, V]> {}
32
+ export interface AsyncIterableMap<K, V>extends AsyncMap<K, V>, AsyncIterable<[K, V]> {}
@@ -1,12 +1,18 @@
1
- import type { AsynchronousMapRead, AsynchronousMapWrite } from './AsynchronousMap.ts'
2
- import type { SynchronousMapRead, SynchronousMapWrite } from './SynchronousMap.ts'
1
+ import type {
2
+ AsyncIterableMap, AsyncIterableMapRead, AsyncIterableMapWrite, AsyncMap, AsyncMapRead, AsyncMapWrite,
3
+ } from './AsyncMap.ts'
4
+ import type {
5
+ SyncIterableMap, SyncIterableMapRead, SyncIterableMapWrite, SyncMap, SyncMapRead, SyncMapWrite,
6
+ } from './SyncMap.ts'
3
7
 
4
- export type MapTypeWrite<TId, TData> = SynchronousMapWrite<TId, TData> | AsynchronousMapWrite<TId, TData>
8
+ export type MapTypeWrite<TId, TData> = SyncMapWrite<TId, TData> | AsyncMapWrite<TId, TData>
5
9
 
6
- export type MapTypeRead<TId, TData> = SynchronousMapRead<TId, TData> | AsynchronousMapRead<TId, TData>
10
+ export type MapTypeRead<TId, TData> = SyncMapRead<TId, TData> | AsyncMapRead<TId, TData>
7
11
 
8
- export type AsynchronousMapType<TId, TData> = AsynchronousMapRead<TId, TData> & AsynchronousMapWrite<TId, TData>
12
+ export type MapType<TId, TData> = SyncMap<TId, TData> | AsyncMap<TId, TData>
9
13
 
10
- export type SynchronousMapType<TId, TData> = SynchronousMapRead<TId, TData> & SynchronousMapWrite<TId, TData>
14
+ export type IterableMapRead<TId, TData> = SyncIterableMapRead<TId, TData> | AsyncIterableMapRead<TId, TData>
11
15
 
12
- export type MapType<TId, TData> = AsynchronousMapType<TId, TData> | SynchronousMapType<TId, TData>
16
+ export type IterableMapWrite<TId, TData> = SyncIterableMapWrite<TId, TData> | AsyncIterableMapWrite<TId, TData>
17
+
18
+ export type IterableMap<TId, TData> = SyncIterableMap<TId, TData> | AsyncIterableMap<TId, TData>
@@ -0,0 +1,32 @@
1
+ export interface SyncMapRead<K, V> {
2
+ get(id: K): V | undefined
3
+ getMany(id: K[]): V[]
4
+ has(id: K): boolean
5
+ }
6
+
7
+ /**
8
+ * @deprecated Use SyncMapRead instead
9
+ */
10
+ export interface SynchronousMapRead<K, V> extends SyncMapRead<K, V> {}
11
+
12
+ export interface SyncMapWrite<K, V> {
13
+ clear(): void
14
+ delete(id: K): boolean
15
+ set(id: K, data: V): void
16
+ setMany(entries: [K, V][]): void
17
+ }
18
+
19
+ /**
20
+ * @deprecated Use SyncMapWrite instead
21
+ */
22
+ export interface SynchronousMapWrite<K, V> extends SyncMapWrite<K, V> {}
23
+
24
+ export interface SyncMap<K, V> extends SyncMapRead<K, V>, SyncMapWrite<K, V> {}
25
+ /**
26
+ * @deprecated Use SyncMap instead
27
+ */
28
+ export interface SynchronousMap<K, V> extends SyncMap<K, V> {}
29
+
30
+ export interface SyncIterableMapRead<K, V> extends SyncMapRead<K, V>, Iterable<[K, V]> {}
31
+ export interface SyncIterableMapWrite<K, V> extends SyncMapWrite<K, V>, Iterable<[K, V]> {}
32
+ export interface SyncIterableMap<K, V> extends SyncMap<K, V>, Iterable<[K, V]> {}
package/src/map/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './AsynchronousMap.ts'
1
+ export * from './AsyncMap.ts'
2
2
  export * from './MapType.ts'
3
- export * from './SynchronousMap.ts'
3
+ export * from './SyncMap.ts'
@@ -0,0 +1,15 @@
1
+ import { assertEx, isString } from '@xylabs/sdk-js'
2
+
3
+ export type ProviderMoniker = string
4
+
5
+ export const asProviderMoniker = <T>(value: T) => {
6
+ const moniker = isString(value) ? (value as unknown as ProviderMoniker) : undefined
7
+ return assertEx(moniker)
8
+ }
9
+
10
+ export interface Provider<T extends ProviderMoniker> {
11
+ moniker: T
12
+ }
13
+
14
+ export const DefaultProviderMoniker = 'Provider' as const
15
+ export type DefaultProviderMoniker = typeof DefaultProviderMoniker
@@ -5,5 +5,6 @@ export * from './ChainStore.ts'
5
5
  export * from './PayloadBundle/index.ts'
6
6
  export * from './PayloadMap.ts'
7
7
  export * from './Position.ts'
8
+ export * from './Provider.ts'
8
9
  export * from './Qualified.ts'
9
10
  export * from './RecordKeyType.ts'
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  type Address, type Hex, hexToBigInt, toAddress,
3
3
  } from '@xylabs/sdk-js'
4
- import { span } from '@xylabs/telemetry'
4
+ import { span } from '@xylabs/sdk-js'
5
5
  import type { Payload } from '@xyo-network/payload-model'
6
6
  import { isTransfer } from '@xyo-network/xl1-protocol'
7
7
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  type Address, type Hex, hexToBigInt, toAddress,
3
3
  } from '@xylabs/sdk-js'
4
- import { span } from '@xylabs/telemetry'
4
+ import { span } from '@xylabs/sdk-js'
5
5
  import type { Payload } from '@xyo-network/payload-model'
6
6
  import { isTransfer } from '@xyo-network/xl1-protocol'
7
7
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  type Address, type Hex, hexToBigInt,
3
3
  } from '@xylabs/sdk-js'
4
- import { span } from '@xylabs/telemetry'
4
+ import { span } from '@xylabs/sdk-js'
5
5
  import type { Payload } from '@xyo-network/payload-model'
6
6
  import { isTransfer } from '@xyo-network/xl1-protocol'
7
7
 
@@ -4,11 +4,11 @@ import { asAttoXL1, type XL1BlockNumber } from '@xyo-network/xl1-protocol'
4
4
  export const rewardFromBlockNumber = (places = 18) => {
5
5
  return (
6
6
  blockNumber: XL1BlockNumber,
7
- startingReward = asAttoXL1(toFixedPoint(30_000n, places)),
7
+ startingReward = asAttoXL1(toFixedPoint(500n, places)),
8
8
  blocksPerStep = 1_000_000,
9
- stepFactorNumerator = 90n,
9
+ stepFactorNumerator = 95n,
10
10
  stepFactorDenominator = 100n,
11
- minBlockReward = asAttoXL1(toFixedPoint(30n, places)),
11
+ minBlockReward = asAttoXL1(toFixedPoint(10n, places)),
12
12
  creatorReward = asAttoXL1(toFixedPoint(20_000_000_000n, places)),
13
13
  ) => {
14
14
  if (blockNumber === 0) {
@@ -12,8 +12,14 @@ export interface DataLakeViewer extends DataLakeViewerMethods {
12
12
  disallowedSchemas?: Schema[]
13
13
  }
14
14
 
15
+ export const DataLakeViewerMoniker = 'DataLakeViewer' as const
16
+ export type DataLakeViewerMoniker = typeof DataLakeViewerMoniker
17
+
15
18
  export type DataLakeRunnerMethods = Pick<MapType<Hash, DataLakeData>, 'set' | 'delete' | 'clear'> & {
16
19
  setMany(entries: [Hash, DataLakeData][]): Promise<void>
17
20
  }
18
21
 
19
- export interface DataLakeRunner extends DataLakeViewerMethods, DataLakeRunnerMethods {}
22
+ export interface DataLakeRunner extends DataLakeRunnerMethods {}
23
+
24
+ export const DataLakeRunnerMoniker = 'DataLakeRunner' as const
25
+ export type DataLakeRunnerMoniker = typeof DataLakeRunnerMoniker
@@ -1,5 +1,6 @@
1
1
  import type { Promisable } from '@xylabs/sdk-js'
2
2
 
3
+ import type { Provider } from '../../../model/index.ts'
3
4
  import type { NetworkStakeStepRewardsViewer } from './Rewards/index.ts'
4
5
 
5
6
  export interface NetworkStakeViewerMethods {
@@ -7,6 +8,9 @@ export interface NetworkStakeViewerMethods {
7
8
  active(blockNumber?: number): Promisable<[bigint, number]>
8
9
  }
9
10
 
10
- export interface NetworkStakeViewer extends NetworkStakeViewerMethods {
11
+ export const NetworkStakeViewerMoniker = 'NetworkStakeViewer' as const
12
+ export type NetworkStakeViewerMoniker = typeof NetworkStakeViewerMoniker
13
+
14
+ export interface NetworkStakeViewer extends NetworkStakeViewerMethods, Provider<NetworkStakeViewerMoniker> {
11
15
  stepRewards?: NetworkStakeStepRewardsViewer
12
16
  }
@@ -1,3 +1,4 @@
1
+ import type { Provider } from '../../../../model/index.ts'
1
2
  import type { NetworkStakeStepRewardsByPositionViewerOptions } from './Options.ts'
2
3
  import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './templates/index.ts'
3
4
 
@@ -6,4 +7,8 @@ import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './temp
6
7
  export interface NetworkStakeStepRewardsByPositionViewerMethods extends
7
8
  NetworkStakeStepRewardsByIndexViewerMethodsTemplate<NetworkStakeStepRewardsByPositionViewerOptions, number> {}
8
9
 
9
- export interface NetworkStakeStepRewardsByPositionViewer extends NetworkStakeStepRewardsByPositionViewerMethods {}
10
+ export const NetworkStakeStepRewardsByPositionViewerMoniker = 'NetworkStakeStepRewardsByPositionViewer' as const
11
+ export type NetworkStakeStepRewardsByPositionViewerMoniker = typeof NetworkStakeStepRewardsByPositionViewerMoniker
12
+
13
+ export interface NetworkStakeStepRewardsByPositionViewer extends NetworkStakeStepRewardsByPositionViewerMethods,
14
+ Provider<NetworkStakeStepRewardsByPositionViewerMoniker> {}
@@ -1,5 +1,6 @@
1
1
  import type { Address } from '@xylabs/sdk-js'
2
2
 
3
+ import type { Provider } from '../../../../model/index.ts'
3
4
  import type { NetworkStakeStepRewardsByStakerViewerOptions } from './Options.ts'
4
5
  import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './templates/index.ts'
5
6
 
@@ -7,4 +8,9 @@ import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './temp
7
8
 
8
9
  export interface NetworkStakeStepRewardsByStakerViewerMethods
9
10
  extends NetworkStakeStepRewardsByIndexViewerMethodsTemplate<NetworkStakeStepRewardsByStakerViewerOptions, Address> {}
10
- export interface NetworkStakeStepRewardsByStakerViewer extends NetworkStakeStepRewardsByStakerViewerMethods {}
11
+
12
+ export const NetworkStakeStepRewardsByStakerViewerMoniker = 'NetworkStakeStepRewardsByStakerViewer' as const
13
+ export type NetworkStakeStepRewardsByStakerViewerMoniker = typeof NetworkStakeStepRewardsByStakerViewerMoniker
14
+
15
+ export interface NetworkStakeStepRewardsByStakerViewer extends NetworkStakeStepRewardsByStakerViewerMethods,
16
+ Provider<NetworkStakeStepRewardsByStakerViewerMoniker> {}
@@ -1,5 +1,6 @@
1
1
  import type { StepIdentityString } from '@xyo-network/xl1-protocol'
2
2
 
3
+ import type { Provider } from '../../../../model/index.ts'
3
4
  import type { NetworkStakeStepRewardsByStepViewerOptions } from './Options.ts'
4
5
  import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './templates/index.ts'
5
6
 
@@ -7,4 +8,8 @@ import type { NetworkStakeStepRewardsByIndexViewerMethodsTemplate } from './temp
7
8
 
8
9
  export interface NetworkStakeStepRewardsByStepViewerMethods extends
9
10
  NetworkStakeStepRewardsByIndexViewerMethodsTemplate<NetworkStakeStepRewardsByStepViewerOptions, StepIdentityString> {}
10
- export interface NetworkStakeStepRewardsByStepViewer extends NetworkStakeStepRewardsByStepViewerMethods {}
11
+
12
+ export const NetworkStakeStepRewardsByStepViewerMoniker = 'NetworkStakeStepRewardsByStepViewer' as const
13
+ export type NetworkStakeStepRewardsByStepViewerMoniker = typeof NetworkStakeStepRewardsByStepViewerMoniker
14
+
15
+ export interface NetworkStakeStepRewardsByStepViewer extends NetworkStakeStepRewardsByStepViewerMethods, Provider<NetworkStakeStepRewardsByStepViewerMoniker> {}
@@ -1,9 +1,14 @@
1
1
  import type { AttoXL1 } from '@xyo-network/xl1-protocol'
2
2
 
3
+ import type { Provider } from '../../../../model/index.ts'
3
4
  import type { NetworkStakeStepRewardsRangeOptions } from './Options.ts'
4
5
  import type { NetworkStakeStepRewardsViewerMethodsTemplate } from './templates/index.ts'
5
6
 
6
7
  // Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.
7
8
 
8
9
  export interface NetworkStakeStepRewardsTotalViewerMethods extends NetworkStakeStepRewardsViewerMethodsTemplate<NetworkStakeStepRewardsRangeOptions, AttoXL1> {}
9
- export interface NetworkStakeStepRewardsTotalViewer extends NetworkStakeStepRewardsTotalViewerMethods {}
10
+
11
+ export const NetworkStakeStepRewardsTotalViewerMoniker = 'NetworkStakeStepRewardsTotalViewer' as const
12
+ export type NetworkStakeStepRewardsTotalViewerMoniker = typeof NetworkStakeStepRewardsTotalViewerMoniker
13
+
14
+ export interface NetworkStakeStepRewardsTotalViewer extends NetworkStakeStepRewardsTotalViewerMethods, Provider<NetworkStakeStepRewardsTotalViewerMoniker> {}
@@ -1,3 +1,4 @@
1
+ import type { Provider } from '../../../../model/index.ts'
1
2
  import type { NetworkStakeStepRewardsByPositionViewer } from './ByPositionViewer.ts'
2
3
  import type { NetworkStakeStepRewardsByStakerViewer } from './ByStakerViewer.ts'
3
4
  import type { NetworkStakeStepRewardsByStepViewer } from './ByStepViewer.ts'
@@ -5,7 +6,10 @@ import type { NetworkStakeStepRewardsTotalViewer } from './TotalViewer.ts'
5
6
 
6
7
  export interface NetworkStakeStepRewardsViewerMethods {}
7
8
 
8
- export interface NetworkStakeStepRewardsViewer extends NetworkStakeStepRewardsViewerMethods {
9
+ export const NetworkStakeStepRewardsViewerMoniker = 'NetworkStakeStepRewardsViewer' as const
10
+ export type NetworkStakeStepRewardsViewerMoniker = typeof NetworkStakeStepRewardsViewerMoniker
11
+
12
+ export interface NetworkStakeStepRewardsViewer extends NetworkStakeStepRewardsViewerMethods, Provider<NetworkStakeStepRewardsViewerMoniker> {
9
13
  position?: NetworkStakeStepRewardsByPositionViewer
10
14
  staker?: NetworkStakeStepRewardsByStakerViewer
11
15
  step?: NetworkStakeStepRewardsByStepViewer
@@ -3,6 +3,7 @@ import type {
3
3
  } from '@xylabs/sdk-js'
4
4
  import type { AttoXL1, XL1BlockRange } from '@xyo-network/xl1-protocol'
5
5
 
6
+ import type { Provider } from '../../model/index.ts'
6
7
  import type {
7
8
  AccountBalanceHistoryItem,
8
9
  AccountBalanceViewer,
@@ -11,22 +12,25 @@ import type {
11
12
  ChainViewerMethods,
12
13
  ForkViewerMethods,
13
14
  MempoolViewer,
14
- NetworkStakeStepRewardViewer,
15
+ NetworkStakeStepRewardViewerMethods,
15
16
  StakeViewerMethods,
16
17
  StepViewer,
17
18
  TransactionViewerMethods,
18
- TransferBalanceViewerMethods,
19
19
  } from '../../viewers/index.ts'
20
20
  import type { NetworkStakeViewer } from './NetworkStake/index.ts'
21
21
 
22
22
  export interface XyoViewerMethods extends
23
- TransferBalanceViewerMethods, NetworkStakeStepRewardViewer,
24
- Pick<ChainViewerMethods, 'chainId'>, BlockViewerMethods, TransactionViewerMethods, StakeViewerMethods, ForkViewerMethods {
23
+ NetworkStakeStepRewardViewerMethods, Pick<ChainViewerMethods, 'chainId'>, BlockViewerMethods,
24
+ TransactionViewerMethods, StakeViewerMethods, ForkViewerMethods {
25
25
  accountBalance(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AttoXL1>
26
26
  accountBalanceHistory(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AccountBalanceHistoryItem[]>
27
27
  }
28
28
 
29
- export interface XyoViewer extends BlockViewer, XyoViewerMethods {
29
+ export const XyoViewerMoniker = 'XyoViewer' as const
30
+ export type XyoViewerMoniker = typeof XyoViewerMoniker
31
+
32
+ export interface XyoViewer extends Omit<BlockViewer, 'moniker'>, XyoViewerMethods,
33
+ Omit<StakeViewerMethods, 'moniker'>, Provider<XyoViewerMoniker> {
30
34
  account?: {
31
35
  balance?: AccountBalanceViewer
32
36
  }
@@ -3,4 +3,4 @@ import type {
3
3
  } from '../../viewers/index.ts'
4
4
  import type { BaseChainService } from './BaseChainService.ts'
5
5
 
6
- export interface ChainService extends ChainContractViewer, ChainStakeViewer, ChainViewer, BaseChainService {}
6
+ export interface ChainService extends Omit<ChainContractViewer, 'moniker'>, Omit<ChainStakeViewer, 'moniker'>, Omit<ChainViewer, 'moniker'>, BaseChainService {}
@@ -1,12 +1,8 @@
1
- import type {
2
- Address, CreatableParams, Hash,
3
- } from '@xylabs/sdk-js'
1
+ import type { Address, Hash } from '@xylabs/sdk-js'
4
2
  import {
5
- AbstractCreatable,
6
3
  asHash,
7
- assertEx, exists, isDefined,
4
+ assertEx, exists, isDefined, spanRootAsync,
8
5
  } from '@xylabs/sdk-js'
9
- import { spanRootAsync } from '@xylabs/telemetry'
10
6
  import type { WithHashMeta, WithStorageMeta } from '@xyo-network/payload-model'
11
7
  import type {
12
8
  SignedBlockBoundWitnessWithHashMeta, Transfer, XL1BlockNumber, XL1BlockRange,
@@ -18,7 +14,9 @@ import {
18
14
  } from '@xyo-network/xl1-protocol'
19
15
 
20
16
  import { deepCalculateFramesFromRange } from '../../block/index.ts'
21
- import type { Qualified } from '../../model/index.ts'
17
+ import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
18
+ import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
19
+ import type { ProviderMoniker, Qualified } from '../../model/index.ts'
22
20
  import type {
23
21
  BalanceStepSummaryContext, TransfersStepSummary,
24
22
  TransfersStepSummaryContext,
@@ -27,17 +25,23 @@ import {
27
25
  balancesSummary,
28
26
  transfersStepSummaryFromRange,
29
27
  } from '../../summary/index.ts'
30
- import type {
31
- AccountBalanceHistoryItem, AccountBalanceViewer, BlockViewer,
28
+ import {
29
+ type AccountBalanceHistoryItem, type AccountBalanceViewer, AccountBalanceViewerMoniker,
30
+ type BlockViewer,
32
31
  } from '../../viewers/index.ts'
33
32
 
34
- export interface SimpleAccountBalanceViewerParams extends CreatableParams {
33
+ export interface SimpleAccountBalanceViewerParams extends CreatableProviderParams {
35
34
  blockViewer: BlockViewer
36
35
  context: BalanceStepSummaryContext
37
36
  transfersSummaryContext: TransfersStepSummaryContext
38
37
  }
39
38
 
40
- export class SimpleAccountBalanceViewer extends AbstractCreatable<SimpleAccountBalanceViewerParams> implements AccountBalanceViewer {
39
+ @creatableProvider()
40
+ export class SimpleAccountBalanceViewer extends AbstractCreatableProvider<SimpleAccountBalanceViewerParams> implements AccountBalanceViewer {
41
+ static readonly defaultMoniker = AccountBalanceViewerMoniker
42
+ static readonly monikers = [AccountBalanceViewerMoniker]
43
+ moniker = SimpleAccountBalanceViewer.defaultMoniker
44
+
41
45
  get blockViewer(): BlockViewer {
42
46
  return this.params.blockViewer!
43
47
  }
@@ -1,6 +1,5 @@
1
- import type { CreatableParams, Hash } from '@xylabs/sdk-js'
1
+ import type { Hash } from '@xylabs/sdk-js'
2
2
  import {
3
- AbstractCreatable,
4
3
  assertEx,
5
4
  exists,
6
5
  isDefined,
@@ -16,6 +15,8 @@ import {
16
15
  } from '@xyo-network/xl1-protocol'
17
16
 
18
17
  import { hydrateBlock } from '../../block/index.ts'
18
+ import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
19
+ import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
19
20
  import { LruCacheMap } from '../../driver/index.ts'
20
21
  import type {
21
22
  ChainContextRead,
@@ -23,14 +24,19 @@ import type {
23
24
  } from '../../model/index.ts'
24
25
  import { findMostRecentBlock, hydratedBlockByNumber } from '../../primitives/index.ts'
25
26
  import { HydratedCache } from '../../utils/index.ts'
26
- import type { BlockViewer } from '../../viewers/index.ts'
27
+ import { type BlockViewer, BlockViewerMoniker } from '../../viewers/index.ts'
27
28
 
28
- export interface SimpleBlockViewerParams extends CreatableParams {
29
+ export interface SimpleBlockViewerParams extends CreatableProviderParams {
29
30
  context: ChainContextRead
30
- finalizedArchivist?: ReadArchivist
31
+ finalizedArchivist: ReadArchivist
31
32
  }
32
33
 
33
- export class SimpleBlockViewer extends AbstractCreatable<SimpleBlockViewerParams> implements BlockViewer {
34
+ @creatableProvider()
35
+ export class SimpleBlockViewer extends AbstractCreatableProvider<SimpleBlockViewerParams> implements BlockViewer {
36
+ static readonly defaultMoniker = BlockViewerMoniker
37
+ static readonly monikers = [BlockViewerMoniker]
38
+ moniker = SimpleBlockViewer.defaultMoniker
39
+
34
40
  private _payloadCache: PayloadMap<WithHashMeta<Payload>> | undefined
35
41
  private _signedHydratedBlockCache: HydratedCache<SignedHydratedBlockWithHashMeta> | undefined
36
42
 
@@ -1,13 +1,13 @@
1
- import {
2
- AbstractCreatable,
3
- creatable, CreatableParams, Promisable,
4
- } from '@xylabs/sdk-js'
1
+ import { Promisable } from '@xylabs/sdk-js'
5
2
  import { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
6
3
 
4
+ import {
5
+ AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
6
+ } from '../../CreatableProvider/index.ts'
7
7
  import { rewardFromBlockNumber } from '../../primitives/index.ts'
8
- import { BlockRewardViewer } from '../../viewers/index.ts'
8
+ import { BlockRewardViewer, BlockRewardViewerMoniker } from '../../viewers/index.ts'
9
9
 
10
- export interface SimpleBlockRewardViewerParams extends CreatableParams {
10
+ export interface SimpleBlockRewardViewerParams extends CreatableProviderParams {
11
11
  creatorReward: AttoXL1
12
12
  initialReward: AttoXL1
13
13
  minRewardPerBlock: AttoXL1
@@ -16,8 +16,12 @@ export interface SimpleBlockRewardViewerParams extends CreatableParams {
16
16
  stepSize: XL1BlockNumber
17
17
  }
18
18
 
19
- @creatable()
20
- export class SimpleBlockRewardViewer extends AbstractCreatable<SimpleBlockRewardViewerParams> implements BlockRewardViewer {
19
+ @creatableProvider()
20
+ export class SimpleBlockRewardViewer extends AbstractCreatableProvider<SimpleBlockRewardViewerParams> implements BlockRewardViewer {
21
+ static readonly defaultMoniker = BlockRewardViewerMoniker
22
+ static readonly monikers = [BlockRewardViewerMoniker]
23
+ moniker = SimpleBlockRewardViewer.defaultMoniker
24
+
21
25
  protected rewardFromBlockNumber = rewardFromBlockNumber(18)
22
26
 
23
27
  allowedRewardForBlock(block: XL1BlockNumber): Promisable<AttoXL1> {
@@ -1,20 +1,23 @@
1
1
  import {
2
2
  type Address, asHex, Promisable,
3
3
  } from '@xylabs/sdk-js'
4
- import {
5
- AbstractCreatable,
6
- creatable, CreatableParams,
7
- } from '@xylabs/sdk-js'
8
4
  import { ChainId } from '@xyo-network/xl1-protocol'
9
5
 
10
- import { ChainViewer } from '../../viewers/index.ts'
6
+ import {
7
+ AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
8
+ } from '../../CreatableProvider/index.ts'
9
+ import { ChainViewer, ChainViewerMoniker } from '../../viewers/index.ts'
11
10
 
12
- export interface SimpleChainParams extends CreatableParams {
11
+ export interface SimpleChainParams extends CreatableProviderParams {
13
12
  chainId: Address
14
13
  }
15
14
 
16
- @creatable()
17
- export class SimpleChainViewer extends AbstractCreatable<SimpleChainParams> implements ChainViewer {
15
+ @creatableProvider()
16
+ export class SimpleChainViewer extends AbstractCreatableProvider<SimpleChainParams> implements ChainViewer {
17
+ static readonly defaultMoniker = ChainViewerMoniker
18
+ static readonly monikers = [ChainViewerMoniker]
19
+ moniker = SimpleChainViewer.defaultMoniker
20
+
18
21
  static override async paramsHandler(params?: Partial<SimpleChainParams>) {
19
22
  return ({ ...await super.paramsHandler(params), chainId: asHex(params?.chainId, () => 'chainId not set') }) as SimpleChainParams
20
23
  }