@xyo-network/xl1-providers 1.18.0-rc.1

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 (114) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +1173 -0
  3. package/dist/browser/NodeXyoViewer.d.ts +277 -0
  4. package/dist/browser/NodeXyoViewer.d.ts.map +1 -0
  5. package/dist/browser/SimpleNetworkStakeViewer.d.ts +18 -0
  6. package/dist/browser/SimpleNetworkStakeViewer.d.ts.map +1 -0
  7. package/dist/browser/SimpleStepRewardsByPositionViewer.d.ts +24 -0
  8. package/dist/browser/SimpleStepRewardsByPositionViewer.d.ts.map +1 -0
  9. package/dist/browser/SimpleStepRewardsByStakerViewer.d.ts +24 -0
  10. package/dist/browser/SimpleStepRewardsByStakerViewer.d.ts.map +1 -0
  11. package/dist/browser/SimpleStepRewardsByStepViewer.d.ts +25 -0
  12. package/dist/browser/SimpleStepRewardsByStepViewer.d.ts.map +1 -0
  13. package/dist/browser/SimpleStepRewardsTotalViewer.d.ts +21 -0
  14. package/dist/browser/SimpleStepRewardsTotalViewer.d.ts.map +1 -0
  15. package/dist/browser/SimpleStepRewardsViewer.d.ts +24 -0
  16. package/dist/browser/SimpleStepRewardsViewer.d.ts.map +1 -0
  17. package/dist/browser/SimpleStepViewer.d.ts +27 -0
  18. package/dist/browser/SimpleStepViewer.d.ts.map +1 -0
  19. package/dist/browser/SimpleXyoConnection.d.ts +20 -0
  20. package/dist/browser/SimpleXyoConnection.d.ts.map +1 -0
  21. package/dist/browser/buildProviderLocator.d.ts +26 -0
  22. package/dist/browser/buildProviderLocator.d.ts.map +1 -0
  23. package/dist/browser/index.d.ts +11 -0
  24. package/dist/browser/index.d.ts.map +1 -0
  25. package/dist/browser/index.mjs +1196 -0
  26. package/dist/browser/index.mjs.map +1 -0
  27. package/dist/browser/primitives/index.d.ts +4 -0
  28. package/dist/browser/primitives/index.d.ts.map +1 -0
  29. package/dist/browser/primitives/networkStakeStepRewardEarned.d.ts +4 -0
  30. package/dist/browser/primitives/networkStakeStepRewardEarned.d.ts.map +1 -0
  31. package/dist/browser/primitives/networkStakeStepRewardEarnedForPosition.d.ts +4 -0
  32. package/dist/browser/primitives/networkStakeStepRewardEarnedForPosition.d.ts.map +1 -0
  33. package/dist/browser/primitives/networkStakeStepRewardEarnedForStaker.d.ts +5 -0
  34. package/dist/browser/primitives/networkStakeStepRewardEarnedForStaker.d.ts.map +1 -0
  35. package/dist/neutral/NodeXyoViewer.d.ts +277 -0
  36. package/dist/neutral/NodeXyoViewer.d.ts.map +1 -0
  37. package/dist/neutral/SimpleNetworkStakeViewer.d.ts +18 -0
  38. package/dist/neutral/SimpleNetworkStakeViewer.d.ts.map +1 -0
  39. package/dist/neutral/SimpleStepRewardsByPositionViewer.d.ts +24 -0
  40. package/dist/neutral/SimpleStepRewardsByPositionViewer.d.ts.map +1 -0
  41. package/dist/neutral/SimpleStepRewardsByStakerViewer.d.ts +24 -0
  42. package/dist/neutral/SimpleStepRewardsByStakerViewer.d.ts.map +1 -0
  43. package/dist/neutral/SimpleStepRewardsByStepViewer.d.ts +25 -0
  44. package/dist/neutral/SimpleStepRewardsByStepViewer.d.ts.map +1 -0
  45. package/dist/neutral/SimpleStepRewardsTotalViewer.d.ts +21 -0
  46. package/dist/neutral/SimpleStepRewardsTotalViewer.d.ts.map +1 -0
  47. package/dist/neutral/SimpleStepRewardsViewer.d.ts +24 -0
  48. package/dist/neutral/SimpleStepRewardsViewer.d.ts.map +1 -0
  49. package/dist/neutral/SimpleStepViewer.d.ts +27 -0
  50. package/dist/neutral/SimpleStepViewer.d.ts.map +1 -0
  51. package/dist/neutral/SimpleXyoConnection.d.ts +20 -0
  52. package/dist/neutral/SimpleXyoConnection.d.ts.map +1 -0
  53. package/dist/neutral/buildProviderLocator.d.ts +26 -0
  54. package/dist/neutral/buildProviderLocator.d.ts.map +1 -0
  55. package/dist/neutral/index.d.ts +11 -0
  56. package/dist/neutral/index.d.ts.map +1 -0
  57. package/dist/neutral/index.mjs +1196 -0
  58. package/dist/neutral/index.mjs.map +1 -0
  59. package/dist/neutral/primitives/index.d.ts +4 -0
  60. package/dist/neutral/primitives/index.d.ts.map +1 -0
  61. package/dist/neutral/primitives/networkStakeStepRewardEarned.d.ts +4 -0
  62. package/dist/neutral/primitives/networkStakeStepRewardEarned.d.ts.map +1 -0
  63. package/dist/neutral/primitives/networkStakeStepRewardEarnedForPosition.d.ts +4 -0
  64. package/dist/neutral/primitives/networkStakeStepRewardEarnedForPosition.d.ts.map +1 -0
  65. package/dist/neutral/primitives/networkStakeStepRewardEarnedForStaker.d.ts +5 -0
  66. package/dist/neutral/primitives/networkStakeStepRewardEarnedForStaker.d.ts.map +1 -0
  67. package/dist/node/NodeXyoViewer.d.ts +277 -0
  68. package/dist/node/NodeXyoViewer.d.ts.map +1 -0
  69. package/dist/node/SimpleNetworkStakeViewer.d.ts +18 -0
  70. package/dist/node/SimpleNetworkStakeViewer.d.ts.map +1 -0
  71. package/dist/node/SimpleStepRewardsByPositionViewer.d.ts +24 -0
  72. package/dist/node/SimpleStepRewardsByPositionViewer.d.ts.map +1 -0
  73. package/dist/node/SimpleStepRewardsByStakerViewer.d.ts +24 -0
  74. package/dist/node/SimpleStepRewardsByStakerViewer.d.ts.map +1 -0
  75. package/dist/node/SimpleStepRewardsByStepViewer.d.ts +25 -0
  76. package/dist/node/SimpleStepRewardsByStepViewer.d.ts.map +1 -0
  77. package/dist/node/SimpleStepRewardsTotalViewer.d.ts +21 -0
  78. package/dist/node/SimpleStepRewardsTotalViewer.d.ts.map +1 -0
  79. package/dist/node/SimpleStepRewardsViewer.d.ts +24 -0
  80. package/dist/node/SimpleStepRewardsViewer.d.ts.map +1 -0
  81. package/dist/node/SimpleStepViewer.d.ts +27 -0
  82. package/dist/node/SimpleStepViewer.d.ts.map +1 -0
  83. package/dist/node/SimpleXyoConnection.d.ts +20 -0
  84. package/dist/node/SimpleXyoConnection.d.ts.map +1 -0
  85. package/dist/node/buildProviderLocator.d.ts +26 -0
  86. package/dist/node/buildProviderLocator.d.ts.map +1 -0
  87. package/dist/node/index.d.ts +11 -0
  88. package/dist/node/index.d.ts.map +1 -0
  89. package/dist/node/index.mjs +1196 -0
  90. package/dist/node/index.mjs.map +1 -0
  91. package/dist/node/primitives/index.d.ts +4 -0
  92. package/dist/node/primitives/index.d.ts.map +1 -0
  93. package/dist/node/primitives/networkStakeStepRewardEarned.d.ts +4 -0
  94. package/dist/node/primitives/networkStakeStepRewardEarned.d.ts.map +1 -0
  95. package/dist/node/primitives/networkStakeStepRewardEarnedForPosition.d.ts +4 -0
  96. package/dist/node/primitives/networkStakeStepRewardEarnedForPosition.d.ts.map +1 -0
  97. package/dist/node/primitives/networkStakeStepRewardEarnedForStaker.d.ts +5 -0
  98. package/dist/node/primitives/networkStakeStepRewardEarnedForStaker.d.ts.map +1 -0
  99. package/package.json +101 -0
  100. package/src/NodeXyoViewer.ts +522 -0
  101. package/src/SimpleNetworkStakeViewer.ts +47 -0
  102. package/src/SimpleStepRewardsByPositionViewer.ts +105 -0
  103. package/src/SimpleStepRewardsByStakerViewer.ts +102 -0
  104. package/src/SimpleStepRewardsByStepViewer.ts +110 -0
  105. package/src/SimpleStepRewardsTotalViewer.ts +63 -0
  106. package/src/SimpleStepRewardsViewer.ts +75 -0
  107. package/src/SimpleStepViewer.ts +98 -0
  108. package/src/SimpleXyoConnection.ts +52 -0
  109. package/src/buildProviderLocator.ts +137 -0
  110. package/src/index.ts +10 -0
  111. package/src/primitives/index.ts +3 -0
  112. package/src/primitives/networkStakeStepRewardEarned.ts +33 -0
  113. package/src/primitives/networkStakeStepRewardEarnedForPosition.ts +45 -0
  114. package/src/primitives/networkStakeStepRewardEarnedForStaker.ts +43 -0
