@xyo-network/chain-services 1.17.7 → 1.18.0

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 (143) hide show
  1. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts +3 -3
  2. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
  3. package/dist/neutral/BaseService.d.ts +2 -2
  4. package/dist/neutral/BaseService.d.ts.map +1 -1
  5. package/dist/neutral/ChainService/Evm/Evm.d.ts +3 -4
  6. package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
  7. package/dist/neutral/ChainService/Memory/Memory.d.ts +3 -4
  8. package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
  9. package/dist/neutral/ChainValidator/XyoValidator.d.ts +4 -2
  10. package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
  11. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +0 -1
  12. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
  13. package/dist/neutral/Schemas/BaseSchemasService.d.ts +1 -1
  14. package/dist/neutral/Schemas/BaseSchemasService.d.ts.map +1 -1
  15. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +5 -3
  16. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
  17. package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
  18. package/dist/neutral/implementation/chain/evm.d.ts +2 -2
  19. package/dist/neutral/implementation/chain/evm.d.ts.map +1 -1
  20. package/dist/neutral/implementation/chain/index.d.ts +2 -3
  21. package/dist/neutral/implementation/chain/index.d.ts.map +1 -1
  22. package/dist/neutral/implementation/head/createBootstrapHead.d.ts +3 -3
  23. package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -1
  24. package/dist/neutral/implementation/head/index.d.ts +1 -1
  25. package/dist/neutral/implementation/head/index.d.ts.map +1 -1
  26. package/dist/neutral/implementation/index.d.ts +0 -9
  27. package/dist/neutral/implementation/index.d.ts.map +1 -1
  28. package/dist/neutral/index.d.ts +0 -2
  29. package/dist/neutral/index.d.ts.map +1 -1
  30. package/dist/neutral/index.mjs +378 -997
  31. package/dist/neutral/index.mjs.map +1 -1
  32. package/dist/neutral/model/Params.d.ts +3 -4
  33. package/dist/neutral/model/Params.d.ts.map +1 -1
  34. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +25 -33
  35. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
  36. package/package.json +15 -17
  37. package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +10 -16
  38. package/src/BaseService.ts +3 -2
  39. package/src/ChainService/Evm/Evm.ts +24 -37
  40. package/src/ChainService/Memory/Memory.ts +6 -12
  41. package/src/ChainValidator/XyoValidator.ts +11 -4
  42. package/src/PendingTransactions/BasePendingTransactions.ts +2 -6
  43. package/src/Schemas/BaseSchemasService.ts +2 -2
  44. package/src/StakeIntent/XyoStakeIntentService.ts +12 -8
  45. package/src/blockViewerFromChainIteratorAndArchivist.ts +9 -0
  46. package/src/implementation/chain/evm.ts +5 -5
  47. package/src/implementation/chain/index.ts +12 -14
  48. package/src/implementation/head/createBootstrapHead.ts +13 -8
  49. package/src/implementation/head/index.ts +1 -1
  50. package/src/implementation/index.ts +0 -9
  51. package/src/index.ts +0 -2
  52. package/src/model/Params.ts +4 -4
  53. package/src/simple/block/runner/SimpleBlockRunner.ts +122 -122
  54. package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts +0 -50
  55. package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +0 -1
  56. package/dist/neutral/ChainBlockNumberIteration/index.d.ts +0 -3
  57. package/dist/neutral/ChainBlockNumberIteration/index.d.ts.map +0 -1
  58. package/dist/neutral/ChainBlockNumberIteration/model/BlockNumberIteration.d.ts +0 -7
  59. package/dist/neutral/ChainBlockNumberIteration/model/BlockNumberIteration.d.ts.map +0 -1
  60. package/dist/neutral/ChainBlockNumberIteration/model/Params.d.ts +0 -9
  61. package/dist/neutral/ChainBlockNumberIteration/model/Params.d.ts.map +0 -1
  62. package/dist/neutral/ChainBlockNumberIteration/model/index.d.ts +0 -3
  63. package/dist/neutral/ChainBlockNumberIteration/model/index.d.ts.map +0 -1
  64. package/dist/neutral/Time/BaseTimeSyncService.d.ts +0 -24
  65. package/dist/neutral/Time/BaseTimeSyncService.d.ts.map +0 -1
  66. package/dist/neutral/Time/index.d.ts +0 -2
  67. package/dist/neutral/Time/index.d.ts.map +0 -1
  68. package/dist/neutral/implementation/accountBalance.d.ts +0 -7
  69. package/dist/neutral/implementation/accountBalance.d.ts.map +0 -1
  70. package/dist/neutral/implementation/blockViewer.d.ts +0 -7
  71. package/dist/neutral/implementation/blockViewer.d.ts.map +0 -1
  72. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts +0 -8
  73. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts.map +0 -1
  74. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +0 -9
  75. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +0 -1
  76. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts +0 -4
  77. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts.map +0 -1
  78. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts +0 -4
  79. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts.map +0 -1
  80. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +0 -5
  81. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +0 -1
  82. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +0 -11
  83. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +0 -1
  84. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +0 -11
  85. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +0 -1
  86. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +0 -11
  87. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +0 -1
  88. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +0 -13
  89. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +0 -1
  90. package/dist/neutral/implementation/head/createForkedHead/index.d.ts +0 -2
  91. package/dist/neutral/implementation/head/createForkedHead/index.d.ts.map +0 -1
  92. package/dist/neutral/implementation/head/getForkFromBlock.d.ts +0 -12
  93. package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +0 -1
  94. package/dist/neutral/implementation/head/head.d.ts +0 -11
  95. package/dist/neutral/implementation/head/head.d.ts.map +0 -1
  96. package/dist/neutral/implementation/head/submitNewChain.d.ts +0 -10
  97. package/dist/neutral/implementation/head/submitNewChain.d.ts.map +0 -1
  98. package/dist/neutral/implementation/mempoolRunner.d.ts +0 -7
  99. package/dist/neutral/implementation/mempoolRunner.d.ts.map +0 -1
  100. package/dist/neutral/implementation/mempoolViewer.d.ts +0 -7
  101. package/dist/neutral/implementation/mempoolViewer.d.ts.map +0 -1
  102. package/dist/neutral/implementation/pendingTransactions.d.ts +0 -9
  103. package/dist/neutral/implementation/pendingTransactions.d.ts.map +0 -1
  104. package/dist/neutral/implementation/producer.d.ts +0 -5
  105. package/dist/neutral/implementation/producer.d.ts.map +0 -1
  106. package/dist/neutral/implementation/reward.d.ts +0 -14
  107. package/dist/neutral/implementation/reward.d.ts.map +0 -1
  108. package/dist/neutral/implementation/time.d.ts +0 -6
  109. package/dist/neutral/implementation/time.d.ts.map +0 -1
  110. package/dist/neutral/implementation/validator.d.ts +0 -5
  111. package/dist/neutral/implementation/validator.d.ts.map +0 -1
  112. package/dist/neutral/simple/block/runner/spec/SimpleBlockRunner.d.ts +0 -2
  113. package/dist/neutral/simple/block/runner/spec/SimpleBlockRunner.d.ts.map +0 -1
  114. package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +0 -176
  115. package/src/ChainBlockNumberIteration/index.ts +0 -2
  116. package/src/ChainBlockNumberIteration/model/BlockNumberIteration.ts +0 -7
  117. package/src/ChainBlockNumberIteration/model/Params.ts +0 -10
  118. package/src/ChainBlockNumberIteration/model/index.ts +0 -2
  119. package/src/Time/BaseTimeSyncService.ts +0 -54
  120. package/src/Time/index.ts +0 -1
  121. package/src/implementation/accountBalance.ts +0 -29
  122. package/src/implementation/blockViewer.ts +0 -29
  123. package/src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +0 -27
  124. package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +0 -19
  125. package/src/implementation/head/createForkedHead/config/getForkDetails.ts +0 -10
  126. package/src/implementation/head/createForkedHead/config/index.ts +0 -3
  127. package/src/implementation/head/createForkedHead/createForkedHead.ts +0 -29
  128. package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +0 -42
  129. package/src/implementation/head/createForkedHead/getBridgeIntent.ts +0 -51
  130. package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +0 -46
  131. package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +0 -41
  132. package/src/implementation/head/createForkedHead/index.ts +0 -1
  133. package/src/implementation/head/getForkFromBlock.ts +0 -43
  134. package/src/implementation/head/head.ts +0 -49
  135. package/src/implementation/head/submitNewChain.ts +0 -27
  136. package/src/implementation/mempoolRunner.ts +0 -29
  137. package/src/implementation/mempoolViewer.ts +0 -29
  138. package/src/implementation/pendingTransactions.ts +0 -36
  139. package/src/implementation/producer.ts +0 -16
  140. package/src/implementation/reward.ts +0 -53
  141. package/src/implementation/time.ts +0 -26
  142. package/src/implementation/validator.ts +0 -15
  143. package/src/simple/block/runner/spec/SimpleBlockRunner.ts +0 -418
