@xyo-network/xl1-providers 1.26.12 → 1.26.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,473 +0,0 @@
1
- import type { Tracer } from '@opentelemetry/api'
2
- import type {
3
- Address,
4
- Hash, Promisable,
5
- } from '@xylabs/sdk-js'
6
- import {
7
- assertEx,
8
- toAddress,
9
- } from '@xylabs/sdk-js'
10
- import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
11
- import type {
12
- AccountBalanceViewer,
13
- AttoXL1,
14
- BlockRate,
15
- BlockViewer, ChainContractViewer, ChainId,
16
- ChainQualifiedConfig, Count,
17
- FinalizationViewer,
18
- ForkHistory,
19
- MempoolViewer, NetworkStakeStepRewardsByPositionViewer, NetworkStakeViewer, Position,
20
- SingleTimeConfig,
21
- StakeViewer,
22
- StepIdentity, StepIdentityString,
23
- StepIndex,
24
- StepViewer,
25
- TimeDurations,
26
- TimeSyncViewer,
27
- TransactionViewer,
28
- XL1BlockNumber, XL1BlockRange, XL1RangeMultipliers,
29
- XyoViewer,
30
- } from '@xyo-network/xl1-protocol-lib'
31
- import {
32
- AccountBalanceViewerMoniker,
33
- asAttoXL1,
34
- asXL1BlockRange,
35
- BlockViewerMoniker,
36
- ChainContractViewerMoniker,
37
- FinalizationViewerMoniker,
38
- MempoolViewerMoniker, NetworkStakeStepRewardsByPositionViewerMoniker,
39
- NetworkStakeViewerMoniker, StakeViewerMoniker, StepViewerMoniker, TimeSyncViewerMoniker, TransactionViewerMoniker, XYO_NETWORK_STAKING_ADDRESS,
40
- XYO_ZERO_ADDRESS,
41
- XyoViewerMoniker,
42
- } from '@xyo-network/xl1-protocol-lib'
43
- import {
44
- AbstractCreatableProvider,
45
- allStakersForStep,
46
- blockRangeSteps,
47
- creatableProvider,
48
- CreatableProviderParams,
49
- externalBlockRangeFromStep,
50
- externalBlockRangeFromXL1BlockRange,
51
- networkStakeStepRewardPositionWeight,
52
- stepRewardTotal,
53
- toStepIdentityString,
54
- weightedStakeForRangeByPosition,
55
- withContextCacheResponse,
56
- } from '@xyo-network/xl1-protocol-sdk'
57
-
58
- /** Configuration params for SimpleXyoViewer. */
59
- export interface SimpleXyoViewerParams extends CreatableProviderParams {
60
- initRewardsCache?: boolean
61
- rewardMultipliers?: XL1RangeMultipliers
62
- }
63
-
64
- /** Full-featured XYO viewer providing access to blocks, transactions, staking, rewards, and account balances. */
65
- @creatableProvider()
66
- export class SimpleXyoViewer<TParams extends SimpleXyoViewerParams = SimpleXyoViewerParams> extends AbstractCreatableProvider<TParams> implements XyoViewer {
67
- static readonly defaultMoniker = XyoViewerMoniker
68
-
69
- static readonly dependencies = [
70
- AccountBalanceViewerMoniker,
71
- BlockViewerMoniker,
72
- FinalizationViewerMoniker,
73
- MempoolViewerMoniker,
74
- NetworkStakeViewerMoniker,
75
- NetworkStakeStepRewardsByPositionViewerMoniker,
76
- StakeViewerMoniker,
77
- StepViewerMoniker,
78
- TimeSyncViewerMoniker,
79
- ]
80
-
81
- static readonly monikers = [XyoViewerMoniker]
82
- moniker = SimpleXyoViewer.defaultMoniker
83
-
84
- protected _tracer: Tracer | undefined
85
-
86
- private _accountBalanceViewer?: AccountBalanceViewer
87
- private _blockViewer?: BlockViewer
88
- private _chainContractViewer?: ChainContractViewer
89
- private _chainId!: ChainId
90
- private _finalizationViewer!: FinalizationViewer
91
- private _mempoolViewer?: MempoolViewer
92
- private _networkStakeViewer?: NetworkStakeViewer
93
- private _networkStepRewardsByPositionViewer?: NetworkStakeStepRewardsByPositionViewer
94
- private _rewardMultipliers?: XL1RangeMultipliers
95
- private _stakeViewer?: StakeViewer
96
- private _stepViewer?: StepViewer
97
- private _timeSyncViewer?: TimeSyncViewer
98
- private _transaction?: TransactionViewer
99
-
100
- get account() {
101
- return { balance: this._accountBalanceViewer! }
102
- }
103
-
104
- get block() {
105
- return this._blockViewer!
106
- }
107
-
108
- get chainContractViewer() {
109
- return this._chainContractViewer!
110
- }
111
-
112
- get finalization() {
113
- return this._finalizationViewer!
114
- }
115
-
116
- get mempool() {
117
- return this._mempoolViewer!
118
- }
119
-
120
- get networkStake() {
121
- return this._networkStakeViewer!
122
- }
123
-
124
- get stake() {
125
- return this._stakeViewer!
126
- }
127
-
128
- get step() {
129
- return this._stepViewer!
130
- }
131
-
132
- get time() {
133
- return this._timeSyncViewer!
134
- }
135
-
136
- get transaction() {
137
- return this._transaction!
138
- }
139
-
140
- protected get finalizationViewer() {
141
- return this._finalizationViewer
142
- }
143
-
144
- protected get initRewardsCache() {
145
- return this.params.initRewardsCache ?? true
146
- }
147
-
148
- protected get networkStepRewardsByPositionViewer() {
149
- return this._networkStepRewardsByPositionViewer!
150
- }
151
-
152
- protected get rewardMultipliers() {
153
- this._rewardMultipliers = this._rewardMultipliers ?? this.params.rewardMultipliers ?? {}
154
- return this._rewardMultipliers
155
- }
156
-
157
- async accountBalance(address: Address, config: ChainQualifiedConfig = {}) {
158
- return await this.account.balance.accountBalance(address, config)
159
- }
160
-
161
- async accountBalanceHistory(address: Address, config: ChainQualifiedConfig = {}) {
162
- return await this.account.balance.accountBalanceHistory(address, config)
163
- }
164
-
165
- async blockByHash(hash: Hash) {
166
- return await this.block.blockByHash(hash)
167
- }
168
-
169
- async blockByNumber(blockNumber: XL1BlockNumber) {
170
- return await this.block.blockByNumber(blockNumber)
171
- }
172
-
173
- async blocksByHash(hash: Hash, limit: number = 10) {
174
- return await this.block.blocksByHash(hash, limit)
175
- }
176
-
177
- async blocksByNumber(blockNumber: XL1BlockNumber, limit: number = 10) {
178
- return await this.block.blocksByNumber(blockNumber, limit)
179
- }
180
-
181
- async chainId(): Promise<ChainId>
182
- async chainId(blockNumber: XL1BlockNumber): Promise<ChainId>
183
- async chainId(blockNumber: 'latest'): Promise<ChainId>
184
- async chainId(blockNumber: XL1BlockNumber | 'latest' = 'latest'): Promise<ChainId> {
185
- return await this.spanAsync('SimpleXyoViewer:chainId', async () => {
186
- const chainId = assertEx(
187
- blockNumber === 'latest' ? this._chainId : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber),
188
- () => `Could not find block for chainId at block ${blockNumber}`,
189
- )
190
- return chainId
191
- }, this.context)
192
- }
193
-
194
- override async createHandler() {
195
- await super.createHandler()
196
- this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
197
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
198
- this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
199
- this._finalizationViewer = await this.locator.getInstance<FinalizationViewer>(FinalizationViewerMoniker)
200
- this._mempoolViewer = await this.locator.getInstance<MempoolViewer>(MempoolViewerMoniker)
201
- this._networkStakeViewer = await this.locator.getInstance<NetworkStakeViewer>(NetworkStakeViewerMoniker)
202
- this._networkStepRewardsByPositionViewer
203
- = await this.locator.getInstance<NetworkStakeStepRewardsByPositionViewer>(NetworkStakeStepRewardsByPositionViewerMoniker)
204
- this._stakeViewer = await this.locator.getInstance<StakeViewer>(StakeViewerMoniker)
205
- this._stepViewer = await this.locator.getInstance<StepViewer>(StepViewerMoniker)
206
- this._timeSyncViewer = await this.locator.getInstance<TimeSyncViewer>(TimeSyncViewerMoniker)
207
- this._transaction = await this.locator.getInstance<TransactionViewer>(TransactionViewerMoniker)
208
- this._chainId = await this._chainContractViewer.chainId()
209
- }
210
-
211
- async currentBlock() {
212
- return await this.block.currentBlock()
213
- }
214
-
215
- async currentBlockHash() {
216
- return await this.block.currentBlockHash()
217
- }
218
-
219
- async currentBlockNumber() {
220
- return await this.block.currentBlockNumber()
221
- }
222
-
223
- forkHistory(): Promisable<ForkHistory> {
224
- throw new Error('Method [forkHistory] not implemented.')
225
- }
226
-
227
- networkStakeStepRewardAddressHistory(_address: Address): Promise<Record<Address, AttoXL1>> {
228
- throw new Error('Method [networkStakeStepRewardAddressHistory] not implemented.')
229
- }
230
-
231
- networkStakeStepRewardAddressReward(_context: StepIdentity, _address: Address): Promise<Record<Address, AttoXL1>> {
232
- throw new Error('Method [networkStakeStepRewardAddressReward] not implemented.')
233
- }
234
-
235
- networkStakeStepRewardAddressShare(_context: StepIdentity, _address: Address): Promise<[bigint, bigint]> {
236
- throw new Error('Method [networkStakeStepRewardAddressShare] not implemented.')
237
- }
238
-
239
- networkStakeStepRewardClaimedByAddress(_address: Address): Promise<AttoXL1> {
240
- throw new Error('Method [networkStakeStepRewardClaimedByAddress] not implemented.')
241
- }
242
-
243
- async networkStakeStepRewardForPosition(position: number, range: XL1BlockRange): Promise<[AttoXL1, AttoXL1]> {
244
- const cacheKey = `${position}|${range[0]}-${range[1]}`
245
- return await withContextCacheResponse(this.context, 'SimpleXyoViewer:networkStakeStepRewardForPosition', cacheKey, async () => {
246
- const externalRange = await externalBlockRangeFromXL1BlockRange(this.context, this.block, range)
247
- const positionCount = await this.stake.stakeEvents.positionCount(externalRange)
248
- if (positionCount === 0) {
249
- return [asAttoXL1(0n), asAttoXL1(0n)]
250
- }
251
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7])
252
- const rewards = await Promise.all(steps.map(step => this.networkStakeStepRewardForStepForPosition(step, position)))
253
- const positionReward = asAttoXL1(rewards.reduce((a, b) => a + b[0], 0n))
254
- const totalReward = asAttoXL1(rewards.reduce((a, b) => a + b[1], 0n))
255
- return [positionReward, totalReward]
256
- })
257
- }
258
-
259
- async networkStakeStepRewardForStep(stepContext: StepIdentity): Promise<AttoXL1> {
260
- return await stepRewardTotal(this.context, this.block, stepContext, this.rewardMultipliers)
261
- }
262
-
263
- async networkStakeStepRewardForStepForPosition(stepIdentity: StepIdentity, position: number): Promise<[AttoXL1, AttoXL1]> {
264
- const stepIdentityString = toStepIdentityString(stepIdentity)
265
- const cacheKey = `${stepIdentityString}|${position}`
266
- return await withContextCacheResponse(this.context, 'SimpleXyoViewer:networkStakeStepRewardForStepForPosition', cacheKey, async () => {
267
- const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity)
268
- const stake = await this.stakeById(position)
269
- const numerator = stake.staked === XYO_NETWORK_STAKING_ADDRESS
270
- ? await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, XYO_NETWORK_STAKING_ADDRESS, position)
271
- : 0n
272
-
273
- const denominator = await this.stepWeightedDenominator(stepIdentity)
274
- const totalReward = await this.networkStakeStepRewardForStep(stepIdentity)
275
- const positionReward = asAttoXL1(denominator > 0n ? totalReward * numerator / denominator : 0n)
276
- const result: [AttoXL1, AttoXL1] = [positionReward, totalReward]
277
- return result
278
- })
279
- }
280
-
281
- async networkStakeStepRewardPoolRewards(step: StepIdentity): Promise<Record<Address, AttoXL1>> {
282
- const stakes = await this.stake.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS)
283
- const rewards: [Address, [AttoXL1, AttoXL1]][] = []
284
- for (const stake of stakes) {
285
- rewards.push([stake.staker, (await this.networkStakeStepRewardForStepForPosition(
286
- step,
287
- stake.id,
288
- ))])
289
- }
290
- const result: Record<Address, AttoXL1> = {}
291
- for (const [staker, reward] of rewards) {
292
- result[staker] = asAttoXL1((result[staker] ?? 0n) + reward[0])
293
- }
294
- const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v > 0n))
295
- return filtered
296
- }
297
-
298
- networkStakeStepRewardPoolShares(_context: StepIdentity): Promise<Record<Address, bigint>> {
299
- throw new Error('Method [networkStakeStepRewardPoolShares] not implemented.')
300
- }
301
-
302
- async networkStakeStepRewardPositionWeight(stepContext: StepIdentity, position: number): Promise<bigint> {
303
- return await networkStakeStepRewardPositionWeight(this.context, this.block, this.stake.stakeEvents, stepContext, position)
304
- }
305
-
306
- networkStakeStepRewardPotentialPositionLoss(_context: StepIdentity, _position: number): Promise<AttoXL1> {
307
- throw new Error('Method [networkStakeStepRewardPotentialPositionLoss] not implemented.')
308
- }
309
-
310
- networkStakeStepRewardRandomizer(_context: StepIdentity): Promise<AttoXL1> {
311
- throw new Error('Method [networkStakeStepRewardRandomizer] not implemented.')
312
- }
313
-
314
- async networkStakeStepRewardStakerCount(stepContext: StepIdentity): Promise<number> {
315
- return Object.keys(await allStakersForStep(
316
- this.context,
317
- this.block,
318
- this.stake.stakeEvents,
319
- stepContext,
320
- XYO_NETWORK_STAKING_ADDRESS,
321
- )).length
322
- }
323
-
324
- networkStakeStepRewardUnclaimedByAddress(_address: Address): Promise<AttoXL1> {
325
- throw new Error('Method [networkStakeStepRewardUnclaimedByAddress] not implemented.')
326
- }
327
-
328
- networkStakeStepRewardWeightForAddress(_context: StepIdentity, _address: Address): Promise<AttoXL1> {
329
- throw new Error('Method [networkStakeStepRewardWeightForAddress] not implemented.')
330
- }
331
-
332
- async networkStakeStepRewardsForPosition(position: number, range: XL1BlockRange): Promise<Record<StepIdentityString, [AttoXL1, AttoXL1]>> {
333
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8])
334
- const rewards = await Promise.all(steps.map(async (step) => {
335
- return [toStepIdentityString(step), await this.networkStakeStepRewardForStepForPosition(step, position)] as [StepIdentityString, [AttoXL1, AttoXL1]]
336
- }))
337
- const result: Record<StepIdentityString, [AttoXL1, AttoXL1]> = {}
338
- for (const [step, reward] of rewards) {
339
- result[step] = reward
340
- }
341
- const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v[0] > 0n))
342
- return filtered
343
- }
344
-
345
- async networkStakeStepRewardsForRange(range: XL1BlockRange): Promise<AttoXL1> {
346
- return await this.spanAsync('networkStakeStepRewardsForRange', async () => {
347
- const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8])
348
- const rewards = await Promise.all(steps.map(async (step) => {
349
- return await this.networkStakeStepRewardForStep(step)
350
- }))
351
- return asAttoXL1(rewards.reduce((a, b) => a + b, 0n))
352
- }, this.context)
353
- }
354
-
355
- async networkStakeStepRewardsForStepLevel(stepLevel: number, range: XL1BlockRange): Promise<AttoXL1> {
356
- const steps = blockRangeSteps(range, [stepLevel])
357
- const rewards = await Promise.all(steps.map(async (step) => {
358
- return await this.networkStakeStepRewardForStep(step)
359
- }))
360
- return asAttoXL1(rewards.reduce((a, b) => a + b, 0n))
361
- }
362
-
363
- payloadByHash(_hash: Hash): Promisable<WithHashMeta<Payload> | null> {
364
- throw new Error('Method [payloadByHash] not implemented.')
365
- }
366
-
367
- payloadsByHash(_hashes: Hash[]): Promisable<WithHashMeta<Payload>[]> {
368
- throw new Error('Method [payloadsByHash] not implemented.')
369
- }
370
-
371
- async rate(range: XL1BlockRange, timeUnit?: keyof TimeDurations): Promise<BlockRate> {
372
- return await this.block.rate(range, timeUnit)
373
- }
374
-
375
- async stakeById(id: number): Promise<Position> {
376
- return await this.stake.stakeById(id)
377
- }
378
-
379
- async stakeByStaker(staker: Address, slot: number): Promise<Position> {
380
- return await this.stake.stakeByStaker(staker, slot)
381
- }
382
-
383
- async stakedByStaker(staker: Address): Promise<Address[]> {
384
- const result: Set<Address> = new Set()
385
- let slot = 0
386
- while (true) {
387
- try {
388
- const ethStake = await this.stake.stakeByStaker(staker, slot)
389
- result.add(toAddress(ethStake.staked))
390
- slot++
391
- } catch {
392
- break
393
- }
394
- }
395
- return [...result]
396
- }
397
-
398
- async stakesByStaked(staked: Address): Promise<Position[]> {
399
- return await this.stake.stakesByStaked(staked)
400
- }
401
-
402
- async stakesByStaker(staker: Address): Promise<Position[]> {
403
- return await this.stake.stakesByStaker(staker)
404
- }
405
-
406
- async stepSizeRate(start: XL1BlockNumber, stepSizeIndex: StepIndex, count?: Count, timeUnit?: keyof TimeDurations): Promise<BlockRate> {
407
- return await this.block.stepSizeRate(start, stepSizeIndex, count, timeUnit)
408
- }
409
-
410
- async timeDurationRate(
411
- timeConfig: SingleTimeConfig,
412
- startBlock: XL1BlockNumber,
413
- timeUnit?: keyof TimeDurations,
414
- toleranceMs?: number,
415
- maxAttempts?: number,
416
- ): Promise<BlockRate> {
417
- return await this.block.timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts)
418
- }
419
-
420
- async transactionByBlockHashAndIndex(blockHash: Hash, transactionIndex: number = 0) {
421
- return await this.transaction.byBlockHashAndIndex(blockHash, transactionIndex)
422
- }
423
-
424
- async transactionByBlockNumberAndIndex(blockNumber: XL1BlockNumber, transactionIndex: number = 0) {
425
- return await this.transaction.byBlockNumberAndIndex(blockNumber, transactionIndex)
426
- }
427
-
428
- async transactionByHash(transactionHash: Hash) {
429
- return await this.transaction.byHash(transactionHash)
430
- }
431
-
432
- protected override async startHandler() {
433
- try {
434
- const currentBlockNumber = await this.currentBlockNumber()
435
- // initialize functions that have slow initial call
436
- await this.account.balance.accountBalance(XYO_ZERO_ADDRESS)
437
- if (this.initRewardsCache) {
438
- const externalRange = await externalBlockRangeFromXL1BlockRange(
439
- this.context,
440
- this.block,
441
- asXL1BlockRange([0, currentBlockNumber], { name: 'startHandler' }),
442
- )
443
- const positionCount = await this.stake.stakeEvents.positionCount(externalRange)
444
- this.logger?.log(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition up to position ${positionCount - 1}`)
445
- const positions = Array.from(
446
- { length: positionCount },
447
- (_, i) => i,
448
- )
449
- while (positions.length > 0) {
450
- const batch = positions.splice(0, 10)
451
- this.logger?.log(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition for positions ${batch.at(0)} - ${batch.at(-1)}`)
452
- await Promise.all(batch.map(async (_, position) => await this.networkStakeStepRewardForPosition(
453
- position,
454
- asXL1BlockRange([0, currentBlockNumber], { name: 'startHandler' }),
455
- )))
456
- }
457
- this.logger?.log(`SimpleXyoViewer: Precomputed networkStakeStepRewardForPosition up to position ${positionCount - 1}`)
458
- }
459
- } catch (ex) {
460
- this.logger?.error(`SimpleXyoViewer: Error during startHandler initialization: ${(ex as Error).message}`)
461
- this.logger?.error((ex as Error).stack ?? '<No Stack>')
462
- throw ex
463
- }
464
- }
465
-
466
- protected async stepWeightedDenominator(stepIdentity: StepIdentity, staked?: Address): Promise<bigint> {
467
- const cacheKey = toStepIdentityString(stepIdentity)
468
- return await withContextCacheResponse(this.context, 'NodeXyoViewer-networkStakeStepRewardForStepForPosition-denominator', cacheKey, async () => {
469
- const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity)
470
- return await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, staked)
471
- })
472
- }
473
- }
@@ -1,114 +0,0 @@
1
- import type {
2
- AccountInstance, ArchivistInstance, WithHashMeta,
3
- } from '@xyo-network/sdk-js'
4
- import type { MapType } from '@xyo-network/xl1-protocol-lib'
5
- import type {
6
- BalancesStepSummary, Config, TransfersStepSummary,
7
- } from '@xyo-network/xl1-protocol-sdk'
8
- import {
9
- ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockViewer, SimpleFinalizationViewer, SimpleMempoolRunner, SimpleMempoolViewer,
10
- SimpleTimeSyncViewer, SimpleWindowedBlockViewer, SimpleXyoRunner,
11
- } from '@xyo-network/xl1-protocol-sdk'
12
- import type { TransportFactory } from '@xyo-network/xl1-rpc'
13
- import {
14
- AccountBalanceViewerRpcSchemas, BlockViewerRpcSchemas,
15
- JsonRpcAccountBalanceViewer, JsonRpcBlockViewer,
16
- JsonRpcMempoolRunner, JsonRpcMempoolViewer, JsonRpcNetworkStakeStepRewardsViewer, JsonRpcNetworkStakeViewer, JsonRpcStakeTotalsViewer,
17
- JsonRpcTimeSyncViewer, JsonRpcXyoRunner, JsonRpcXyoViewer, MempoolRunnerRpcSchemas, MempoolViewerRpcSchemas, NetworkStakeViewerRpcSchemas,
18
- StakeTotalsViewerRpcSchemas, TimeSyncViewerRpcSchemas, XyoRunnerRpcSchemas, XyoViewerRpcSchemas,
19
- } from '@xyo-network/xl1-rpc'
20
-
21
- import { registerGatewayWithLocator } from './registerHelpers.ts'
22
- import { SimpleNetworkStakeViewer } from './SimpleNetworkStakeViewer.ts'
23
- import {
24
- SimpleStepRewardsByPositionViewer, SimpleStepRewardsByStakerViewer, SimpleStepRewardsByStepViewer, SimpleStepRewardsTotalViewer, SimpleStepRewardsViewer,
25
- } from './SimpleStepRewards/index.ts'
26
- import { SimpleStepViewer } from './SimpleStepViewer.ts'
27
- import { SimpleXyoViewer } from './SimpleXyoViewer.ts'
28
-
29
- /** @deprecated Use locatorsFromConfig instead */
30
- export function buildEmptyProviderLocator(config: Config) {
31
- return new ProviderFactoryLocator({
32
- config, singletons: {}, caches: {},
33
- })
34
- }
35
-
36
- /** @deprecated Use locatorsFromConfig instead */
37
- export function buildSimpleProviderLocatorV2(config: Config, account?: AccountInstance) {
38
- // eslint-disable-next-line @typescript-eslint/no-deprecated
39
- const locator = buildEmptyProviderLocator(config)
40
- locator.registerMany([
41
- SimpleNetworkStakeViewer.factory<SimpleNetworkStakeViewer>(SimpleNetworkStakeViewer.dependencies, {}),
42
- SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(SimpleTimeSyncViewer.dependencies, {}),
43
- SimpleStepViewer.factory<SimpleStepViewer>(SimpleStepViewer.dependencies, {}),
44
- SimpleStepRewardsViewer.factory<SimpleStepRewardsViewer>(SimpleStepRewardsViewer.dependencies, {}),
45
- SimpleStepRewardsByPositionViewer.factory<SimpleStepRewardsByPositionViewer>(SimpleStepRewardsByPositionViewer.dependencies, {}),
46
- SimpleStepRewardsByStakerViewer.factory<SimpleStepRewardsByStakerViewer>(SimpleStepRewardsByStakerViewer.dependencies, {}),
47
- SimpleStepRewardsByStepViewer.factory<SimpleStepRewardsByStepViewer>(SimpleStepRewardsByStepViewer.dependencies, {}),
48
- SimpleStepRewardsTotalViewer.factory<SimpleStepRewardsTotalViewer>(SimpleStepRewardsTotalViewer.dependencies, {}),
49
- SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}),
50
- ])
51
- return registerGatewayWithLocator(locator, account)
52
- }
53
-
54
- /** @deprecated Use locatorsFromConfig instead */
55
- export async function buildJsonRpcProviderLocatorV2(config: Config, transportFactory: TransportFactory, account?: AccountInstance) {
56
- // eslint-disable-next-line @typescript-eslint/no-deprecated
57
- const locator = buildEmptyProviderLocator(config)
58
- locator.registerMany([
59
- JsonRpcStakeTotalsViewer.factory<JsonRpcStakeTotalsViewer>(
60
- JsonRpcStakeTotalsViewer.dependencies,
61
- { transport: await transportFactory(StakeTotalsViewerRpcSchemas) },
62
- ),
63
- JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(
64
- JsonRpcAccountBalanceViewer.dependencies,
65
- { transport: await transportFactory(AccountBalanceViewerRpcSchemas) },
66
- ),
67
- JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, { transport: await transportFactory(BlockViewerRpcSchemas) }),
68
- JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, { transport: await transportFactory(MempoolRunnerRpcSchemas) }),
69
- JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, { transport: await transportFactory(MempoolViewerRpcSchemas) }),
70
- JsonRpcNetworkStakeViewer.factory<JsonRpcNetworkStakeViewer>(
71
- JsonRpcNetworkStakeViewer.dependencies,
72
- { transport: await transportFactory(NetworkStakeViewerRpcSchemas) },
73
- ),
74
- JsonRpcTimeSyncViewer.factory<JsonRpcTimeSyncViewer>(JsonRpcTimeSyncViewer.dependencies, { transport: await transportFactory(TimeSyncViewerRpcSchemas) }),
75
- JsonRpcNetworkStakeStepRewardsViewer.factory<JsonRpcNetworkStakeStepRewardsViewer>(
76
- JsonRpcNetworkStakeStepRewardsViewer.dependencies,
77
- { transport: await transportFactory(NetworkStakeViewerRpcSchemas) },
78
- ),
79
- JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, { transport: await transportFactory(XyoRunnerRpcSchemas) }),
80
- JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, { transport: await transportFactory(XyoViewerRpcSchemas) }),
81
- ])
82
- return registerGatewayWithLocator(locator, account)
83
- }
84
-
85
- /** @deprecated Use locatorsFromConfig instead */
86
- export interface BuildLocalGatewayParams {
87
- account?: AccountInstance
88
- balancesSummaryMap: MapType<string, WithHashMeta<BalancesStepSummary>>
89
- finalizedArchivist: ArchivistInstance
90
- pendingBlocksArchivist: ArchivistInstance
91
- pendingTransactionsArchivist: ArchivistInstance
92
- transfersSummaryMap: MapType<string, WithHashMeta<TransfersStepSummary>>
93
- }
94
-
95
- /** @deprecated Use locatorsFromConfig instead */
96
-
97
- /** Builds a local gateway provider locator with the given configuration. */
98
- export function buildLocalGateway(config: Config, params: BuildLocalGatewayParams) {
99
- const {
100
- account, pendingTransactionsArchivist, pendingBlocksArchivist, balancesSummaryMap, transfersSummaryMap, finalizedArchivist,
101
- } = params
102
- // eslint-disable-next-line @typescript-eslint/no-deprecated
103
- const locator = buildSimpleProviderLocatorV2(config, account)
104
- locator.registerMany([
105
- SimpleMempoolViewer.factory<SimpleMempoolViewer>(SimpleMempoolViewer.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),
106
- SimpleMempoolRunner.factory<SimpleMempoolRunner>(SimpleMempoolRunner.dependencies, { pendingTransactionsArchivist, pendingBlocksArchivist }),
107
- SimpleAccountBalanceViewer.factory<SimpleAccountBalanceViewer>(SimpleAccountBalanceViewer.dependencies, { balancesSummaryMap, transfersSummaryMap }),
108
- SimpleFinalizationViewer.factory<SimpleFinalizationViewer>(SimpleFinalizationViewer.dependencies, { finalizedArchivist }),
109
- SimpleBlockViewer.factory<SimpleBlockViewer>(SimpleBlockViewer.dependencies, { finalizedArchivist }),
110
- SimpleWindowedBlockViewer.factory<SimpleWindowedBlockViewer>(SimpleWindowedBlockViewer.dependencies, { maxWindowSize: 10_000, syncInterval: 10_000 }),
111
- SimpleXyoViewer.factory<SimpleXyoViewer>(SimpleXyoViewer.dependencies, {}),
112
- ])
113
- return locator
114
- }