@@ -0,0 +1,102 @@
1
+ import type { Address, Promisable } from '@xylabs/sdk-js'
2
+ import { isArray } from '@xylabs/sdk-js'
3
+ import type {
4
+ AttoXL1,
5
+ XL1RangeMultipliers,
6
+ } from '@xyo-network/xl1-protocol'
7
+ import { asAttoXL1, asXL1BlockRange } from '@xyo-network/xl1-protocol'
8
+ import {
9
+ AbstractCreatableProvider,
10
+ blockRangeSteps,
11
+ BlockViewer,
12
+ BlockViewerMoniker,
13
+ creatableProvider,
14
+ CreatableProviderParams,
15
+ type NetworkStakeStepRewardsByStakerViewer, NetworkStakeStepRewardsByStakerViewerMoniker,
16
+ type NetworkStakeStepRewardsByStakerViewerOptions, type StakedChainContextRead,
17
+ } from '@xyo-network/xl1-protocol-sdk'
18
+
19
+ import { networkStakeStepRewardEarnedForStaker } from './primitives/index.ts'
20
+
21
+ export interface SimpleStepRewardsByStakerViewerParams extends CreatableProviderParams {
22
+ rewardMultipliers?: XL1RangeMultipliers
23
+ stakedChainContext: StakedChainContextRead
24
+ }
25
+
26
+ @creatableProvider()
27
+ export class SimpleStepRewardsByStakerViewer extends
28
+ AbstractCreatableProvider<SimpleStepRewardsByStakerViewerParams> implements NetworkStakeStepRewardsByStakerViewer {
29
+ static readonly defaultMoniker = NetworkStakeStepRewardsByStakerViewerMoniker
30
+ static readonly monikers = [NetworkStakeStepRewardsByStakerViewerMoniker]
31
+ moniker = SimpleStepRewardsByStakerViewer.defaultMoniker
32
+
33
+ private _blockViewer?: BlockViewer
34
+
35
+ get rewardMultipliers() {
36
+ return this.params.rewardMultipliers ?? {}
37
+ }
38
+
39
+ get stakedChainContext() {
40
+ return this.params.stakedChainContext
41
+ }
42
+
43
+ protected get blockViewer() {
44
+ return this._blockViewer!
45
+ }
46
+
47
+ async bonus({ range, stakers }: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
48
+ const total = await this.total({ range, stakers })
49
+ const earned = await this.earned({ range, stakers })
50
+ const result: Record<Address, AttoXL1> = {}
51
+ for (const staker of Object.keys(total) as Address[]) {
52
+ result[staker] = asAttoXL1(total[staker] - (earned[staker] ?? 0n))
53
+ }
54
+ return result
55
+ }
56
+
57
+ claimed(_options?: NetworkStakeStepRewardsByStakerViewerOptions | undefined): Promisable<Record<Address, AttoXL1>> {
58
+ throw new Error('Method [claimed] not implemented.')
59
+ }
60
+
61
+ override async createHandler() {
62
+ await super.createHandler()
63
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
64
+ }
65
+
66
+ async earned(options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
67
+ return await this.calculateRewards(options)
68
+ }
69
+
70
+ async total(options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promise<Record<Address, AttoXL1>> {
71
+ return await this.calculateRewards(options, this.rewardMultipliers)
72
+ }
73
+
74
+ unclaimed(_options: NetworkStakeStepRewardsByStakerViewerOptions = {}): Promisable<Record<Address, AttoXL1>> {
75
+ throw new Error('Method [unclaimed] not implemented.')
76
+ }
77
+
78
+ protected async calculateRewards(
79
+ { range, stakers }: NetworkStakeStepRewardsByStakerViewerOptions = {},
80
+ rewardMultipliers?: XL1RangeMultipliers,
81
+ ): Promise<Record<Address, AttoXL1>> {
82
+ const result: Record<Address, AttoXL1> = {}
83
+ const steps = blockRangeSteps(asXL1BlockRange(
84
+ range ?? [0, (await this.stakedChainContext.head())[1]],
85
+ { name: 'NodeStepRewardsByStakerViewer' },
86
+ ), [3, 4, 5, 6, 7])
87
+ for (const step of steps) {
88
+ if (isArray(stakers)) {
89
+ for (const staker of stakers) {
90
+ result[staker] = asAttoXL1((result[staker] ?? 0n) + (await networkStakeStepRewardEarnedForStaker(
91
+ this.stakedChainContext,
92
+ this.blockViewer,
93
+ step,
94
+ staker,
95
+ rewardMultipliers,
96
+ ))[0])
97
+ }
98
+ }
99
+ }
100
+ return result
101
+ }
102
+ }
@@ -0,0 +1,110 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ AttoXL1,
4
+ StepIdentityString,
5
+ XL1RangeMultipliers,
6
+ } from '@xyo-network/xl1-protocol'
7
+ import { asAttoXL1, asXL1BlockRange } from '@xyo-network/xl1-protocol'
8
+ import type {
9
+ BlockViewer,
10
+ CreatableProviderParams,
11
+ NetworkStakeStepRewardsByStepViewer,
12
+ NetworkStakeStepRewardsByStepViewerOptions,
13
+ StakedChainContextRead,
14
+ StakeEventsViewer,
15
+ } from '@xyo-network/xl1-protocol-sdk'
16
+ import {
17
+ AbstractCreatableProvider,
18
+ blockRangeSteps,
19
+ BlockViewerMoniker,
20
+ creatableProvider, NetworkStakeStepRewardsByStepViewerMoniker, toStepIdentityString,
21
+ } from '@xyo-network/xl1-protocol-sdk'
22
+
23
+ import { networkStakeStepRewardEarned } from './primitives/index.ts'
24
+
25
+ export interface SimpleStepRewardsByStepViewerParams extends CreatableProviderParams {
26
+ rewardMultipliers?: XL1RangeMultipliers
27
+ stakeEventsViewer: StakeEventsViewer
28
+ stakedChainContext: StakedChainContextRead
29
+ }
30
+
31
+ @creatableProvider()
32
+ export class SimpleStepRewardsByStepViewer extends
33
+ AbstractCreatableProvider<SimpleStepRewardsByStepViewerParams> implements NetworkStakeStepRewardsByStepViewer {
34
+ static readonly defaultMoniker = NetworkStakeStepRewardsByStepViewerMoniker
35
+ static readonly monikers = [NetworkStakeStepRewardsByStepViewerMoniker]
36
+ moniker = SimpleStepRewardsByStepViewer.defaultMoniker
37
+
38
+ private _blockViewer?: BlockViewer
39
+
40
+ get rewardMultipliers() {
41
+ return this.params.rewardMultipliers ?? {}
42
+ }
43
+
44
+ get stakedChainContext() {
45
+ return this.params.stakedChainContext
46
+ }
47
+
48
+ protected get blockViewer() {
49
+ return this._blockViewer!
50
+ }
51
+
52
+ async bonus({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
53
+ const total = await this.total({ range, steps })
54
+ const earned = await this.earned({ range, steps })
55
+ const result: Record<StepIdentityString, AttoXL1> = {}
56
+ for (const stepString of Object.keys(total) as StepIdentityString[]) {
57
+ result[stepString] = asAttoXL1(total[stepString] - (earned[stepString] ?? 0n))
58
+ }
59
+ return result
60
+ }
61
+
62
+ claimed(_options?: NetworkStakeStepRewardsByStepViewerOptions | undefined): Promisable<Record<StepIdentityString, AttoXL1>> {
63
+ throw new Error('Method [claimed] not implemented.')
64
+ }
65
+
66
+ override async createHandler() {
67
+ await super.createHandler()
68
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
69
+ }
70
+
71
+ async earned({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
72
+ const result: Record<StepIdentityString, AttoXL1> = {}
73
+ const resolvedSteps = steps ?? blockRangeSteps(asXL1BlockRange(
74
+ range ?? [0, (await this.stakedChainContext.head())[1]],
75
+ { name: 'NodeStepRewardsByStepViewer' },
76
+ ), [3, 4, 5, 6, 7])
77
+ for (const step of resolvedSteps) {
78
+ const stepIdentityString = toStepIdentityString(step)
79
+ result[stepIdentityString] = asAttoXL1((result[stepIdentityString] ?? 0n) + (await networkStakeStepRewardEarned(
80
+ this.stakedChainContext,
81
+ this.blockViewer,
82
+ step,
83
+ ))[0])
84
+ }
85
+ return result
86
+ }
87
+
88
+ async total({ range, steps }: NetworkStakeStepRewardsByStepViewerOptions = {}): Promise<Record<StepIdentityString, AttoXL1>> {
89
+ const result: Record<StepIdentityString, AttoXL1> = {}
90
+ const resolvedSteps = steps ?? blockRangeSteps(asXL1BlockRange(
91
+ range ?? [0, (await this.stakedChainContext.head())[1]],
92
+ { name: 'NodeStepRewardsByStepViewer' },
93
+ ), [3, 4, 5, 6, 7])
94
+ for (const step of resolvedSteps) {
95
+ const stepIdentityString = toStepIdentityString(step)
96
+ result[stepIdentityString] = asAttoXL1((result[stepIdentityString] ?? 0n)
97
+ + (await networkStakeStepRewardEarned(
98
+ this.stakedChainContext,
99
+ this.blockViewer,
100
+ step,
101
+ this.rewardMultipliers,
102
+ ))[0])
103
+ }
104
+ return result
105
+ }
106
+
107
+ unclaimed(_options: NetworkStakeStepRewardsByStepViewerOptions = {}): Promisable<Record<StepIdentityString, AttoXL1>> {
108
+ throw new Error('Method [unclaimed] ot implemented.')
109
+ }
110
+ }
@@ -0,0 +1,63 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ AttoXL1,
4
+ XL1RangeMultipliers,
5
+ } from '@xyo-network/xl1-protocol'
6
+ import { asAttoXL1 } from '@xyo-network/xl1-protocol'
7
+ import {
8
+ AbstractCreatableProvider,
9
+ creatableProvider,
10
+ CreatableProviderParams,
11
+ type NetworkStakeStepRewardsRangeOptions, type NetworkStakeStepRewardsTotalViewer, NetworkStakeStepRewardsTotalViewerMoniker,
12
+ type StakedChainContextRead,
13
+ } from '@xyo-network/xl1-protocol-sdk'
14
+
15
+ export interface SimpleStepRewardsTotalViewerParams extends CreatableProviderParams {
16
+ rewardMultipliers?: XL1RangeMultipliers
17
+ stakedChainContext: StakedChainContextRead
18
+ }
19
+
20
+ @creatableProvider()
21
+ export class SimpleStepRewardsTotalViewer extends
22
+ AbstractCreatableProvider<SimpleStepRewardsTotalViewerParams> implements NetworkStakeStepRewardsTotalViewer {
23
+ static readonly defaultMoniker = NetworkStakeStepRewardsTotalViewerMoniker
24
+ static readonly monikers = [NetworkStakeStepRewardsTotalViewerMoniker]
25
+ moniker = SimpleStepRewardsTotalViewer.defaultMoniker
26
+
27
+ get rewardMultipliers() {
28
+ return this.params.rewardMultipliers ?? {}
29
+ }
30
+
31
+ get stakedChainContext() {
32
+ return this.params.stakedChainContext
33
+ }
34
+
35
+ async bonus({ range }: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
36
+ const total = await this.total({ range })
37
+ const earned = await this.earned({ range })
38
+ return asAttoXL1(total - earned)
39
+ }
40
+
41
+ claimed(_options?: NetworkStakeStepRewardsRangeOptions | undefined): Promisable<AttoXL1> {
42
+ throw new Error('Method [claimed] not implemented.')
43
+ }
44
+
45
+ async earned(options: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
46
+ return await this.calculateRewards(options)
47
+ }
48
+
49
+ async total(options: NetworkStakeStepRewardsRangeOptions = {}): Promise<AttoXL1> {
50
+ return await this.calculateRewards(options, this.rewardMultipliers)
51
+ }
52
+
53
+ unclaimed(_options: NetworkStakeStepRewardsRangeOptions = {}): Promisable<AttoXL1> {
54
+ throw new Error('Method [unclaimed] not implemented.')
55
+ }
56
+
57
+ protected calculateRewards(
58
+ _options: NetworkStakeStepRewardsRangeOptions = {},
59
+ _rewardMultipliers?: XL1RangeMultipliers,
60
+ ): Promise<AttoXL1> {
61
+ throw new Error('Method [calculateRewards] not implemented.')
62
+ }
63
+ }
@@ -0,0 +1,75 @@
1
+ import { assertEx } from '@xylabs/sdk-js'
2
+ import type { XL1RangeMultipliers } from '@xyo-network/xl1-protocol'
3
+ import {
4
+ AbstractCreatableProvider,
5
+ BlockViewer,
6
+ BlockViewerMoniker,
7
+ creatableProvider,
8
+ CreatableProviderParams,
9
+ type NetworkStakeStepRewardsByPositionViewer, NetworkStakeStepRewardsByPositionViewerMoniker,
10
+ type NetworkStakeStepRewardsByStakerViewer, NetworkStakeStepRewardsByStakerViewerMoniker, type NetworkStakeStepRewardsByStepViewer,
11
+ NetworkStakeStepRewardsByStepViewerMoniker,
12
+ type NetworkStakeStepRewardsTotalViewer, type NetworkStakeStepRewardsViewer,
13
+ NetworkStakeStepRewardsViewerMoniker,
14
+ type StakedChainContextRead,
15
+ } from '@xyo-network/xl1-protocol-sdk'
16
+
17
+ import { SimpleStepRewardsByPositionViewer } from './SimpleStepRewardsByPositionViewer.ts'
18
+ import { SimpleStepRewardsByStakerViewer } from './SimpleStepRewardsByStakerViewer.ts'
19
+ import { SimpleStepRewardsByStepViewer } from './SimpleStepRewardsByStepViewer.ts'
20
+
21
+ export interface NodeStepRewardsViewerParams extends CreatableProviderParams {
22
+ rewardMultipliers?: XL1RangeMultipliers
23
+ }
24
+
25
+ @creatableProvider()
26
+ export class SimpleStepRewardsViewer extends AbstractCreatableProvider<NodeStepRewardsViewerParams> implements NetworkStakeStepRewardsViewer {
27
+ static readonly defaultMoniker = NetworkStakeStepRewardsViewerMoniker
28
+ static readonly monikers = [NetworkStakeStepRewardsViewerMoniker]
29
+ moniker = SimpleStepRewardsViewer.defaultMoniker
30
+
31
+ private _blockViewer?: BlockViewer
32
+ private _position?: SimpleStepRewardsByPositionViewer
33
+ private _stakedChainContext?: StakedChainContextRead
34
+ private _staker?: SimpleStepRewardsByStakerViewer
35
+ private _step?: SimpleStepRewardsByStepViewer
36
+
37
+ get position(): NetworkStakeStepRewardsByPositionViewer {
38
+ return assertEx(this._position, () => 'Position viewer not initialized')
39
+ }
40
+
41
+ get staker(): NetworkStakeStepRewardsByStakerViewer {
42
+ return assertEx(this._staker, () => 'Position viewer not initialized')
43
+ }
44
+
45
+ get step(): NetworkStakeStepRewardsByStepViewer {
46
+ return assertEx(this._step, () => 'Step viewer not initialized')
47
+ }
48
+
49
+ get total(): NetworkStakeStepRewardsTotalViewer {
50
+ throw new Error('Method [total] not implemented.')
51
+ }
52
+
53
+ protected get rewardMultipliers() {
54
+ return this.params.rewardMultipliers
55
+ }
56
+
57
+ protected get stakedChainContext() {
58
+ return this._stakedChainContext
59
+ }
60
+
61
+ override async createHandler() {
62
+ await super.createHandler()
63
+ this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
64
+ this._position = await this.locator.getInstance<SimpleStepRewardsByPositionViewer>(NetworkStakeStepRewardsByPositionViewerMoniker)
65
+ this._staker = await this.locator.getInstance<SimpleStepRewardsByStakerViewer>(NetworkStakeStepRewardsByStakerViewerMoniker)
66
+ this._step = await this.locator.getInstance<SimpleStepRewardsByStepViewer>(NetworkStakeStepRewardsByStepViewerMoniker)
67
+ }
68
+
69
+ protected override async startHandler(): Promise<void> {
70
+ await super.startHandler()
71
+ await assertEx(this._position, () => 'Position viewer not created').start()
72
+ await assertEx(this._staker, () => 'Staker viewer not created').start()
73
+ await assertEx(this._step, () => 'Step viewer not created').start()
74
+ }
75
+ }
@@ -0,0 +1,98 @@
1
+ import {
2
+ type Address,
3
+ type Promisable,
4
+ } from '@xylabs/sdk-js'
5
+ import type { PositionId, StepIdentity } from '@xyo-network/xl1-protocol'
6
+ import {
7
+ AbstractCreatableProvider,
8
+ BlockViewer,
9
+ BlockViewerMoniker,
10
+ creatableProvider,
11
+ CreatableProviderParams,
12
+ externalBlockRangeFromStep,
13
+ NetworkStakeStepRewardsViewer,
14
+ NetworkStakeStepRewardsViewerMoniker,
15
+ type PagedPositionsOptions,
16
+ type PagedStakersOptions,
17
+ type Position,
18
+ StakeEventsViewer,
19
+ StakeEventsViewerMoniker,
20
+ StakeViewer,
21
+ StakeViewerMoniker,
22
+ type StepViewer,
23
+ StepViewerMoniker,
24
+ } from '@xyo-network/xl1-protocol-sdk'
25
+
26
+ export interface SimpleStepViewerParams extends CreatableProviderParams {
27
+
28
+ }
29
+
30
+ @creatableProvider()
31
+ export class SimpleStepViewer extends AbstractCreatableProvider<SimpleStepViewerParams> implements StepViewer {
32
+ static readonly defaultMoniker = StepViewerMoniker
33
+ static readonly monikers = [StepViewerMoniker]
34
+ moniker = SimpleStepViewer.defaultMoniker
35
+
36
+ private _blockViewer?: BlockViewer
37
+ private _networkStakeStepRewardsViewer?: NetworkStakeStepRewardsViewer
38
+ private _stakeEventsViewer?: StakeEventsViewer
39
+ private _stakeViewer?: StakeViewer
40
+
41
+ get rewards() {
42
+ return this._networkStakeStepRewardsViewer!
43
+ }
44
+
45
+ protected get blockViewer() {
46
+ return this._blockViewer!
47
+ }
48
+
49
+ protected get stakeEventsViewer() {
50
+ return this._stakeEventsViewer!
51
+ }
52
+
53
+ protected get stakeViewer() {
54
+ return this._stakeViewer!
55
+ }
56
+
57
+ override async createHandler() {
58
+ await super.createHandler()
59
+ this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
60
+ this._networkStakeStepRewardsViewer = await this.locator.getInstance<NetworkStakeStepRewardsViewer>(NetworkStakeStepRewardsViewerMoniker)
61
+ this._stakeViewer = await this.locator.getInstance<StakeViewer>(StakeViewerMoniker)
62
+ this._stakeEventsViewer = await this.locator.getInstance<StakeEventsViewer>(StakeEventsViewerMoniker)
63
+ }
64
+
65
+ async positionCount(step: StepIdentity): Promise<number> {
66
+ const externalRange = await externalBlockRangeFromStep(this.context, this.blockViewer, step)
67
+ const positionCount = await this.stakeEventsViewer.positionCount(externalRange)
68
+ return positionCount
69
+ }
70
+
71
+ // TODO: Implement paging
72
+ async positions(step: StepIdentity, _options?: PagedPositionsOptions): Promise<Position[]> {
73
+ const count = await this.positionCount(step)
74
+ const externalRange = await externalBlockRangeFromStep(this.context, this.blockViewer, step)
75
+ const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(id => this.stakeViewer.stakeById(id)))
76
+ return allPositions.filter(pos => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]))
77
+ }
78
+
79
+ randomizer(_step: StepIdentity): Promisable<bigint> {
80
+ throw new Error('Method [randomizer] not implemented.')
81
+ }
82
+
83
+ stake(_step: StepIdentity): Promisable<bigint> {
84
+ throw new Error('Method [stake] not implemented.')
85
+ }
86
+
87
+ stakerCount(_step: StepIdentity): Promisable<number> {
88
+ throw new Error('Method [stakerCount] not implemented.')
89
+ }
90
+
91
+ stakers(_step: StepIdentity, _options?: PagedStakersOptions): Promisable<Address[]> {
92
+ throw new Error('Method [stakers] not implemented.')
93
+ }
94
+
95
+ weight(_step: StepIdentity, _positionId?: PositionId): Promisable<bigint> {
96
+ throw new Error('Method [weight] not implemented.')
97
+ }
98
+ }
@@ -0,0 +1,52 @@
1
+ import { CreatableParams } from '@xylabs/sdk-js'
2
+ import {
3
+ AbstractCreatableProvider,
4
+ creatableProvider,
5
+ type CreatableProviderContext,
6
+ type DataLakeRunner, DataLakeRunnerMoniker, type DataLakeViewer, DataLakeViewerMoniker,
7
+ type XyoConnection, XyoConnectionMoniker, type XyoNetwork, type XyoRunner, XyoRunnerMoniker,
8
+ type XyoViewer,
9
+ XyoViewerMoniker,
10
+ } from '@xyo-network/xl1-protocol-sdk'
11
+
12
+ export interface SimpleXyoConnectionParams<TContext extends CreatableProviderContext = CreatableProviderContext> extends CreatableParams {
13
+ context: TContext
14
+ }
15
+
16
+ @creatableProvider()
17
+ export class SimpleXyoConnection<TParams extends SimpleXyoConnectionParams = SimpleXyoConnectionParams> extends
18
+ AbstractCreatableProvider<TParams> implements XyoConnection {
19
+ static readonly defaultMoniker = XyoConnectionMoniker
20
+ static readonly monikers = [XyoConnectionMoniker]
21
+ moniker = SimpleXyoConnection.defaultMoniker
22
+
23
+ protected _network?: XyoNetwork
24
+ protected _runner?: XyoRunner
25
+ protected _storage?: DataLakeRunner | DataLakeViewer
26
+ protected _viewer?: XyoViewer
27
+
28
+ get network(): XyoNetwork | undefined {
29
+ return this._network
30
+ }
31
+
32
+ get runner(): XyoRunner | undefined {
33
+ return this._runner
34
+ }
35
+
36
+ get storage(): DataLakeRunner | DataLakeViewer | undefined {
37
+ return this._storage
38
+ }
39
+
40
+ get viewer(): XyoViewer | undefined {
41
+ return this._viewer
42
+ }
43
+
44
+ override async createHandler() {
45
+ await super.createHandler()
46
+ this._runner = await this.locator.getInstance<XyoRunner>(XyoRunnerMoniker)
47
+ this._viewer = await this.locator.getInstance<XyoViewer>(XyoViewerMoniker)
48
+ const dataLakeRunner = await this.locator.tryGetInstance<DataLakeRunner>(DataLakeRunnerMoniker)
49
+ const dataLakeViewer = await this.locator.tryGetInstance<DataLakeViewer>(DataLakeViewerMoniker)
50
+ this._storage = dataLakeRunner ?? dataLakeViewer
51
+ }
52
+ }
@@ -0,0 +1,137 @@
1
+ import type { ArchivistInstance } from '@xyo-network/archivist-model'
2
+ import type { NodeInstance } from '@xyo-network/node-model'
3
+ import type {
4
+ BalanceStepSummaryContext,
5
+ CreatableProviderContext, TransfersStepSummaryContext,
6
+ } from '@xyo-network/xl1-protocol-sdk'
7
+ import {
8
+ getDefaultConfig, ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockViewer,
9
+ SimpleMempoolRunner, SimpleMempoolViewer, SimpleStakeEventsViewer,
10
+ SimpleStakeViewer,
11
+ SimpleTimeSyncViewer,
12
+ SimpleXyoRunner,
13
+ } from '@xyo-network/xl1-protocol-sdk'
14
+ import type { TransportFactory } from '@xyo-network/xl1-rpc'
15
+ import {
16
+ AccountBalanceViewerRpcSchemas,
17
+ BlockViewerRpcSchemas,
18
+ DataLakeViewerRpcSchemas,
19
+ JsonRpcAccountBalanceViewer, JsonRpcBlockViewer, JsonRpcDataLakeViewer, JsonRpcMempoolRunner, JsonRpcMempoolViewer,
20
+ JsonRpcNetworkStakeViewer, JsonRpcNetworkStakingStepRewardsViewer, JsonRpcStakeTotalsViewer,
21
+ JsonRpcTimeSyncViewer,
22
+ JsonRpcXyoRunner,
23
+ JsonRpcXyoViewer,
24
+ MempoolRunnerRpcSchemas,
25
+ MempoolViewerRpcSchemas,
26
+ NetworkStakeViewerRpcSchemas,
27
+ StakeTotalsViewerRpcSchemas,
28
+ TimeSyncViewerRpcSchemas,
29
+ XyoRunnerRpcSchemas,
30
+ XyoViewerRpcSchemas,
31
+ } from '@xyo-network/xl1-rpc'
32
+
33
+ import { NodeXyoViewer } from './NodeXyoViewer.ts'
34
+ import { SimpleNetworkStakeViewer } from './SimpleNetworkStakeViewer.ts'
35
+ import { SimpleStepRewardsByPositionViewer } from './SimpleStepRewardsByPositionViewer.ts'
36
+ import { SimpleStepRewardsByStakerViewer } from './SimpleStepRewardsByStakerViewer.ts'
37
+ import { SimpleStepRewardsByStepViewer } from './SimpleStepRewardsByStepViewer.ts'
38
+ import { SimpleStepRewardsTotalViewer } from './SimpleStepRewardsTotalViewer.ts'
39
+ import { SimpleStepRewardsViewer } from './SimpleStepRewardsViewer.ts'
40
+ import { SimpleStepViewer } from './SimpleStepViewer.ts'
41
+ import { SimpleXyoConnection } from './SimpleXyoConnection.ts'
42
+
43
+ export interface BuildProviderLocatorParams {
44
+ context?: Partial<CreatableProviderContext>
45
+ }
46
+
47
+ export function buildProviderLocator({ context = {} }: BuildProviderLocatorParams = {}) {
48
+ const {
49
+ config = getDefaultConfig(), locator, singletons = {}, ...restOfContext
50
+ } = context
51
+ return new ProviderFactoryLocator({
52
+ ...restOfContext, config, singletons,
53
+ }, locator?.registry)
54
+ }
55
+
56
+ export interface BuildSimpleProviderLocatorParams extends BuildProviderLocatorParams {
57
+
58
+ }
59
+
60
+ export function buildSimpleProviderLocator(params: BuildSimpleProviderLocatorParams = {}) {
61
+ const locator = buildProviderLocator(params)
62
+ return locator.registerMany([
63
+ SimpleStakeViewer.factory<SimpleStakeViewer>(),
64
+ SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(),
65
+ SimpleNetworkStakeViewer.factory<SimpleNetworkStakeViewer>(),
66
+ SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(),
67
+ SimpleStepViewer.factory<SimpleStepViewer>(),
68
+ SimpleStepRewardsViewer.factory<SimpleStepRewardsViewer>(),
69
+ SimpleStepRewardsByPositionViewer.factory<SimpleStepRewardsByPositionViewer>(),
70
+ SimpleStepRewardsByStakerViewer.factory<SimpleStepRewardsByStakerViewer>(),
71
+ SimpleStepRewardsByStepViewer.factory<SimpleStepRewardsByStepViewer>(),
72
+ SimpleStepRewardsTotalViewer.factory<SimpleStepRewardsTotalViewer>(),
73
+ SimpleStakeViewer.factory<SimpleStakeViewer>(),
74
+ SimpleXyoConnection.factory<SimpleXyoConnection>(),
75
+ ])
76
+ }
77
+
78
+ export interface BuildJsonRpcProviderLocatorParams extends BuildProviderLocatorParams {
79
+ transportFactory: TransportFactory
80
+ }
81
+
82
+ export async function buildJsonRpcProviderLocator(params: BuildJsonRpcProviderLocatorParams) {
83
+ const locator = buildProviderLocator(params)
84
+ const transportFactory = params.transportFactory
85
+ return locator.registerMany([
86
+ JsonRpcStakeTotalsViewer.factory<JsonRpcStakeTotalsViewer>({ transport: await transportFactory(StakeTotalsViewerRpcSchemas) }),
87
+ JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>({ transport: await transportFactory(AccountBalanceViewerRpcSchemas) }),
88
+ JsonRpcBlockViewer.factory<JsonRpcBlockViewer>({ transport: await transportFactory(BlockViewerRpcSchemas) }),
89
+ JsonRpcDataLakeViewer.factory<JsonRpcDataLakeViewer>({ transport: await transportFactory(DataLakeViewerRpcSchemas) }),
90
+ JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>({ transport: await transportFactory(MempoolRunnerRpcSchemas) }),
91
+ JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>({ transport: await transportFactory(MempoolViewerRpcSchemas) }),
92
+ JsonRpcNetworkStakeViewer.factory<JsonRpcNetworkStakeViewer>({ transport: await transportFactory(NetworkStakeViewerRpcSchemas) }),
93
+ JsonRpcTimeSyncViewer.factory<JsonRpcTimeSyncViewer>({ transport: await transportFactory(TimeSyncViewerRpcSchemas) }),
94
+ JsonRpcNetworkStakingStepRewardsViewer.factory<JsonRpcNetworkStakingStepRewardsViewer>({ transport: await transportFactory(NetworkStakeViewerRpcSchemas) }),
95
+ JsonRpcXyoRunner.factory<JsonRpcXyoRunner>({ transport: await transportFactory(XyoRunnerRpcSchemas) }),
96
+ JsonRpcXyoViewer.factory<JsonRpcXyoViewer>({ transport: await transportFactory(XyoViewerRpcSchemas) }),
97
+ SimpleStakeViewer.factory<SimpleStakeViewer>(),
98
+ SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(),
99
+ SimpleStepViewer.factory<SimpleStepViewer>(),
100
+ SimpleXyoConnection.factory<SimpleXyoConnection>(),
101
+ ])
102
+ }
103
+
104
+ export interface BuildLocalProviderLocatorParams extends BuildProviderLocatorParams {
105
+ balanceSummaryContext: BalanceStepSummaryContext
106
+ finalizedArchivist: ArchivistInstance
107
+ node: NodeInstance
108
+ pendingBlocksArchivist: ArchivistInstance
109
+ pendingTransactionsArchivist: ArchivistInstance
110
+ transfersSummaryContext: TransfersStepSummaryContext
111
+ }
112
+
113
+ export function buildLocalProviderLocator({
114
+ balanceSummaryContext, finalizedArchivist, pendingBlocksArchivist,
115
+ pendingTransactionsArchivist,
116
+ transfersSummaryContext, node,
117
+ ...params
118
+ }: BuildLocalProviderLocatorParams) {
119
+ const locator = buildSimpleProviderLocator(params)
120
+ return locator.registerMany([
121
+ SimpleMempoolViewer.factory<SimpleMempoolViewer>({
122
+ pendingTransactionsArchivist,
123
+ pendingBlocksArchivist,
124
+ }),
125
+ SimpleMempoolRunner.factory<SimpleMempoolRunner>({
126
+ pendingTransactionsArchivist,
127
+ pendingBlocksArchivist,
128
+ }),
129
+ SimpleAccountBalanceViewer.factory<SimpleAccountBalanceViewer>({
130
+ balanceSummaryContext,
131
+ transfersSummaryContext,
132
+ }),
133
+ SimpleBlockViewer.factory<SimpleBlockViewer>({ finalizedArchivist }),
134
+ SimpleXyoRunner.factory<SimpleXyoRunner>({ pendingTransactionsArchivist }),
135
+ NodeXyoViewer.factory<NodeXyoViewer>({ node }),
136
+ ])
137
+ }
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ export * from './buildProviderLocator.ts'
2
+ export * from './NodeXyoViewer.ts'
3
+ export * from './SimpleNetworkStakeViewer.ts'
4
+ export * from './SimpleStepRewardsByPositionViewer.ts'
5
+ export * from './SimpleStepRewardsByStakerViewer.ts'
6
+ export * from './SimpleStepRewardsByStepViewer.ts'
7
+ export * from './SimpleStepRewardsTotalViewer.ts'
8
+ export * from './SimpleStepRewardsViewer.ts'
9
+ export * from './SimpleStepViewer.ts'
10
+ export * from './SimpleXyoConnection.ts'
@@ -0,0 +1,3 @@
1
+ export * from './networkStakeStepRewardEarned.ts'
2
+ export * from './networkStakeStepRewardEarnedForPosition.ts'
3
+ export * from './networkStakeStepRewardEarnedForStaker.ts'