@@ -1,10 +1,9 @@
1
- import type { CreatableParams, EmptyObject } from '@xylabs/sdk-js';
2
1
  import type { AccountInstance } from '@xyo-network/account-model';
3
2
  import type { OpenTelemetryProviders } from '@xyo-network/xl1-protocol';
4
- export interface BaseServiceParams<TConfig extends EmptyObject = EmptyObject> extends CreatableParams, OpenTelemetryProviders {
5
- config: TConfig;
3
+ import type { CreatableProviderParams } from '@xyo-network/xl1-protocol-sdk';
4
+ export interface BaseServiceParams extends CreatableProviderParams, OpenTelemetryProviders {
6
5
  }
7
- export interface BaseAccountableServiceParams<TConfig extends EmptyObject = EmptyObject> extends BaseServiceParams<TConfig> {
6
+ export interface BaseAccountableServiceParams extends BaseServiceParams {
8
7
  account: AccountInstance;
9
8
  }
10
9
  //# sourceMappingURL=Params.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/model/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAEvE,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,eAAe,EAAE,sBAAsB;IAC3H,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,4BAA4B,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IACzH,OAAO,EAAE,eAAe,CAAA;CACzB"}
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/model/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAE5E,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB,EAAE,sBAAsB;CAEzF;AAED,MAAM,WAAW,4BAA6B,SAAQ,iBAAiB;IACrE,OAAO,EAAE,eAAe,CAAA;CACzB"}
@@ -1,11 +1,10 @@
1
- import { AbstractCreatable, Address, CreatableParams, Hex, Promisable } from '@xylabs/sdk-js';
1
+ import { Address, Hex, Promisable } from '@xylabs/sdk-js';
2
2
  import { AccountInstance } from '@xyo-network/account-model';
3
3
  import { ArchivistInstance } from '@xyo-network/archivist-model';
4
4
  import { BlockRewardDiviner } from '@xyo-network/chain-modules';
5
5
  import { WithHashMeta } from '@xyo-network/payload-model';
6
- import { BlockBoundWitness, ChainId, ChainStakeIntent, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, Transfer } from '@xyo-network/xl1-protocol';
7
- import { AccountBalanceViewer, BlockRewardViewer, BlockRunner, Config, HydratedBlockStateValidationFunction, MempoolRunner, MempoolViewer, TimeSyncViewer } from '@xyo-network/xl1-protocol-sdk';
8
- import z from 'zod';
6
+ import { BlockBoundWitness, ChainStakeIntent, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, Transfer } from '@xyo-network/xl1-protocol';
7
+ import { AbstractCreatableProvider, AccountBalanceViewer, BlockRewardViewer, BlockRunner, BlockValidationViewer, CreatableProviderParams, HydratedBlockStateValidationFunction, MempoolRunner, MempoolViewer, TimeSyncViewer } from '@xyo-network/xl1-protocol-sdk';
9
8
  /**
10
9
  * The default block size for a block
11
10
  */
@@ -19,35 +18,28 @@ export declare const XYO_PRODUCER_REDECLARATION_DURATION = 10000;
19
18
  * their intent to produce blocks
20
19
  */
21
20
  export declare const XYO_PRODUCER_REDECLARATION_WINDOW = 500;
22
- export declare const SimpleBlockRunnerParamsZod: z.ZodObject<{
23
- balanceViewer: z.ZodObject<{}, z.z.core.$loose>;
24
- blockRewardViewer: z.ZodObject<{}, z.z.core.$loose>;
25
- chainId: z.ZodString;
26
- config: z.ZodObject<{}, z.z.core.$loose>;
27
- mempoolViewer: z.ZodObject<{}, z.z.core.$loose>;
28
- mempoolRunner: z.ZodObject<{}, z.z.core.$loose>;
29
- rejectedTransactionsArchivist: z.ZodOptional<z.ZodObject<{}, z.z.core.$loose>>;
30
- rewardAddress: z.ZodPipe<z.ZodString, z.ZodTransform<Address, string>>;
31
- time: z.ZodObject<{}, z.z.core.$loose>;
32
- validateHydratedBlockState: z.ZodOptional<z.ZodFunction<z.z.core.$ZodFunctionArgs, z.z.core.$ZodFunctionOut>>;
33
- }, z.z.core.$strip>;
34
- export type SimpleBlockRunnerParams = CreatableParams & {
21
+ export type SimpleBlockRunnerParams = CreatableProviderParams & {
35
22
  account: AccountInstance;
36
- balanceViewer: AccountBalanceViewer;
37
- blockRewardViewer: BlockRewardViewer;
38
- chainId: ChainId;
39
- config: Config;
40
- mempoolRunner: MempoolRunner;
41
- mempoolViewer: MempoolViewer;
42
23
  rejectedTransactionsArchivist?: ArchivistInstance;
43
24
  rewardAddress: Address;
44
- time: TimeSyncViewer;
45
25
  validateHydratedBlockState?: HydratedBlockStateValidationFunction;
46
26
  };
47
- export declare class SimpleBlockRunner extends AbstractCreatable<SimpleBlockRunnerParams> implements BlockRunner {
48
- protected _blockRewardDiviner: BlockRewardDiviner | undefined;
49
- protected _lastRedeclarationBlock: number | undefined;
50
- protected _rejectedTransactionsArchivist: ArchivistInstance | undefined;
27
+ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleBlockRunnerParams> implements BlockRunner {
28
+ static readonly defaultMoniker: "BlockRunner";
29
+ static readonly monikers: "BlockRunner"[];
30
+ moniker: "BlockRunner";
31
+ protected _blockRewardDiviner?: BlockRewardDiviner;
32
+ protected _lastRedeclarationBlock?: number;
33
+ protected _rejectedTransactionsArchivist?: ArchivistInstance;
34
+ private _account?;
35
+ private _accountBalanceViewer?;
36
+ private _address?;
37
+ private _blockRewardViewer?;
38
+ private _blockValidationViewer?;
39
+ private _mempoolRunner?;
40
+ private _mempoolViewer?;
41
+ private _rewardAddress?;
42
+ private _timeSyncViewer?;
51
43
  /**
52
44
  * The default block size for a block
53
45
  */
@@ -62,17 +54,17 @@ export declare class SimpleBlockRunner extends AbstractCreatable<SimpleBlockRunn
62
54
  * their intent to continue producing blocks
63
55
  */
64
56
  static get RedeclarationWindow(): number;
65
- get address(): Address;
66
57
  protected get account(): AccountInstance;
67
- protected get balanceViewer(): AccountBalanceViewer;
58
+ protected get accountBalanceViewer(): AccountBalanceViewer;
59
+ protected get address(): Address;
68
60
  protected get blockRewardViewer(): BlockRewardViewer;
69
- protected get chainId(): Hex;
61
+ protected get blockValidationViewer(): BlockValidationViewer;
70
62
  protected get mempoolRunner(): MempoolRunner;
71
63
  protected get mempoolViewer(): MempoolViewer;
72
64
  protected get rejectedTransactionsArchivist(): ArchivistInstance<import("@xyo-network/archivist-model").ArchivistParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/archivist-model").ArchivistConfig>>, import("@xyo-network/archivist-model").ArchivistModuleEventData, import("@xyo-network/payload-model").Payload>;
73
65
  protected get rewardAddress(): Address;
74
- protected get time(): TimeSyncViewer;
75
- static paramsHandler(params?: Partial<SimpleBlockRunnerParams> | undefined): Promise<SimpleBlockRunnerParams>;
66
+ protected get timeSyncViewer(): TimeSyncViewer;
67
+ createHandler(): Promise<void>;
76
68
  next(head: WithHashMeta<BlockBoundWitness>): Promise<SignedHydratedBlockWithHashMeta | undefined>;
77
69
  produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force: true): Promise<SignedHydratedBlockWithHashMeta>;
78
70
  produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force?: false): Promise<SignedHydratedBlockWithHashMeta | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACW,GAAG,EAA0B,UAAU,EAC1D,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EACL,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAC8C,iBAAiB,EACpE,gBAAgB,EAAsB,mCAAmC,EACzE,+BAA+B,EAC/B,QAAQ,EACT,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EAEpB,iBAAiB,EAEjB,WAAW,EAEX,qBAAqB,EAGrB,uBAAuB,EAEvB,oCAAoC,EACpC,aAAa,EAEb,aAAa,EAEb,cAAc,EAEf,MAAM,+BAA+B,CAAA;AAItC;;GAEG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC;;GAEG;AACH,eAAO,MAAM,mCAAmC,QAAS,CAAA;AAEzD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,MAAM,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,uBAAuB,GAAG;IAC9D,OAAO,EAAE,eAAe,CAAA;IACxB,6BAA6B,CAAC,EAAE,iBAAiB,CAAA;IACjD,aAAa,EAAE,OAAO,CAAA;IACtB,0BAA0B,CAAC,EAAE,oCAAoC,CAAA;CAClE,CAAA;AAED,qBACa,iBAAkB,SAAQ,yBAAyB,CAAC,uBAAuB,CAAE,YAAW,WAAW;IAC9G,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAqB;IACnD,MAAM,CAAC,QAAQ,CAAC,QAAQ,kBAAuB;IAC/C,OAAO,gBAAmC;IAE1C,SAAS,CAAC,mBAAmB,CAAC,EAAE,kBAAkB,CAAA;IAClD,SAAS,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAC1C,SAAS,CAAC,8BAA8B,CAAC,EAAE,iBAAiB,CAAA;IAE5D,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,qBAAqB,CAAC,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,kBAAkB,CAAC,CAAmB;IAC9C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAC,CAAgB;IAExC;;OAEG;IACH,MAAM,KAAK,gBAAgB,IAAI,MAAM,CAEpC;IAED;;;OAGG;IACH,MAAM,KAAK,qBAAqB,IAAI,MAAM,CAEzC;IAED;;;OAGG;IACH,MAAM,KAAK,mBAAmB,IAAI,MAAM,CAEvC;IAED,SAAS,KAAK,OAAO,oBAEpB;IAED,SAAS,KAAK,oBAAoB,yBAEjC;IAED,SAAS,KAAK,OAAO,YAEpB;IAED,SAAS,KAAK,iBAAiB,sBAE9B;IAED,SAAS,KAAK,qBAAqB,0BAElC;IAMD,SAAS,KAAK,aAAa,kBAE1B;IAED,SAAS,KAAK,aAAa,kBAE1B;IAMD,SAAS,KAAK,6BAA6B,0SAE1C;IAED,SAAS,KAAK,aAAa,IAAI,OAAO,CAErC;IAMD,SAAS,KAAK,cAAc,IAAI,cAAc,CAE7C;IAMc,aAAa;IAatB,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAgBjG,gBAAgB,CAAC,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAClH,gBAAgB,CAAC,IAAI,EAAE,mCAAmC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC;cAOtH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmB3E;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,gBAAgB,GAAG,SAAS,CAAC;cAkBnG,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,UAAQ,EAAE,KAAK,UAAQ;;;;;;;;;;;;;;;;;;;;;;YAmEtG,cAAc;YAyBd,mBAAmB;IAIjC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/chain-services",
4
- "version": "1.17.7",
4
+ "version": "1.18.0",
5
5
  "description": "XYO Layer One SDK Services",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -39,7 +39,7 @@
39
39
  "!**/*.test.*"
40
40
  ],
41
41
  "dependencies": {
42
- "@opentelemetry/api": "~1.9.0",
42
+ "@opentelemetry/api": "^1.9.0",
43
43
  "@xylabs/sdk-js": "~5.0.51",
44
44
  "@xyo-network/account-model": "~5.2.17",
45
45
  "@xyo-network/archivist-memory": "~5.2.17",
@@ -47,36 +47,34 @@
47
47
  "@xyo-network/boundwitness-model": "~5.2.17",
48
48
  "@xyo-network/boundwitness-validator": "~5.2.17",
49
49
  "@xyo-network/boundwitness-wrapper": "~5.2.17",
50
- "@xyo-network/chain-analyze": "~1.17.7",
51
- "@xyo-network/chain-modules": "~1.17.7",
52
- "@xyo-network/chain-protocol": "~1.17.7",
53
- "@xyo-network/chain-utils": "~1.17.7",
50
+ "@xyo-network/chain-analyze": "~1.18.0",
51
+ "@xyo-network/chain-modules": "~1.18.0",
52
+ "@xyo-network/chain-protocol": "~1.18.0",
53
+ "@xyo-network/chain-utils": "~1.18.0",
54
54
  "@xyo-network/payload-builder": "~5.2.17",
55
55
  "@xyo-network/payload-model": "~5.2.17",
56
56
  "@xyo-network/typechain": "~4.0.11",
57
57
  "@xyo-network/xl1-protocol": "~1.14.17",
58
- "@xyo-network/xl1-protocol-sdk": "~1.17.7",
59
- "@xyo-network/xl1-rpc": "~1.17.7",
60
- "@xyo-network/xl1-validation": "~1.17.7",
61
- "@xyo-network/xl1-wrappers": "~1.17.7",
58
+ "@xyo-network/xl1-protocol-sdk": "~1.18.0",
59
+ "@xyo-network/xl1-validation": "~1.18.0",
60
+ "@xyo-network/xl1-wrappers": "~1.18.0",
62
61
  "async-mutex": "~0.5.0",
63
62
  "ethers": "^6.16.0",
64
- "lru-cache": "~11.2.4",
65
- "zod": "~4.1.13"
63
+ "lru-cache": "^11.2.4"
66
64
  },
67
65
  "devDependencies": {
68
- "@types/node": "~25.0.1",
66
+ "@types/node": "~25.0.2",
69
67
  "@xylabs/sdk-js": "~5.0.51",
70
- "@xylabs/ts-scripts-yarn3": "~7.2.30",
71
- "@xylabs/tsconfig": "~7.2.30",
68
+ "@xylabs/ts-scripts-yarn3": "~7.2.32",
69
+ "@xylabs/tsconfig": "~7.2.32",
72
70
  "@xylabs/vitest-extended": "~5.0.51",
73
71
  "@xyo-network/account": "~5.2.17",
74
72
  "@xyo-network/account-model": "~5.2.17",
75
- "@xyo-network/chain-validation": "~1.17.7",
73
+ "@xyo-network/chain-validation": "~1.18.0",
76
74
  "@xyo-network/wallet": "~5.2.17",
77
75
  "@xyo-network/wallet-model": "~5.2.17",
78
76
  "cosmiconfig": "^9.0.0",
79
- "eslint": "^9.39.1",
77
+ "eslint": "^9.39.2",
80
78
  "tslib": "~2.8.1",
81
79
  "typescript": "~5.9.3",
82
80
  "vitest": "~4.0.15",
@@ -1,23 +1,23 @@
1
1
  import type { Hash } from '@xylabs/sdk-js'
2
2
  import { assertEx } from '@xylabs/sdk-js'
3
- import type { ReadArchivist } from '@xyo-network/archivist-model'
3
+ import type { ReadWriteArchivist } from '@xyo-network/archivist-model'
4
4
  import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
5
5
  import type { ChainId } from '@xyo-network/xl1-protocol'
6
6
  import { StepSizes } from '@xyo-network/xl1-protocol'
7
7
  import type {
8
- AccountBalanceViewer, BalancesStepSummary, SimpleAccountBalanceViewerParams, SimpleBlockViewerParams, TransfersStepSummary,
8
+ AccountBalanceViewer, BalancesStepSummary, CreatableProviderContext, SimpleAccountBalanceViewerParams, TransfersStepSummary,
9
9
  } from '@xyo-network/xl1-protocol-sdk'
10
10
  import {
11
- findMostRecentBlock, LruCacheMap, readPayloadMapFromStore,
11
+ findMostRecentBlock, LruCacheMap, payloadMapFromStore,
12
12
  SimpleAccountBalanceViewer,
13
- SimpleBlockViewer,
14
13
  } from '@xyo-network/xl1-protocol-sdk'
15
14
  import { Semaphore } from 'async-mutex'
16
15
 
17
16
  // this is intended to only be used for testing
18
17
  export const accountBalancesViewerFromArchivist = async (
18
+ context: CreatableProviderContext,
19
19
  chainId: ChainId,
20
- archivist: ReadArchivist<WithStorageMeta<Payload>>,
20
+ archivist: ReadWriteArchivist<WithStorageMeta<Payload>>,
21
21
  ): Promise<AccountBalanceViewer> => {
22
22
  const summaryMap = new LruCacheMap<string, BalancesStepSummary>({
23
23
  max: 100_000,
@@ -33,19 +33,21 @@ export const accountBalancesViewerFromArchivist = async (
33
33
  updateAgeOnGet: true,
34
34
  })
35
35
 
36
- const chainMap = readPayloadMapFromStore<WithStorageMeta<Payload>>(archivist)
36
+ const chainMap = payloadMapFromStore<WithStorageMeta<Payload>>(archivist)
37
37
  const headFunc = async (): Promise<[Hash, number]> => {
38
38
  const head = assertEx(await findMostRecentBlock(archivist), () => 'No blocks found in chainArchivist')
39
39
  return [head._hash, head.block]
40
40
  }
41
41
 
42
42
  const service = await SimpleAccountBalanceViewer.create({
43
- context: {
43
+ context,
44
+ balanceSummaryContext: {
44
45
  chainId,
45
46
  store: { chainMap },
46
47
  stepSemaphores: StepSizes.map(() => new Semaphore(20)),
47
48
  summaryMap,
48
49
  head: headFunc,
50
+ singletons: context.singletons,
49
51
  },
50
52
  transfersSummaryContext: {
51
53
  chainId,
@@ -53,16 +55,8 @@ export const accountBalancesViewerFromArchivist = async (
53
55
  stepSemaphores: StepSizes.map(() => new Semaphore(20)),
54
56
  summaryMap: transferSummaryMap,
55
57
  head: headFunc,
56
-
58
+ singletons: context.singletons,
57
59
  },
58
- blockViewer: await SimpleBlockViewer.create({
59
- context: {
60
- chainId,
61
- head: headFunc,
62
- store: { chainMap },
63
- },
64
- finalizedArchivist: archivist,
65
- } satisfies SimpleBlockViewerParams),
66
60
  } satisfies SimpleAccountBalanceViewerParams)
67
61
  return service
68
62
  }
@@ -1,5 +1,6 @@
1
1
  import type { EventData, Promisable } from '@xylabs/sdk-js'
2
- import { AbstractCreatable, creatable } from '@xylabs/sdk-js'
2
+ import { creatable } from '@xylabs/sdk-js'
3
+ import { AbstractCreatableProvider } from '@xyo-network/xl1-protocol-sdk'
3
4
  import { Mutex } from 'async-mutex'
4
5
 
5
6
  import type { BaseAccountableServiceParams, BaseServiceParams } from './model/index.ts'
@@ -10,7 +11,7 @@ declare global {
10
11
 
11
12
  @creatable()
12
13
  export class BaseService<TParams extends BaseServiceParams = BaseServiceParams, TEventData extends EventData = EventData>
13
- extends AbstractCreatable<TParams, TEventData> {
14
+ extends AbstractCreatableProvider<TParams, TEventData> {
14
15
  private static singletonInitMutex = new Mutex()
15
16
 
16
17
  static get singletons() {
@@ -1,11 +1,8 @@
1
1
  import type {
2
2
  Address, Hex, Promisable,
3
3
  } from '@xylabs/sdk-js'
4
- import {
5
- assertEx, toAddress, toEthAddress,
6
- } from '@xylabs/sdk-js'
4
+ import { toAddress, toEthAddress } from '@xylabs/sdk-js'
7
5
  import type { StakedXyoChain } from '@xyo-network/typechain'
8
- import { StakedXyoChain__factory as StakedXyoChainFactory } from '@xyo-network/typechain'
9
6
  import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
10
7
  import { ChainContractViewerMoniker, type ChainService } from '@xyo-network/xl1-protocol-sdk'
11
8
  import { getAddress } from 'ethers/address'
@@ -14,7 +11,7 @@ import type { ContractRunner } from 'ethers/providers'
14
11
  import { BaseService } from '../../BaseService.ts'
15
12
  import type { BaseServiceParams } from '../../model/index.ts'
16
13
 
17
- export interface EvmChainServiceParams extends BaseServiceParams {
14
+ export interface EvmChainViewerParams extends BaseServiceParams {
18
15
  contract: StakedXyoChain
19
16
  id: Hex
20
17
  runner: ContractRunner
@@ -23,69 +20,59 @@ export interface EvmChainServiceParams extends BaseServiceParams {
23
20
  /**
24
21
  * A class that represents a chain stake as backed by an EVM smart contract
25
22
  */
26
- export class EvmChainService extends BaseService<EvmChainServiceParams> implements ChainService {
23
+ export class EvmChainViewer extends BaseService<EvmChainViewerParams> implements ChainService {
27
24
  static readonly defaultMoniker = ChainContractViewerMoniker
28
25
  static readonly monikers = [ChainContractViewerMoniker]
29
- moniker = EvmChainService.defaultMoniker
26
+ moniker = EvmChainViewer.defaultMoniker
27
+
28
+ protected get contract() {
29
+ return this.params.contract
30
+ }
30
31
 
31
32
  async active(): Promise<bigint> {
32
- return await (await this.contract()).active()
33
+ return await (this.contract).active()
33
34
  }
34
35
 
35
36
  async activeByStaked(staked: Address): Promise<bigint> {
36
- return await (await this.contract()).activeByAddressStaked(getAddress(toEthAddress(staked)))
37
+ return await (this.contract).activeByAddressStaked(getAddress(toEthAddress(staked)))
37
38
  }
38
39
 
39
40
  async activeByStaker(address: Address): Promise<bigint> {
40
- return await (await this.contract()).activeByStaker(getAddress(toEthAddress(address)))
41
+ return await (this.contract).activeByStaker(getAddress(toEthAddress(address)))
41
42
  }
42
43
 
43
44
  async addStake(staked: Address, amount: bigint): Promise<boolean> {
44
- const result = await (await this.contract()).addStake(getAddress(toEthAddress(staked)), amount)
45
+ const result = await (this.contract).addStake(getAddress(toEthAddress(staked)), amount)
45
46
  await result.wait()
46
47
  return true
47
48
  }
48
49
 
49
- chainId(): Promisable<Hex> {
50
- return assertEx(this.params.id)
51
- }
52
-
53
- async contract() {
54
- if (this.params.contract === undefined) {
55
- this.params.contract = StakedXyoChainFactory.connect(
56
- toEthAddress(await this.chainId()),
57
- this.params.runner,
58
- ) as StakedXyoChain
59
- }
60
- return assertEx(this.params.contract)
61
- }
62
-
63
50
  async forkedAtBlockNumber(): Promise<bigint> {
64
- return await (await this.contract()).forkedAtBlockNumber()
51
+ return await (this.contract).forkedAtBlockNumber()
65
52
  }
66
53
 
67
54
  async forkedAtHash(): Promise<bigint> {
68
- return await (await this.contract()).forkedAtHash()
55
+ return await (this.contract).forkedAtHash()
69
56
  }
70
57
 
71
58
  async forkedChainId(): Promise<Address> {
72
- return toAddress(await (await this.contract()).forkedChainId())
59
+ return toAddress(await (this.contract).forkedChainId())
73
60
  }
74
61
 
75
62
  async minWithdrawalBlocks(): Promise<bigint> {
76
- return await (await this.contract()).minWithdrawalBlocks()
63
+ return await (this.contract).minWithdrawalBlocks()
77
64
  }
78
65
 
79
66
  async pending(): Promise<bigint> {
80
- return await (await this.contract()).pending()
67
+ return await (this.contract).pending()
81
68
  }
82
69
 
83
70
  async pendingByStaker(staker: Address): Promise<bigint> {
84
- return await (await this.contract()).pendingByStaker(getAddress(toEthAddress(staker)))
71
+ return await (this.contract).pendingByStaker(getAddress(toEthAddress(staker)))
85
72
  }
86
73
 
87
74
  async removeStake(slot: bigint): Promise<boolean> {
88
- const result = await (await this.contract()).removeStake(slot)
75
+ const result = await (this.contract).removeStake(slot)
89
76
  await result.wait()
90
77
  return true
91
78
  }
@@ -95,24 +82,24 @@ export class EvmChainService extends BaseService<EvmChainServiceParams> implemen
95
82
  }
96
83
 
97
84
  async rewardsContract(): Promise<string> {
98
- return await (await this.contract()).rewardsContract()
85
+ return await (this.contract).rewardsContract()
99
86
  }
100
87
 
101
88
  async stakingTokenAddress(): Promise<string> {
102
- return await (await this.contract()).stakingTokenAddress()
89
+ return await (this.contract).stakingTokenAddress()
103
90
  }
104
91
 
105
92
  async withdrawStake(slot: bigint): Promise<boolean> {
106
- const result = await (await this.contract()).withdrawStake(slot)
93
+ const result = await (this.contract).withdrawStake(slot)
107
94
  await result.wait()
108
95
  return true
109
96
  }
110
97
 
111
98
  async withdrawn(): Promise<bigint> {
112
- return await (await this.contract()).withdrawn()
99
+ return await (this.contract).withdrawn()
113
100
  }
114
101
 
115
102
  async withdrawnByStaker(staker: string): Promise<bigint> {
116
- return await (await this.contract()).withdrawnByStaker(getAddress(staker))
103
+ return await (this.contract).withdrawnByStaker(getAddress(staker))
117
104
  }
118
105
  }
@@ -1,29 +1,27 @@
1
1
  import type {
2
2
  Address, Hex, Promisable,
3
3
  } from '@xylabs/sdk-js'
4
- import {
5
- assertEx, toAddress, ZERO_ADDRESS,
6
- } from '@xylabs/sdk-js'
4
+ import { toAddress, ZERO_ADDRESS } from '@xylabs/sdk-js'
7
5
  import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
8
6
  import {
9
7
  ChainContractViewerMoniker,
10
- type ChainService, type Config,
8
+ type ChainService,
11
9
  } from '@xyo-network/xl1-protocol-sdk'
12
10
 
13
11
  import { BaseService } from '../../BaseService.ts'
14
12
  import type { BaseServiceParams } from '../../model/index.ts'
15
13
 
16
- export interface MemoryChainServiceParams extends BaseServiceParams<Pick<Config, 'producer'>> {
14
+ export interface MemoryChainViewerParams extends BaseServiceParams {
17
15
  chainId: Hex
18
16
  }
19
17
 
20
18
  /**
21
19
  * A class that represents a chain stake as backed in memory
22
20
  */
23
- export class MemoryChainService extends BaseService<MemoryChainServiceParams> implements ChainService {
21
+ export class MemoryChainViewer extends BaseService<MemoryChainViewerParams> implements ChainService {
24
22
  static readonly defaultMoniker = ChainContractViewerMoniker
25
23
  static readonly monikers = [ChainContractViewerMoniker]
26
- moniker = MemoryChainService.defaultMoniker
24
+ moniker = MemoryChainViewer.defaultMoniker
27
25
 
28
26
  protected _chainId: Hex | undefined
29
27
  protected _simulatedStake: bigint = 1n
@@ -44,12 +42,8 @@ export class MemoryChainService extends BaseService<MemoryChainServiceParams> im
44
42
  return await Promise.resolve(true)
45
43
  }
46
44
 
47
- chainId(): Promisable<Hex> {
48
- return assertEx(this._chainId, () => 'Chain ID not set')
49
- }
50
-
51
45
  override createHandler(): void {
52
- const { minStake = 1 } = this.params.config.producer ?? {}
46
+ const { minStake = 1 } = this.params.context.config.producer ?? {}
53
47
  this._simulatedStake = BigInt(minStake)
54
48
  }
55
49
 
@@ -1,18 +1,20 @@
1
1
  import {
2
- assertEx, creatable, EmptyObject,
2
+ creatable,
3
3
  Promisable,
4
4
  } from '@xylabs/sdk-js'
5
5
  import {
6
6
  BlockBoundWitness,
7
7
  SignedHydratedTransactionWithStorageMeta,
8
8
  } from '@xyo-network/xl1-protocol'
9
- import { BlockViewer, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-protocol-sdk'
9
+ import {
10
+ BlockViewer, BlockViewerMoniker, HydratedBlockStateValidationFunction,
11
+ } from '@xyo-network/xl1-protocol-sdk'
10
12
 
11
13
  import { BaseService } from '../BaseService.ts'
12
14
  import { BaseServiceParams } from '../model/index.ts'
13
15
  import { Validator } from './model/index.ts'
14
16
 
15
- export interface XyoValidatorParams<TConfig extends EmptyObject = EmptyObject> extends BaseServiceParams<TConfig> {
17
+ export interface XyoValidatorParams extends BaseServiceParams {
16
18
  // account: AccountInstance
17
19
  // blockRewardService: BlockRewardService
18
20
  blockViewer: BlockViewer
@@ -25,6 +27,7 @@ export interface XyoValidatorParams<TConfig extends EmptyObject = EmptyObject> e
25
27
 
26
28
  @creatable()
27
29
  export class XyoValidator<TParams extends XyoValidatorParams = XyoValidatorParams> extends BaseService<TParams> implements Validator {
30
+ private _blockViewer?: BlockViewer
28
31
  // get address() {
29
32
  // return this.account.address
30
33
  // }
@@ -34,7 +37,7 @@ export class XyoValidator<TParams extends XyoValidatorParams = XyoValidatorParam
34
37
  // }
35
38
 
36
39
  protected get blockViewer() {
37
- return assertEx(this.params.blockViewer, () => 'blockViewer is required')
40
+ return this._blockViewer!
38
41
  }
39
42
 
40
43
  // protected get chainInfo() {
@@ -53,6 +56,10 @@ export class XyoValidator<TParams extends XyoValidatorParams = XyoValidatorParam
53
56
  // return assertEx(this.params.blockRewardService, () => 'blockRewardService is required')
54
57
  // }
55
58
 
59
+ override async createHandler() {
60
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
61
+ }
62
+
56
63
  validatePendingBlock(_block: BlockBoundWitness): Promisable<Error[]> {
57
64
  return [] // await validateBlockProtocol(block, this.chainInfo)
58
65
  }
@@ -96,10 +96,6 @@ export class BasePendingTransactionsService extends BaseService<BasePendingTrans
96
96
  return assertEx(this.params.chainArchivist, () => 'No completed blocks with data archivist')
97
97
  }
98
98
 
99
- private get chainId() {
100
- return assertEx(this.params.chainId, () => 'No chain id')
101
- }
102
-
103
99
  private get pendingBundledTransactionsArchivist() {
104
100
  return assertEx(this.params.pendingBundledTransactionsArchivist, () => 'No pending bundled transactions archivist')
105
101
  }
@@ -196,7 +192,7 @@ export class BasePendingTransactionsService extends BaseService<BasePendingTrans
196
192
 
197
193
  const txValidationResults = await Promise.all(activeTransactions.map(async tx => ([tx, await validateTransaction(
198
194
  tx,
199
- { chainId: this.chainId },
195
+ { chainId: this.params.chainId },
200
196
  this.additionalPendingTransactionValidators,
201
197
  )])))
202
198
 
@@ -268,7 +264,7 @@ export class BasePendingTransactionsService extends BaseService<BasePendingTrans
268
264
  }))).filter(exists)
269
265
  // Filter to only valid transactions
270
266
  const validTransactions = await filterAsync(hydratedUnprocessedTransactions, async (tx) => {
271
- const errors = await validateTransaction(tx, { chainId: this.chainId }, [TransactionJsonSchemaValidator])
267
+ const errors = await validateTransaction(tx, { chainId: this.params.chainId }, [TransactionJsonSchemaValidator])
272
268
  if (errors.length > 0) {
273
269
  this.logger?.warn('validateTransaction', errors)
274
270
  }
@@ -12,7 +12,7 @@ import { BaseService } from '../BaseService.ts'
12
12
  import { BaseServiceParams } from '../model/index.ts'
13
13
 
14
14
  export interface BaseSchemasServiceParams extends BaseServiceParams {
15
- context: SchemasStepSummaryContext
15
+ schemasStepSummaryContext: SchemasStepSummaryContext
16
16
  }
17
17
 
18
18
  @creatable()
@@ -23,7 +23,7 @@ export class BaseSchemasService extends BaseService<BaseSchemasServiceParams> im
23
23
 
24
24
  async schemas(head: Hash, schemas: Schema[]): Promise<Partial<Record<Schema, number>>> {
25
25
  return await spanRootAsync('transfers', async () => {
26
- const [summary] = await schemasSummary(this.params.context)
26
+ const [summary] = await schemasSummary(this.params.schemasStepSummaryContext)
27
27
  const result: Record<Schema, number> = {}
28
28
  for (const schema of schemas) {
29
29
  const count = summary[schema] ?? 0
@@ -20,8 +20,9 @@ import {
20
20
  import {
21
21
  asChainIndexingServiceStateWithStorageMeta,
22
22
  BlockViewer,
23
+ BlockViewerMoniker,
23
24
  ChainIndexingServiceState, ChainIndexingServiceStateSchema, ChainStakeViewer,
24
- Config,
25
+ ChainStakeViewerMoniker,
25
26
  isChainIndexingServiceState,
26
27
  readPayloadMapFromStore,
27
28
  StakeIntentService,
@@ -33,7 +34,7 @@ import { LRUCache } from 'lru-cache'
33
34
  import { BaseService } from '../BaseService.ts'
34
35
  import { BaseServiceParams } from '../model/index.ts'
35
36
 
36
- export interface XyoStakeIntentServiceParams extends BaseServiceParams<Pick<Config, 'producer'>> {
37
+ export interface XyoStakeIntentServiceParams extends BaseServiceParams {
37
38
  blockViewer: BlockViewer
38
39
  chainArchivist: ArchivistInstance
39
40
  chainStakeViewer: ChainStakeViewer
@@ -65,8 +66,11 @@ export class XyoStakeIntentService extends BaseService<XyoStakeIntentServicePara
65
66
  protected _stakeCache = new LRUCache<Address, bigint>({ max: STAKE_CACHE_MAX_ENTRIES })
66
67
  protected _updateMutex = new Mutex()
67
68
 
69
+ private _blockViewer?: BlockViewer
70
+ private _chainStakeViewer?: ChainStakeViewer
71
+
68
72
  protected get blockViewer() {
69
- return this.params.blockViewer
73
+ return this._blockViewer!
70
74
  }
71
75
 
72
76
  protected get chainArchivist() {
@@ -74,24 +78,24 @@ export class XyoStakeIntentService extends BaseService<XyoStakeIntentServicePara
74
78
  }
75
79
 
76
80
  protected get chainStakeViewer() {
77
- return assertEx(this.params.chainStakeViewer!, () => 'chainStakeViewer not set')
81
+ return this._chainStakeViewer!
78
82
  }
79
83
 
80
84
  protected get stakeIntentStateArchivist() {
81
85
  return assertEx(this.params.stakeIntentStateArchivist!, () => 'stakeIntentStateArchivist not set')
82
86
  }
83
87
 
84
- static override async paramsHandler(params?: Partial<XyoStakeIntentServiceParams>): Promise<XyoStakeIntentServiceParams> {
88
+ static override async paramsHandler(params: Partial<XyoStakeIntentServiceParams>): Promise<XyoStakeIntentServiceParams> {
85
89
  return {
86
90
  ...await super.paramsHandler(params),
87
- blockViewer: assertEx(params?.blockViewer, () => 'blockViewer is required'),
88
91
  chainArchivist: assertEx(params?.chainArchivist, () => 'chainArchivist is required'),
89
- chainStakeViewer: assertEx(params?.chainStakeViewer, () => 'chainStakeViewer is required'),
90
92
  stakeIntentStateArchivist: assertEx(params?.stakeIntentStateArchivist, () => 'stakeIntentStateArchivist is required'),
91
93
  } as XyoStakeIntentServiceParams
92
94
  }
93
95
 
94
96
  override async createHandler() {
97
+ this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
98
+ this._chainStakeViewer = await this.locator.getInstance(ChainStakeViewerMoniker)
95
99
  const head = await this.blockViewer.currentBlock()
96
100
  if (isUndefined(head)) return
97
101
  await this.recoverState(head[0]._hash)
@@ -118,7 +122,7 @@ export class XyoStakeIntentService extends BaseService<XyoStakeIntentServicePara
118
122
  getRequiredMinimumStakeForIntent(intent: Intent): bigint {
119
123
  switch (intent) {
120
124
  case 'producer': {
121
- const { minStake } = this.params.config.producer
125
+ const { minStake } = this.params.context.config.producer
122
126
  return BigInt(minStake)
123
127
  }
124
128
  }