@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,45 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import type {
3
- BlockViewer,
4
- CachingContext,
5
- StakeViewer,
6
- StepIdentity,
7
- XL1RangeMultipliers,
8
- } from '@xyo-network/xl1-protocol-lib'
9
- import { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol-lib'
10
- import {
11
- toStepIdentityString,
12
- withContextCacheResponse,
13
- } from '@xyo-network/xl1-protocol-sdk'
14
-
15
- import { networkStakeStepRewardEarnedForPosition } from './networkStakeStepRewardEarnedForPosition.ts'
16
-
17
- /** Calculates the total step reward earned by a specific staker across all their network staking positions. */
18
- export async function networkStakeStepRewardEarnedForStaker(
19
- context: CachingContext,
20
- blockViewer: BlockViewer,
21
- stakeViewer: StakeViewer,
22
- stepIdentity: StepIdentity,
23
- staker: Address,
24
- rewardMultipliers: XL1RangeMultipliers = {},
25
- ): Promise<[bigint, bigint]> {
26
- const stepId = toStepIdentityString(stepIdentity)
27
- return await withContextCacheResponse(context, 'networkStakeStepRewardEarnedForStaker', `${stepId}-${staker}`, async () => {
28
- const positions = (await stakeViewer.stakesByStaker(staker)).filter(pos => pos.staked === XYO_NETWORK_STAKING_ADDRESS)
29
- const results = await Promise.all(positions.map((pos) => {
30
- return networkStakeStepRewardEarnedForPosition(
31
- context,
32
- blockViewer,
33
- stakeViewer.stakeEvents,
34
- stepIdentity,
35
- pos,
36
- rewardMultipliers,
37
- )
38
- }))
39
-
40
- const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n)
41
-
42
- const result: [bigint, bigint] = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n]
43
- return result
44
- })
45
- }
@@ -1,104 +0,0 @@
1
- import {
2
- type Address,
3
- type Promisable,
4
- } from '@xylabs/sdk-js'
5
- import {
6
- BlockViewer,
7
- BlockViewerMoniker,
8
- NetworkStakeStepRewardsViewer,
9
- NetworkStakeStepRewardsViewerMoniker,
10
- PagedPositionsOptions,
11
- PagedStakersOptions,
12
- Position,
13
- type PositionId, StakeEventsViewer, StakeEventsViewerMoniker, StakeViewer, StakeViewerMoniker, type StepIdentity, StepViewer, StepViewerMoniker,
14
- } from '@xyo-network/xl1-protocol-lib'
15
- import {
16
- AbstractCreatableProvider,
17
- creatableProvider,
18
- CreatableProviderParams,
19
- externalBlockRangeFromStep,
20
- } from '@xyo-network/xl1-protocol-sdk'
21
-
22
- /** Configuration params for SimpleStepViewer. */
23
- export interface SimpleStepViewerParams extends CreatableProviderParams {
24
-
25
- }
26
-
27
- /** Provider for viewing step-level staking data including positions, rewards, and stake weights. */
28
- @creatableProvider()
29
- export class SimpleStepViewer extends AbstractCreatableProvider<SimpleStepViewerParams> implements StepViewer {
30
- static readonly defaultMoniker = StepViewerMoniker
31
-
32
- static readonly dependencies = [
33
- BlockViewerMoniker,
34
- NetworkStakeStepRewardsViewerMoniker,
35
- StakeViewerMoniker,
36
- StakeEventsViewerMoniker,
37
- ]
38
-
39
- static readonly monikers = [StepViewerMoniker]
40
- moniker = SimpleStepViewer.defaultMoniker
41
-
42
- private _blockViewer?: BlockViewer
43
- private _networkStakeStepRewardsViewer?: NetworkStakeStepRewardsViewer
44
- private _stakeEventsViewer?: StakeEventsViewer
45
- private _stakeViewer?: StakeViewer
46
-
47
- get rewards() {
48
- return this._networkStakeStepRewardsViewer!
49
- }
50
-
51
- protected get blockViewer() {
52
- return this._blockViewer!
53
- }
54
-
55
- protected get stakeEventsViewer() {
56
- return this._stakeEventsViewer!
57
- }
58
-
59
- protected get stakeViewer() {
60
- return this._stakeViewer!
61
- }
62
-
63
- override async createHandler() {
64
- await super.createHandler()
65
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
66
- this._networkStakeStepRewardsViewer = await this.locator.getInstance<NetworkStakeStepRewardsViewer>(NetworkStakeStepRewardsViewerMoniker)
67
- this._stakeViewer = await this.locator.getInstance<StakeViewer>(StakeViewerMoniker)
68
- this._stakeEventsViewer = await this.locator.getInstance<StakeEventsViewer>(StakeEventsViewerMoniker)
69
- }
70
-
71
- async positionCount(step: StepIdentity): Promise<number> {
72
- const externalRange = await externalBlockRangeFromStep(this.context, this.blockViewer, step)
73
- const positionCount = await this.stakeEventsViewer.positionCount(externalRange)
74
- return positionCount
75
- }
76
-
77
- // TODO: Implement paging
78
- async positions(step: StepIdentity, _options?: PagedPositionsOptions): Promise<Position[]> {
79
- const count = await this.positionCount(step)
80
- const externalRange = await externalBlockRangeFromStep(this.context, this.blockViewer, step)
81
- const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(id => this.stakeViewer.stakeById(id)))
82
- return allPositions.filter(pos => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]))
83
- }
84
-
85
- randomizer(_step: StepIdentity): Promisable<bigint> {
86
- throw new Error('Method [randomizer] not implemented.')
87
- }
88
-
89
- stake(_step: StepIdentity): Promisable<bigint> {
90
- throw new Error('Method [stake] not implemented.')
91
- }
92
-
93
- stakerCount(_step: StepIdentity): Promisable<number> {
94
- throw new Error('Method [stakerCount] not implemented.')
95
- }
96
-
97
- stakers(_step: StepIdentity, _options?: PagedStakersOptions): Promisable<Address[]> {
98
- throw new Error('Method [stakers] not implemented.')
99
- }
100
-
101
- weight(_step: StepIdentity, _positionId?: PositionId): Promisable<bigint> {
102
- throw new Error('Method [weight] not implemented.')
103
- }
104
- }
@@ -1,54 +0,0 @@
1
- import { XyoViewer, XyoViewerMoniker } from '@xyo-network/xl1-protocol-lib'
2
- import {
3
- type DataLakeRunner, DataLakeRunnerMoniker, type DataLakeViewer, DataLakeViewerMoniker,
4
- type XyoConnection, XyoConnectionMoniker, type XyoNetwork, type XyoRunner, XyoRunnerMoniker,
5
- } from '@xyo-network/xl1-protocol-lib'
6
- import {
7
- AbstractCreatableProvider, creatableProvider,
8
- CreatableProviderParams,
9
- } from '@xyo-network/xl1-protocol-sdk'
10
-
11
- /** Configuration params for SimpleXyoConnectionRunner. */
12
- export interface SimpleXyoConnectionRunnerParams extends CreatableProviderParams {
13
-
14
- }
15
-
16
- /** XYO connection provider with both runner (write) and viewer (read) capabilities. */
17
- @creatableProvider()
18
- export class SimpleXyoConnectionRunner<TParams extends SimpleXyoConnectionRunnerParams = SimpleXyoConnectionRunnerParams> extends
19
- AbstractCreatableProvider<TParams> implements XyoConnection {
20
- static readonly defaultMoniker = XyoConnectionMoniker
21
- static readonly dependencies = [XyoRunnerMoniker, XyoViewerMoniker]
22
- static readonly monikers = [XyoConnectionMoniker]
23
- moniker = SimpleXyoConnectionRunner.defaultMoniker
24
-
25
- protected _network?: XyoNetwork
26
- protected _runner?: XyoRunner
27
- protected _storage?: DataLakeRunner | DataLakeViewer
28
- protected _viewer?: XyoViewer
29
-
30
- get network(): XyoNetwork | undefined {
31
- return this._network
32
- }
33
-
34
- get runner(): XyoRunner | undefined {
35
- return this._runner
36
- }
37
-
38
- get storage(): DataLakeRunner | DataLakeViewer | undefined {
39
- return this._storage
40
- }
41
-
42
- get viewer(): XyoViewer | undefined {
43
- return this._viewer
44
- }
45
-
46
- override async createHandler() {
47
- await super.createHandler()
48
- this._runner = await this.locator.getInstance<XyoRunner>(XyoRunnerMoniker)
49
- this._viewer = await this.locator.getInstance<XyoViewer>(XyoViewerMoniker)
50
- const dataLakeRunner = await this.locator.tryGetInstance<DataLakeRunner>(DataLakeRunnerMoniker)
51
- const dataLakeViewer = await this.locator.tryGetInstance<DataLakeViewer>(DataLakeViewerMoniker)
52
- this._storage = dataLakeRunner ?? dataLakeViewer
53
- }
54
- }
@@ -1,47 +0,0 @@
1
- import { XyoViewer, XyoViewerMoniker } from '@xyo-network/xl1-protocol-lib'
2
- import {
3
- type DataLakeViewer, DataLakeViewerMoniker,
4
- type XyoConnection, XyoConnectionMoniker, type XyoNetwork,
5
- } from '@xyo-network/xl1-protocol-lib'
6
- import {
7
- AbstractCreatableProvider, creatableProvider,
8
- CreatableProviderParams,
9
- } from '@xyo-network/xl1-protocol-sdk'
10
-
11
- /** Configuration params for SimpleXyoConnectionViewer. */
12
- export interface SimpleXyoConnectionViewerParams extends CreatableProviderParams {
13
-
14
- }
15
-
16
- /** Read-only XYO connection provider with viewer and optional data lake capabilities. */
17
- @creatableProvider()
18
- export class SimpleXyoConnectionViewer<TParams extends SimpleXyoConnectionViewerParams = SimpleXyoConnectionViewerParams> extends
19
- AbstractCreatableProvider<TParams> implements XyoConnection {
20
- static readonly defaultMoniker = XyoConnectionMoniker
21
- static readonly dependencies = [XyoViewerMoniker]
22
- static readonly monikers = [XyoConnectionMoniker]
23
- moniker = SimpleXyoConnectionViewer.defaultMoniker
24
-
25
- protected _network?: XyoNetwork
26
- protected _storage?: DataLakeViewer
27
- protected _viewer?: XyoViewer
28
-
29
- get network(): XyoNetwork | undefined {
30
- return this._network
31
- }
32
-
33
- get storage(): DataLakeViewer | undefined {
34
- return this._storage
35
- }
36
-
37
- get viewer(): XyoViewer | undefined {
38
- return this._viewer
39
- }
40
-
41
- override async createHandler() {
42
- await super.createHandler()
43
- this._viewer = await this.locator.getInstance<XyoViewer>(XyoViewerMoniker)
44
- const dataLakeViewer = await this.locator.tryGetInstance<DataLakeViewer>(DataLakeViewerMoniker)
45
- this._storage = dataLakeViewer
46
- }
47
- }