@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,69 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import {
3
- FinalizationViewer,
4
- FinalizationViewerMoniker,
5
- NetworkStakeStepRewardsViewer,
6
- NetworkStakeStepRewardsViewerMoniker,
7
- NetworkStakeViewer, NetworkStakeViewerMoniker,
8
- StakeTotalsViewer,
9
- StakeTotalsViewerMoniker,
10
- StakeViewer,
11
- StakeViewerMoniker,
12
- XL1RangeMultipliers,
13
- } from '@xyo-network/xl1-protocol-lib'
14
- import {
15
- AbstractCreatableProvider,
16
- creatableProvider, CreatableProviderParams,
17
- } from '@xyo-network/xl1-protocol-sdk'
18
-
19
- /** Configuration params for SimpleNetworkStakeViewer. */
20
- export interface SimpleNetworkStakeViewerParams extends CreatableProviderParams {
21
- rewardMultipliers?: XL1RangeMultipliers
22
- }
23
-
24
- /** Provider that views network-wide staking information including step rewards and active stake totals. */
25
- @creatableProvider()
26
- export class SimpleNetworkStakeViewer extends AbstractCreatableProvider<SimpleNetworkStakeViewerParams> implements NetworkStakeViewer {
27
- static readonly defaultMoniker = NetworkStakeViewerMoniker
28
- static readonly dependencies = [NetworkStakeStepRewardsViewerMoniker]
29
- static readonly monikers = [NetworkStakeViewerMoniker]
30
- moniker = SimpleNetworkStakeViewer.defaultMoniker
31
-
32
- private _finalizationViewer!: FinalizationViewer
33
- private _stake!: StakeViewer
34
- private _stakeTotals!: StakeTotalsViewer
35
- private _stepRewardsViewer?: NetworkStakeStepRewardsViewer
36
-
37
- get stepRewards(): NetworkStakeStepRewardsViewer {
38
- return assertEx(this._stepRewardsViewer, () => 'Step rewards viewer not initialized')
39
- }
40
-
41
- protected get finalizationViewer() {
42
- return this._finalizationViewer
43
- }
44
-
45
- protected get rewardMultipliers() {
46
- return this.params.rewardMultipliers
47
- }
48
-
49
- protected get stake() {
50
- return this._stake
51
- }
52
-
53
- protected get stakeTotals() {
54
- return this._stakeTotals
55
- }
56
-
57
- async active(blockNumber?: number): Promise<[bigint, number]> {
58
- const resolvedBlockNumber = blockNumber ?? (await this.finalizationViewer.headNumber())
59
- return [await this.stakeTotals.active(resolvedBlockNumber), resolvedBlockNumber]
60
- }
61
-
62
- override async createHandler() {
63
- await super.createHandler()
64
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker)
65
- this._stake = await this.locator.getInstance(StakeViewerMoniker)
66
- this._stakeTotals = await this.locator.getInstance(StakeTotalsViewerMoniker)
67
- this._stepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker)
68
- }
69
- }
@@ -1,118 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import { isArray } from '@xylabs/sdk-js'
3
- import type {
4
- AttoXL1,
5
- BlockViewer,
6
- FinalizationViewer,
7
- NetworkStakeStepRewardsByPositionViewer,
8
- NetworkStakeStepRewardsByPositionViewerOptions,
9
- StakeViewer,
10
- XL1RangeMultipliers,
11
- } from '@xyo-network/xl1-protocol-lib'
12
- import {
13
- asAttoXL1, asXL1BlockRange, BlockViewerMoniker, FinalizationViewerMoniker, NetworkStakeStepRewardsByPositionViewerMoniker,
14
- StakeViewerMoniker,
15
- } from '@xyo-network/xl1-protocol-lib'
16
- import {
17
- AbstractCreatableProvider,
18
- blockRangeSteps,
19
- creatableProvider,
20
- CreatableProviderParams,
21
- } from '@xyo-network/xl1-protocol-sdk'
22
-
23
- import { networkStakeStepRewardEarnedForPosition } from './primitives/index.ts'
24
-
25
- /** Configuration params for SimpleStepRewardsByPositionViewer. */
26
- export interface SimpleStepRewardsByPositionViewerParams extends CreatableProviderParams {
27
- rewardMultipliers?: XL1RangeMultipliers
28
- }
29
-
30
- /** Viewer for network stake step rewards broken down by staking position. */
31
- @creatableProvider()
32
- export class SimpleStepRewardsByPositionViewer extends
33
- AbstractCreatableProvider<SimpleStepRewardsByPositionViewerParams> implements NetworkStakeStepRewardsByPositionViewer {
34
- static readonly defaultMoniker = NetworkStakeStepRewardsByPositionViewerMoniker
35
- static readonly dependencies = [BlockViewerMoniker]
36
- static readonly monikers = [NetworkStakeStepRewardsByPositionViewerMoniker]
37
- moniker = SimpleStepRewardsByPositionViewer.defaultMoniker
38
-
39
- private _blockViewer!: BlockViewer
40
- private _finalizationViewer!: FinalizationViewer
41
- private _stakeViewer!: StakeViewer
42
-
43
- get rewardMultipliers() {
44
- return this.params.rewardMultipliers ?? {}
45
- }
46
-
47
- protected get blockViewer() {
48
- return this._blockViewer!
49
- }
50
-
51
- protected get finalizationViewer() {
52
- return this._finalizationViewer!
53
- }
54
-
55
- protected get stakeViewer() {
56
- return this._stakeViewer!
57
- }
58
-
59
- async bonus({ range, positions }: NetworkStakeStepRewardsByPositionViewerOptions = {}): Promise<Record<number, AttoXL1>> {
60
- const total = await this.total({ range, positions })
61
- const earned = await this.earned({ range, positions })
62
- const result: Record<number, AttoXL1> = {}
63
- for (const pos of Object.keys(total).map(Number)) {
64
- result[pos] = asAttoXL1(total[pos] - (earned[pos] ?? 0n))
65
- }
66
- return result
67
- }
68
-
69
- claimed(_options?: NetworkStakeStepRewardsByPositionViewerOptions | undefined): Promisable<Record<number, AttoXL1>> {
70
- throw new Error('Method [claimed] not implemented.')
71
- }
72
-
73
- override async createHandler() {
74
- await super.createHandler()
75
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
76
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker)
77
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker)
78
- }
79
-
80
- async earned({ range, positions }: NetworkStakeStepRewardsByPositionViewerOptions = {}): Promise<Record<number, AttoXL1>> {
81
- return await this.calculateRewards({ range, positions })
82
- }
83
-
84
- async total({ range, positions }: NetworkStakeStepRewardsByPositionViewerOptions = {}): Promise<Record<number, AttoXL1>> {
85
- return await this.calculateRewards({ range, positions }, this.rewardMultipliers)
86
- }
87
-
88
- unclaimed(_options: NetworkStakeStepRewardsByPositionViewerOptions = {}): Promisable<Record<number, AttoXL1>> {
89
- throw new Error('Method [unclaimed] not implemented.')
90
- }
91
-
92
- protected async calculateRewards(
93
- { range, positions }: NetworkStakeStepRewardsByPositionViewerOptions = {},
94
- rewardMultipliers?: XL1RangeMultipliers,
95
- ): Promise<Record<number, AttoXL1>> {
96
- const result: Record<number, AttoXL1> = {}
97
- const steps = blockRangeSteps(asXL1BlockRange(
98
- range ?? [0, (await this.finalizationViewer.head())[1]],
99
- { name: 'NodeStepRewardsByPositionViewer' },
100
- ), [3, 4, 5, 6, 7])
101
- for (const step of steps) {
102
- if (isArray(positions)) {
103
- for (const positionId of positions) {
104
- const position = await this.stakeViewer.stakeById(positionId)
105
- result[positionId] = asAttoXL1((result[positionId] ?? 0n) + (await networkStakeStepRewardEarnedForPosition(
106
- this.context,
107
- this.blockViewer,
108
- this.stakeViewer.stakeEvents,
109
- step,
110
- position,
111
- rewardMultipliers,
112
- ))[0])
113
- }
114
- }
115
- }
116
- return result
117
- }
118
- }
@@ -1,117 +0,0 @@
1
- import type { Address, Promisable } from '@xylabs/sdk-js'
2
- import { isArray } from '@xylabs/sdk-js'
3
- import type {
4
- AttoXL1,
5
- BlockViewer,
6
- FinalizationViewer,
7
- NetworkStakeStepRewardsByStakerViewer,
8
- NetworkStakeStepRewardsByStakerViewerOptions,
9
- StakeViewer,
10
- XL1RangeMultipliers,
11
- } from '@xyo-network/xl1-protocol-lib'
12
- import {
13
- asAttoXL1, asXL1BlockRange, BlockViewerMoniker, FinalizationViewerMoniker, NetworkStakeStepRewardsByStakerViewerMoniker,
14
- StakeViewerMoniker,
15
- } from '@xyo-network/xl1-protocol-lib'
16
- import {
17
- AbstractCreatableProvider,
18
- blockRangeSteps,
19
- creatableProvider,
20
- CreatableProviderParams,
21
- } from '@xyo-network/xl1-protocol-sdk'
22
-
23
- import { networkStakeStepRewardEarnedForStaker } from './primitives/index.ts'
24
-
25
- /** Configuration params for SimpleStepRewardsByStakerViewer. */
26
- export interface SimpleStepRewardsByStakerViewerParams extends CreatableProviderParams {
27
- rewardMultipliers?: XL1RangeMultipliers
28
- }
29
-
30
- /** Viewer for network stake step rewards broken down by staker address. */
31
- @creatableProvider()
32
- export class SimpleStepRewardsByStakerViewer extends
33
- AbstractCreatableProvider<SimpleStepRewardsByStakerViewerParams> implements NetworkStakeStepRewardsByStakerViewer {
34
- static readonly defaultMoniker = NetworkStakeStepRewardsByStakerViewerMoniker
35
- static readonly dependencies = [BlockViewerMoniker]
36
- static readonly monikers = [NetworkStakeStepRewardsByStakerViewerMoniker]
37
- moniker = SimpleStepRewardsByStakerViewer.defaultMoniker
38
-
39
- private _blockViewer!: BlockViewer
40
- private _finalizationViewer!: FinalizationViewer
41
- private _stakeViewer!: StakeViewer
42
-
43
- get rewardMultipliers() {
44
- return this.params.rewardMultipliers ?? {}
45
- }
46
-
47
- protected get blockViewer() {
48
- return this._blockViewer
49
- }
50
-
51
- protected get finalizationViewer() {
52
- return this._finalizationViewer
53
- }
54
-
55
- protected get stakeViewer() {
56
- return this._stakeViewer
57
- }
58
-
59
- async bonus({ range, stakers }: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
60
- const total = await this.total({ range, stakers })
61
- const earned = await this.earned({ range, stakers })
62
- const result: Record<Address, AttoXL1> = {}
63
- for (const staker of Object.keys(total) as Address[]) {
64
- result[staker] = asAttoXL1(total[staker] - (earned[staker] ?? 0n))
65
- }
66
- return result
67
- }
68
-
69
- claimed(_options?: NetworkStakeStepRewardsByStakerViewerOptions | undefined): Promisable<Record<Address, AttoXL1>> {
70
- throw new Error('Method [claimed] not implemented.')
71
- }
72
-
73
- override async createHandler() {
74
- await super.createHandler()
75
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
76
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker)
77
- this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker)
78
- }
79
-
80
- async earned(options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
81
- return await this.calculateRewards(options)
82
- }
83
-
84
- async total(options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
85
- return await this.calculateRewards(options, this.rewardMultipliers)
86
- }
87
-
88
- unclaimed(_options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promisable<Record<Address, AttoXL1>> {
89
- throw new Error('Method [unclaimed] not implemented.')
90
- }
91
-
92
- protected async calculateRewards(
93
- { range, stakers }: NetworkStakeStepRewardsByStakerViewerOptions = {},
94
- rewardMultipliers?: XL1RangeMultipliers,
95
- ): Promise<Record<Address, AttoXL1>> {
96
- const result: Record<Address, AttoXL1> = {}
97
- const steps = blockRangeSteps(asXL1BlockRange(
98
- range ?? [0, (await this.finalizationViewer.headNumber())],
99
- { name: 'NodeStepRewardsByStakerViewer' },
100
- ), [3, 4, 5, 6, 7])
101
- for (const step of steps) {
102
- if (isArray(stakers)) {
103
- for (const staker of stakers) {
104
- result[staker] = asAttoXL1((result[staker] ?? 0n) + (await networkStakeStepRewardEarnedForStaker(
105
- this.context,
106
- this.blockViewer,
107
- this.stakeViewer,
108
- step,
109
- staker,
110
- rewardMultipliers,
111
- ))[0])
112
- }
113
- }
114
- }
115
- return result
116
- }
117
- }
@@ -1,121 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import type {
3
- AttoXL1,
4
- BlockViewer,
5
- FinalizationViewer,
6
- NetworkStakeStepRewardsByStepViewer,
7
- NetworkStakeStepRewardsByStepViewerOptions,
8
- StakeViewer,
9
- StepIdentityString,
10
- XL1RangeMultipliers,
11
- } from '@xyo-network/xl1-protocol-lib'
12
- import {
13
- asAttoXL1, asXL1BlockRange, BlockViewerMoniker, FinalizationViewerMoniker, NetworkStakeStepRewardsByStepViewerMoniker,
14
- StakeViewerMoniker,
15
- } from '@xyo-network/xl1-protocol-lib'
16
- import type { CreatableProviderParams } from '@xyo-network/xl1-protocol-sdk'
17
- import {
18
- AbstractCreatableProvider,
19
- blockRangeSteps,
20
- creatableProvider, toStepIdentityString,
21
- } from '@xyo-network/xl1-protocol-sdk'
22
-
23
- import { networkStakeStepRewardEarned } from './primitives/index.ts'
24
-
25
- /** Configuration params for SimpleStepRewardsByStepViewer. */
26
- export interface SimpleStepRewardsByStepViewerParams extends CreatableProviderParams {
27
- rewardMultipliers?: XL1RangeMultipliers
28
- }
29
-
30
- /** Viewer for network stake step rewards broken down by step identity. */
31
- @creatableProvider()
32
- export class SimpleStepRewardsByStepViewer extends
33
- AbstractCreatableProvider<SimpleStepRewardsByStepViewerParams> implements NetworkStakeStepRewardsByStepViewer {
34
- static readonly defaultMoniker = NetworkStakeStepRewardsByStepViewerMoniker
35
- static readonly dependencies = [BlockViewerMoniker]
36
- static readonly monikers = [NetworkStakeStepRewardsByStepViewerMoniker]
37
- moniker = SimpleStepRewardsByStepViewer.defaultMoniker
38
-
39
- private _blockViewer!: BlockViewer
40
- private _finalizationViewer!: FinalizationViewer
41
- private _stakeViewer!: StakeViewer
42
-
43
- get rewardMultipliers() {
44
- return this.params.rewardMultipliers ?? {}
45
- }
46
-
47
- protected get blockViewer() {
48
- return this._blockViewer
49
- }
50
-
51
- protected get finalizationViewer() {
52
- return this._finalizationViewer
53
- }
54
-
55
- protected get stakeViewer() {
56
- return this._stakeViewer
57
- }
58
-
59
- async bonus({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
60
- const total = await this.total({ range, steps })
61
- const earned = await this.earned({ range, steps })
62
- const result: Record<StepIdentityString, AttoXL1> = {}
63
- for (const stepString of Object.keys(total) as StepIdentityString[]) {
64
- result[stepString] = asAttoXL1(total[stepString] - (earned[stepString] ?? 0n))
65
- }
66
- return result
67
- }
68
-
69
- claimed(_options?: NetworkStakeStepRewardsByStepViewerOptions | undefined): Promisable<Record<StepIdentityString, AttoXL1>> {
70
- throw new Error('Method [claimed] not implemented.')
71
- }
72
-
73
- override async createHandler() {
74
- await super.createHandler()
75
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
76
- this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker)
77
- this._stakeViewer = await this.locator.getInstance<StakeViewer>(StakeViewerMoniker)
78
- }
79
-
80
- async earned({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
81
- const result: Record<StepIdentityString, AttoXL1> = {}
82
- const resolvedSteps = steps ?? blockRangeSteps(asXL1BlockRange(
83
- range ?? [0, await this.finalizationViewer.headNumber()],
84
- { name: 'NodeStepRewardsByStepViewer' },
85
- ), [3, 4, 5, 6, 7])
86
- for (const step of resolvedSteps) {
87
- const stepIdentityString = toStepIdentityString(step)
88
- result[stepIdentityString] = asAttoXL1((result[stepIdentityString] ?? 0n) + (await networkStakeStepRewardEarned(
89
- this.context,
90
- this.blockViewer,
91
- this.stakeViewer,
92
- step,
93
- ))[0])
94
- }
95
- return result
96
- }
97
-
98
- async total({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
99
- const result: Record<StepIdentityString, AttoXL1> = {}
100
- const resolvedSteps = steps ?? blockRangeSteps(asXL1BlockRange(
101
- range ?? [0, (await this.finalizationViewer.head())[1]],
102
- { name: 'NodeStepRewardsByStepViewer' },
103
- ), [3, 4, 5, 6, 7])
104
- for (const step of resolvedSteps) {
105
- const stepIdentityString = toStepIdentityString(step)
106
- result[stepIdentityString] = asAttoXL1((result[stepIdentityString] ?? 0n)
107
- + (await networkStakeStepRewardEarned(
108
- this.context,
109
- this.blockViewer,
110
- this.stakeViewer,
111
- step,
112
- this.rewardMultipliers,
113
- ))[0])
114
- }
115
- return result
116
- }
117
-
118
- unclaimed(_options: NetworkStakeStepRewardsByStepViewerOptions = {}): Promisable<Record<StepIdentityString, AttoXL1>> {
119
- throw new Error('Method [unclaimed] ot implemented.')
120
- }
121
- }
@@ -1,61 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import type {
3
- AttoXL1,
4
- NetworkStakeStepRewardsRangeOptions,
5
- NetworkStakeStepRewardsTotalViewer,
6
- XL1RangeMultipliers,
7
- } from '@xyo-network/xl1-protocol-lib'
8
- import { asAttoXL1, NetworkStakeStepRewardsTotalViewerMoniker } from '@xyo-network/xl1-protocol-lib'
9
- import {
10
- AbstractCreatableProvider,
11
- creatableProvider,
12
- CreatableProviderParams,
13
- } from '@xyo-network/xl1-protocol-sdk'
14
-
15
- /** Configuration params for SimpleStepRewardsTotalViewer. */
16
- export interface SimpleStepRewardsTotalViewerParams extends CreatableProviderParams {
17
- rewardMultipliers?: XL1RangeMultipliers
18
- }
19
-
20
- /** Viewer for aggregated total network stake step rewards across all positions. */
21
- @creatableProvider()
22
- export class SimpleStepRewardsTotalViewer extends
23
- AbstractCreatableProvider<SimpleStepRewardsTotalViewerParams> implements NetworkStakeStepRewardsTotalViewer {
24
- static readonly defaultMoniker = NetworkStakeStepRewardsTotalViewerMoniker
25
- static readonly dependencies = []
26
- static readonly monikers = [NetworkStakeStepRewardsTotalViewerMoniker]
27
- moniker = SimpleStepRewardsTotalViewer.defaultMoniker
28
-
29
- get rewardMultipliers() {
30
- return this.params.rewardMultipliers ?? {}
31
- }
32
-
33
- async bonus({ range }: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
34
- const total = await this.total({ range })
35
- const earned = await this.earned({ range })
36
- return asAttoXL1(total - earned)
37
- }
38
-
39
- claimed(_options?: NetworkStakeStepRewardsRangeOptions | undefined): Promisable<AttoXL1> {
40
- throw new Error('Method [claimed] not implemented.')
41
- }
42
-
43
- async earned(options: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
44
- return await this.calculateRewards(options)
45
- }
46
-
47
- async total(options: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
48
- return await this.calculateRewards(options, this.rewardMultipliers)
49
- }
50
-
51
- unclaimed(_options: NetworkStakeStepRewardsRangeOptions = {}): Promisable<AttoXL1> {
52
- throw new Error('Method [unclaimed] not implemented.')
53
- }
54
-
55
- protected calculateRewards(
56
- _options: NetworkStakeStepRewardsRangeOptions = {},
57
- _rewardMultipliers?: XL1RangeMultipliers,
58
- ): Promise<AttoXL1> {
59
- throw new Error('Method [calculateRewards] not implemented.')
60
- }
61
- }
@@ -1,83 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import {
3
- BlockViewer,
4
- BlockViewerMoniker,
5
- NetworkStakeStepRewardsByPositionViewer,
6
- NetworkStakeStepRewardsByPositionViewerMoniker,
7
- NetworkStakeStepRewardsByStakerViewer,
8
- NetworkStakeStepRewardsByStakerViewerMoniker,
9
- NetworkStakeStepRewardsByStepViewer,
10
- NetworkStakeStepRewardsByStepViewerMoniker,
11
- NetworkStakeStepRewardsTotalViewer,
12
- NetworkStakeStepRewardsViewer, NetworkStakeStepRewardsViewerMoniker, type XL1RangeMultipliers,
13
- } from '@xyo-network/xl1-protocol-lib'
14
- import {
15
- AbstractCreatableProvider,
16
- creatableProvider,
17
- CreatableProviderParams,
18
- } from '@xyo-network/xl1-protocol-sdk'
19
-
20
- import { SimpleStepRewardsByPositionViewer } from './SimpleStepRewardsByPositionViewer.ts'
21
- import { SimpleStepRewardsByStakerViewer } from './SimpleStepRewardsByStakerViewer.ts'
22
- import { SimpleStepRewardsByStepViewer } from './SimpleStepRewardsByStepViewer.ts'
23
-
24
- /** Configuration params for SimpleStepRewardsViewer. */
25
- export interface NodeStepRewardsViewerParams extends CreatableProviderParams {
26
- rewardMultipliers?: XL1RangeMultipliers
27
- }
28
-
29
- /** Composite viewer for network stake step rewards, providing access to position, staker, and step sub-viewers. */
30
- @creatableProvider()
31
- export class SimpleStepRewardsViewer extends AbstractCreatableProvider<NodeStepRewardsViewerParams> implements NetworkStakeStepRewardsViewer {
32
- static readonly defaultMoniker = NetworkStakeStepRewardsViewerMoniker
33
-
34
- static readonly dependencies = [
35
- BlockViewerMoniker,
36
- NetworkStakeStepRewardsByPositionViewerMoniker,
37
- NetworkStakeStepRewardsByStakerViewerMoniker,
38
- NetworkStakeStepRewardsByStepViewerMoniker,
39
- ]
40
-
41
- static readonly monikers = [NetworkStakeStepRewardsViewerMoniker]
42
- moniker = SimpleStepRewardsViewer.defaultMoniker
43
-
44
- private _blockViewer?: BlockViewer
45
- private _position?: SimpleStepRewardsByPositionViewer
46
- private _staker?: SimpleStepRewardsByStakerViewer
47
- private _step?: SimpleStepRewardsByStepViewer
48
-
49
- get position(): NetworkStakeStepRewardsByPositionViewer {
50
- return assertEx(this._position, () => 'Position viewer not initialized')
51
- }
52
-
53
- get staker(): NetworkStakeStepRewardsByStakerViewer {
54
- return assertEx(this._staker, () => 'Position viewer not initialized')
55
- }
56
-
57
- get step(): NetworkStakeStepRewardsByStepViewer {
58
- return assertEx(this._step, () => 'Step viewer not initialized')
59
- }
60
-
61
- get total(): NetworkStakeStepRewardsTotalViewer {
62
- throw new Error('Method [total] not implemented.')
63
- }
64
-
65
- protected get rewardMultipliers() {
66
- return this.params.rewardMultipliers
67
- }
68
-
69
- override async createHandler() {
70
- await super.createHandler()
71
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
72
- this._position = await this.locator.getInstance<SimpleStepRewardsByPositionViewer>(NetworkStakeStepRewardsByPositionViewerMoniker)
73
- this._staker = await this.locator.getInstance<SimpleStepRewardsByStakerViewer>(NetworkStakeStepRewardsByStakerViewerMoniker)
74
- this._step = await this.locator.getInstance<SimpleStepRewardsByStepViewer>(NetworkStakeStepRewardsByStepViewerMoniker)
75
- }
76
-
77
- protected override async startHandler(): Promise<void> {
78
- await super.startHandler()
79
- await assertEx(this._position, () => 'Position viewer not created').start()
80
- await assertEx(this._staker, () => 'Staker viewer not created').start()
81
- await assertEx(this._step, () => 'Step viewer not created').start()
82
- }
83
- }
@@ -1,5 +0,0 @@
1
- export * from './SimpleStepRewardsByPositionViewer.ts'
2
- export * from './SimpleStepRewardsByStakerViewer.ts'
3
- export * from './SimpleStepRewardsByStepViewer.ts'
4
- export * from './SimpleStepRewardsTotalViewer.ts'
5
- export * from './SimpleStepRewardsViewer.ts'
@@ -1,3 +0,0 @@
1
- export * from './networkStakeStepRewardEarned.ts'
2
- export * from './networkStakeStepRewardEarnedForPosition.ts'
3
- export * from './networkStakeStepRewardEarnedForStaker.ts'
@@ -1,39 +0,0 @@
1
- import type {
2
- BlockViewer,
3
- CachingContext,
4
- StakeViewer,
5
- StepIdentity, XL1RangeMultipliers,
6
- } from '@xyo-network/xl1-protocol-lib'
7
- import { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol-lib'
8
- import { withContextCacheResponse } from '@xyo-network/xl1-protocol-sdk'
9
-
10
- import { networkStakeStepRewardEarnedForPosition } from './networkStakeStepRewardEarnedForPosition.ts'
11
-
12
- /** Calculates the total earned step reward across all network staking positions for a given step. */
13
- export async function networkStakeStepRewardEarned(
14
- context: CachingContext,
15
- blockViewer: BlockViewer,
16
- stakeViewer: StakeViewer,
17
- stepIdentity: StepIdentity,
18
- rewardMultipliers: XL1RangeMultipliers = {},
19
- ): Promise<[bigint, bigint]> {
20
- const cacheKey = `${stepIdentity.block}|${stepIdentity.step}`
21
- return await withContextCacheResponse(context, 'networkStakeStepRewardEarned', cacheKey, async () => {
22
- const positions = (await stakeViewer.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS))
23
- const results = await Promise.all(positions.map((pos) => {
24
- return networkStakeStepRewardEarnedForPosition(
25
- context,
26
- blockViewer,
27
- stakeViewer.stakeEvents,
28
- stepIdentity,
29
- pos,
30
- rewardMultipliers,
31
- )
32
- }))
33
-
34
- const numerator = results.reduce((acc, [positionReward]) => acc + positionReward, 0n)
35
-
36
- const result: [bigint, bigint] = results.length > 0 ? [numerator, results[0][1]] : [0n, 0n]
37
- return result
38
- })
39
- }
@@ -1,49 +0,0 @@
1
- import type {
2
- BlockViewer,
3
- CachingContext,
4
- Position,
5
- StakeEventsViewer,
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
- externalBlockRangeFromStep, stepRewardTotal, weightedStakeForRangeByPosition, withContextCacheResponse,
12
- } from '@xyo-network/xl1-protocol-sdk'
13
-
14
- /** Calculates the step reward earned by a specific staking position, returning [positionReward, totalReward]. */
15
- export async function networkStakeStepRewardEarnedForPosition(
16
- context: CachingContext,
17
- blockViewer: BlockViewer,
18
- stakeEventsViewer: StakeEventsViewer,
19
- stepIdentity: StepIdentity,
20
- position: Position,
21
- rewardMultipliers: XL1RangeMultipliers = {},
22
- ): Promise<[bigint, bigint]> {
23
- const cacheKey = `${stepIdentity.block}|${stepIdentity.step}|${position.id}`
24
- return await withContextCacheResponse(context, 'networkStakeStepRewardEarnedForPosition', cacheKey, async () => {
25
- const range = await externalBlockRangeFromStep(context, blockViewer, stepIdentity)
26
- const numerator = position.staked === XYO_NETWORK_STAKING_ADDRESS
27
- ? await weightedStakeForRangeByPosition(
28
- context,
29
- blockViewer,
30
- stakeEventsViewer,
31
- range,
32
- XYO_NETWORK_STAKING_ADDRESS,
33
- position.id,
34
- )
35
- : 0n
36
-
37
- const denominator = await weightedStakeForRangeByPosition(
38
- context,
39
- blockViewer,
40
- stakeEventsViewer,
41
- range,
42
- )
43
-
44
- const totalReward = await stepRewardTotal(context, blockViewer, stepIdentity, rewardMultipliers)
45
- const positionReward = denominator > 0n ? totalReward * numerator / denominator : 0n
46
- const result: [bigint, bigint] = [positionReward, totalReward]
47
- return result
48
- })
49
- }