@xyo-network/chain-services 1.18.0 → 1.18.2

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 (99) hide show
  1. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts +1 -2
  2. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
  3. package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts +1 -2
  4. package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts.map +1 -1
  5. package/dist/neutral/ChainValidator/XyoValidator.d.ts +8 -8
  6. package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
  7. package/dist/neutral/ChainValidator/model/Validator.d.ts +1 -1
  8. package/dist/neutral/ChainValidator/model/Validator.d.ts.map +1 -1
  9. package/dist/neutral/Election/BaseElectionService.d.ts +8 -5
  10. package/dist/neutral/Election/BaseElectionService.d.ts.map +1 -1
  11. package/dist/neutral/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.d.ts +16 -17
  12. package/dist/neutral/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.d.ts.map +1 -1
  13. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +3 -4
  14. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
  15. package/dist/neutral/PendingTransactions/bundledPayloadToHydratedTransaction.d.ts +1 -1
  16. package/dist/neutral/PendingTransactions/bundledPayloadToHydratedTransaction.d.ts.map +1 -1
  17. package/dist/neutral/PendingTransactions/hydratedTransactionToPayloadBundle.d.ts +1 -1
  18. package/dist/neutral/PendingTransactions/hydratedTransactionToPayloadBundle.d.ts.map +1 -1
  19. package/dist/neutral/Schemas/BaseSchemasService.d.ts +6 -3
  20. package/dist/neutral/Schemas/BaseSchemasService.d.ts.map +1 -1
  21. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +13 -6
  22. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
  23. package/dist/neutral/StakeIntent/lib/getBlockSignedStakeDeclarations.d.ts +1 -1
  24. package/dist/neutral/StakeIntent/lib/getBlockSignedStakeDeclarations.d.ts.map +1 -1
  25. package/dist/neutral/StepStake/BaseStepStakeService.d.ts +6 -7
  26. package/dist/neutral/StepStake/BaseStepStakeService.d.ts.map +1 -1
  27. package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts +1 -1
  28. package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
  29. package/dist/neutral/implementation/evm/initChainId.d.ts +1 -1
  30. package/dist/neutral/implementation/evm/initChainId.d.ts.map +1 -1
  31. package/dist/neutral/implementation/evm/initEvmProvider.d.ts +1 -1
  32. package/dist/neutral/implementation/evm/initEvmProvider.d.ts.map +1 -1
  33. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts +1 -1
  34. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts.map +1 -1
  35. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts +1 -1
  36. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts.map +1 -1
  37. package/dist/neutral/implementation/head/createBootstrapHead.d.ts +1 -1
  38. package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -1
  39. package/dist/neutral/implementation/index.d.ts +0 -1
  40. package/dist/neutral/implementation/index.d.ts.map +1 -1
  41. package/dist/neutral/index.d.ts +0 -2
  42. package/dist/neutral/index.d.ts.map +1 -1
  43. package/dist/neutral/index.mjs +180 -415
  44. package/dist/neutral/index.mjs.map +1 -1
  45. package/dist/neutral/model/Params.d.ts +1 -2
  46. package/dist/neutral/model/Params.d.ts.map +1 -1
  47. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +34 -20
  48. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
  49. package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts +1 -1
  50. package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts.map +1 -1
  51. package/package.json +29 -32
  52. package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +12 -9
  53. package/src/BlockReward/EvmBlockRewardViewer.ts +5 -7
  54. package/src/ChainValidator/XyoValidator.ts +9 -14
  55. package/src/ChainValidator/model/Validator.ts +1 -1
  56. package/src/Election/BaseElectionService.ts +15 -10
  57. package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +24 -24
  58. package/src/PendingTransactions/BasePendingTransactions.ts +14 -14
  59. package/src/PendingTransactions/bundledPayloadToHydratedTransaction.ts +2 -2
  60. package/src/PendingTransactions/hydratedTransactionToPayloadBundle.ts +2 -2
  61. package/src/Schemas/BaseSchemasService.ts +12 -9
  62. package/src/StakeIntent/XyoStakeIntentService.ts +32 -29
  63. package/src/StakeIntent/lib/getBlockSignedStakeDeclarations.ts +2 -2
  64. package/src/StepStake/BaseStepStakeService.ts +7 -11
  65. package/src/blockViewerFromChainIteratorAndArchivist.ts +14 -4
  66. package/src/implementation/evm/initChainId.ts +1 -1
  67. package/src/implementation/evm/initEvmProvider.ts +1 -1
  68. package/src/implementation/evm/initInfuraProvider.ts +1 -1
  69. package/src/implementation/evm/initJsonRpcProvider.ts +1 -1
  70. package/src/implementation/head/createBootstrapHead.ts +2 -2
  71. package/src/implementation/index.ts +0 -1
  72. package/src/index.ts +0 -2
  73. package/src/model/Params.ts +1 -2
  74. package/src/simple/block/runner/SimpleBlockRunner.ts +39 -36
  75. package/src/simple/block/runner/generateTransactionFeeTransfers.ts +5 -4
  76. package/dist/neutral/BaseService.d.ts +0 -19
  77. package/dist/neutral/BaseService.d.ts.map +0 -1
  78. package/dist/neutral/ChainService/Evm/Evm.d.ts +0 -39
  79. package/dist/neutral/ChainService/Evm/Evm.d.ts.map +0 -1
  80. package/dist/neutral/ChainService/Evm/index.d.ts +0 -2
  81. package/dist/neutral/ChainService/Evm/index.d.ts.map +0 -1
  82. package/dist/neutral/ChainService/Memory/Memory.d.ts +0 -38
  83. package/dist/neutral/ChainService/Memory/Memory.d.ts.map +0 -1
  84. package/dist/neutral/ChainService/Memory/index.d.ts +0 -2
  85. package/dist/neutral/ChainService/Memory/index.d.ts.map +0 -1
  86. package/dist/neutral/ChainService/index.d.ts +0 -3
  87. package/dist/neutral/ChainService/index.d.ts.map +0 -1
  88. package/dist/neutral/implementation/chain/evm.d.ts +0 -7
  89. package/dist/neutral/implementation/chain/evm.d.ts.map +0 -1
  90. package/dist/neutral/implementation/chain/index.d.ts +0 -6
  91. package/dist/neutral/implementation/chain/index.d.ts.map +0 -1
  92. package/src/BaseService.ts +0 -45
  93. package/src/ChainService/Evm/Evm.ts +0 -105
  94. package/src/ChainService/Evm/index.ts +0 -1
  95. package/src/ChainService/Memory/Memory.ts +0 -106
  96. package/src/ChainService/Memory/index.ts +0 -1
  97. package/src/ChainService/index.ts +0 -2
  98. package/src/implementation/chain/evm.ts +0 -39
  99. package/src/implementation/chain/index.ts +0 -44
@@ -1,7 +0,0 @@
1
- import type { Initializable } from '@xyo-network/xl1-protocol';
2
- import type { Config } from '@xyo-network/xl1-protocol-sdk';
3
- import { EvmChainViewer } from '../../ChainService/index.ts';
4
- import type { BaseAccountableServiceParams } from '../../model/index.ts';
5
- export declare const canUseEvmContractChainService: (config: Pick<Config, "chain" | "evm">) => boolean;
6
- export declare const initEvmContractChainService: Initializable<BaseAccountableServiceParams, EvmChainViewer>;
7
- //# sourceMappingURL=evm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../../../src/implementation/chain/evm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAI3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AAKxE,eAAO,MAAM,6BAA6B,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC,YAGlF,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,4BAA4B,EAAE,cAAc,CAkBnG,CAAA"}
@@ -1,6 +0,0 @@
1
- import type { Initializable } from '@xyo-network/xl1-protocol';
2
- import type { ChainService } from '@xyo-network/xl1-protocol-sdk';
3
- import type { BaseAccountableServiceParams } from '../../model/index.ts';
4
- export declare const initChainService: Initializable<BaseAccountableServiceParams, ChainService>;
5
- export declare const initMemoryChainService: Initializable<BaseAccountableServiceParams, ChainService>;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/implementation/chain/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AAKxE,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,4BAA4B,EACvE,YAAY,CAUb,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,4BAA4B,EAAE,YAAY,CAO5F,CAAA"}
@@ -1,45 +0,0 @@
1
- import type { EventData, Promisable } from '@xylabs/sdk-js'
2
- import { creatable } from '@xylabs/sdk-js'
3
- import { AbstractCreatableProvider } from '@xyo-network/xl1-protocol-sdk'
4
- import { Mutex } from 'async-mutex'
5
-
6
- import type { BaseAccountableServiceParams, BaseServiceParams } from './model/index.ts'
7
-
8
- declare global {
9
- var xyoServiceSingletons: Record<string, unknown>
10
- }
11
-
12
- @creatable()
13
- export class BaseService<TParams extends BaseServiceParams = BaseServiceParams, TEventData extends EventData = EventData>
14
- extends AbstractCreatableProvider<TParams, TEventData> {
15
- private static singletonInitMutex = new Mutex()
16
-
17
- static get singletons() {
18
- return globalThis['xyoServiceSingletons'] ?? (globalThis['xyoServiceSingletons'] = {})
19
- }
20
-
21
- static initSingleton<TService extends BaseService<TParams>, TParams extends BaseServiceParams>(params: Partial<TParams>) {
22
- if (this.singletons[this.name]) throw new Error(`Singleton already initialized for ${this.name}`)
23
- return this.singletonInitMutex.runExclusive(async () => {
24
- return await this.create(params) as TService
25
- })
26
- }
27
- }
28
-
29
- export abstract class BaseAccountableService<
30
- TParams extends BaseAccountableServiceParams = BaseAccountableServiceParams,
31
- > extends BaseService<TParams> {
32
- // Base class for services that have an account
33
- }
34
-
35
- export interface CreatableService<T extends BaseService = BaseService> {
36
- new(params: T['params']): T
37
- create<T extends BaseService>(this: CreatableService<T>, params?: Partial<T['params']>): Promisable<T>
38
- }
39
-
40
- export function creatableService<T extends BaseService = BaseService>() {
41
- return <U extends CreatableService<T>>(constructor: U) => {
42
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
43
- constructor
44
- }
45
- }
@@ -1,105 +0,0 @@
1
- import type {
2
- Address, Hex, Promisable,
3
- } from '@xylabs/sdk-js'
4
- import { toAddress, toEthAddress } from '@xylabs/sdk-js'
5
- import type { StakedXyoChain } from '@xyo-network/typechain'
6
- import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
7
- import { ChainContractViewerMoniker, type ChainService } from '@xyo-network/xl1-protocol-sdk'
8
- import { getAddress } from 'ethers/address'
9
- import type { ContractRunner } from 'ethers/providers'
10
-
11
- import { BaseService } from '../../BaseService.ts'
12
- import type { BaseServiceParams } from '../../model/index.ts'
13
-
14
- export interface EvmChainViewerParams extends BaseServiceParams {
15
- contract: StakedXyoChain
16
- id: Hex
17
- runner: ContractRunner
18
- }
19
-
20
- /**
21
- * A class that represents a chain stake as backed by an EVM smart contract
22
- */
23
- export class EvmChainViewer extends BaseService<EvmChainViewerParams> implements ChainService {
24
- static readonly defaultMoniker = ChainContractViewerMoniker
25
- static readonly monikers = [ChainContractViewerMoniker]
26
- moniker = EvmChainViewer.defaultMoniker
27
-
28
- protected get contract() {
29
- return this.params.contract
30
- }
31
-
32
- async active(): Promise<bigint> {
33
- return await (this.contract).active()
34
- }
35
-
36
- async activeByStaked(staked: Address): Promise<bigint> {
37
- return await (this.contract).activeByAddressStaked(getAddress(toEthAddress(staked)))
38
- }
39
-
40
- async activeByStaker(address: Address): Promise<bigint> {
41
- return await (this.contract).activeByStaker(getAddress(toEthAddress(address)))
42
- }
43
-
44
- async addStake(staked: Address, amount: bigint): Promise<boolean> {
45
- const result = await (this.contract).addStake(getAddress(toEthAddress(staked)), amount)
46
- await result.wait()
47
- return true
48
- }
49
-
50
- async forkedAtBlockNumber(): Promise<bigint> {
51
- return await (this.contract).forkedAtBlockNumber()
52
- }
53
-
54
- async forkedAtHash(): Promise<bigint> {
55
- return await (this.contract).forkedAtHash()
56
- }
57
-
58
- async forkedChainId(): Promise<Address> {
59
- return toAddress(await (this.contract).forkedChainId())
60
- }
61
-
62
- async minWithdrawalBlocks(): Promise<bigint> {
63
- return await (this.contract).minWithdrawalBlocks()
64
- }
65
-
66
- async pending(): Promise<bigint> {
67
- return await (this.contract).pending()
68
- }
69
-
70
- async pendingByStaker(staker: Address): Promise<bigint> {
71
- return await (this.contract).pendingByStaker(getAddress(toEthAddress(staker)))
72
- }
73
-
74
- async removeStake(slot: bigint): Promise<boolean> {
75
- const result = await (this.contract).removeStake(slot)
76
- await result.wait()
77
- return true
78
- }
79
-
80
- rewardForBlock(_block: XL1BlockNumber): Promisable<AttoXL1> {
81
- throw new Error('Method not implemented.')
82
- }
83
-
84
- async rewardsContract(): Promise<string> {
85
- return await (this.contract).rewardsContract()
86
- }
87
-
88
- async stakingTokenAddress(): Promise<string> {
89
- return await (this.contract).stakingTokenAddress()
90
- }
91
-
92
- async withdrawStake(slot: bigint): Promise<boolean> {
93
- const result = await (this.contract).withdrawStake(slot)
94
- await result.wait()
95
- return true
96
- }
97
-
98
- async withdrawn(): Promise<bigint> {
99
- return await (this.contract).withdrawn()
100
- }
101
-
102
- async withdrawnByStaker(staker: string): Promise<bigint> {
103
- return await (this.contract).withdrawnByStaker(getAddress(staker))
104
- }
105
- }
@@ -1 +0,0 @@
1
- export * from './Evm.ts'
@@ -1,106 +0,0 @@
1
- import type {
2
- Address, Hex, Promisable,
3
- } from '@xylabs/sdk-js'
4
- import { toAddress, ZERO_ADDRESS } from '@xylabs/sdk-js'
5
- import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
6
- import {
7
- ChainContractViewerMoniker,
8
- type ChainService,
9
- } from '@xyo-network/xl1-protocol-sdk'
10
-
11
- import { BaseService } from '../../BaseService.ts'
12
- import type { BaseServiceParams } from '../../model/index.ts'
13
-
14
- export interface MemoryChainViewerParams extends BaseServiceParams {
15
- chainId: Hex
16
- }
17
-
18
- /**
19
- * A class that represents a chain stake as backed in memory
20
- */
21
- export class MemoryChainViewer extends BaseService<MemoryChainViewerParams> implements ChainService {
22
- static readonly defaultMoniker = ChainContractViewerMoniker
23
- static readonly monikers = [ChainContractViewerMoniker]
24
- moniker = MemoryChainViewer.defaultMoniker
25
-
26
- protected _chainId: Hex | undefined
27
- protected _simulatedStake: bigint = 1n
28
-
29
- async active(): Promise<bigint> {
30
- return await Promise.resolve(this._simulatedStake)
31
- }
32
-
33
- async activeByStaked(_staked: Address): Promise<bigint> {
34
- return await Promise.resolve(this._simulatedStake)
35
- }
36
-
37
- async activeByStaker(_address: string): Promise<bigint> {
38
- return await Promise.resolve(this._simulatedStake)
39
- }
40
-
41
- async addStake(_staked: string, _amount: bigint): Promise<boolean> {
42
- return await Promise.resolve(true)
43
- }
44
-
45
- override createHandler(): void {
46
- const { minStake = 1 } = this.params.context.config.producer ?? {}
47
- this._simulatedStake = BigInt(minStake)
48
- }
49
-
50
- async forkedAtBlockNumber(): Promise<bigint> {
51
- return await Promise.resolve(0n)
52
- }
53
-
54
- async forkedAtHash(): Promise<bigint> {
55
- return await Promise.resolve(0n)
56
- }
57
-
58
- async forkedChainId(): Promise<Address> {
59
- return await Promise.resolve(ZERO_ADDRESS)
60
- }
61
-
62
- async minWithdrawalBlocks(): Promise<bigint> {
63
- return await Promise.resolve(1n)
64
- }
65
-
66
- async pending(): Promise<bigint> {
67
- return await Promise.resolve(0n)
68
- }
69
-
70
- async pendingByStaker(_staker: string): Promise<bigint> {
71
- return await Promise.resolve(0n)
72
- }
73
-
74
- async removeStake(_slot: bigint): Promise<boolean> {
75
- return await Promise.resolve(true)
76
- }
77
-
78
- rewardForBlock(_block: XL1BlockNumber): Promisable<AttoXL1> {
79
- throw new Error('Method not implemented.')
80
- }
81
-
82
- async rewardsContract(): Promise<string> {
83
- return await Promise.resolve('')
84
- }
85
-
86
- async stakingTokenAddress(): Promise<string> {
87
- return await Promise.resolve('')
88
- }
89
-
90
- async withdrawStake(_slot: bigint): Promise<boolean> {
91
- return await Promise.resolve(true)
92
- }
93
-
94
- async withdrawn(): Promise<bigint> {
95
- return await Promise.resolve(0n)
96
- }
97
-
98
- async withdrawnByStaker(_staker: string): Promise<bigint> {
99
- return await Promise.resolve(0n)
100
- }
101
-
102
- protected override async startHandler(): Promise<void> {
103
- await super.startHandler()
104
- this._chainId = this.params.chainId ?? toAddress(1n)
105
- }
106
- }
@@ -1 +0,0 @@
1
- export * from './Memory.ts'
@@ -1,2 +0,0 @@
1
- export * from './Evm/index.ts'
2
- export * from './Memory/index.ts'
@@ -1,39 +0,0 @@
1
- import type { Address, Promisable } from '@xylabs/sdk-js'
2
- import {
3
- asAddress, assertEx, isDefined, ZERO_ADDRESS,
4
- } from '@xylabs/sdk-js'
5
- import type { Initializable } from '@xyo-network/xl1-protocol'
6
- import type { Config } from '@xyo-network/xl1-protocol-sdk'
7
- import type { ContractRunner } from 'ethers'
8
- import { Wallet } from 'ethers/wallet'
9
-
10
- import { EvmChainViewer } from '../../ChainService/index.ts'
11
- import type { BaseAccountableServiceParams } from '../../model/index.ts'
12
- import { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'
13
-
14
- let chainStakeServiceSingleton: Promisable<EvmChainViewer> | undefined
15
-
16
- export const canUseEvmContractChainService = (config: Pick<Config, 'chain' | 'evm'>) => {
17
- const { id } = config.chain
18
- return isDefined(id) && id !== ZERO_ADDRESS && canUseEvmProvider({ config })
19
- }
20
-
21
- export const initEvmContractChainService: Initializable<BaseAccountableServiceParams, EvmChainViewer> = async ({
22
- account, context: { config }, traceProvider, meterProvider, logger,
23
- }) => {
24
- if (chainStakeServiceSingleton) return chainStakeServiceSingleton
25
- // Parse config
26
- const emvStakingContractAddress = assertEx(config.chain.id, () => 'config.chain.id is required')
27
- // Configure ContractRunner
28
- const id: Address = assertEx(asAddress(emvStakingContractAddress), () => 'config.chain.id is not a valid address')
29
- const provider = assertEx(await initEvmProvider({ config }))
30
- const privateKey = assertEx(account.private?.hex, () => 'Account does not have a private key')
31
- const runner: ContractRunner = new Wallet(privateKey, provider)
32
- // Create service
33
- chainStakeServiceSingleton = EvmChainViewer.create({
34
- id, runner, traceProvider, meterProvider, logger,
35
- })
36
- const result = await chainStakeServiceSingleton
37
- await result.start()
38
- return result
39
- }
@@ -1,44 +0,0 @@
1
- import {
2
- assertEx, type CreatableName, type Promisable,
3
- } from '@xylabs/sdk-js'
4
- import type { Initializable } from '@xyo-network/xl1-protocol'
5
- import type { ChainService } from '@xyo-network/xl1-protocol-sdk'
6
-
7
- import { MemoryChainViewer } from '../../ChainService/index.ts'
8
- import type { BaseAccountableServiceParams } from '../../model/index.ts'
9
- import { canUseEvmContractChainService, initEvmContractChainService } from './evm.ts'
10
-
11
- let chainStakeServiceSingleton: Promisable<ChainService> | undefined
12
-
13
- export const initChainService: Initializable<BaseAccountableServiceParams,
14
- ChainService> = ({ account, context }) => {
15
- const { logger } = context
16
- logger?.log('ChainService: Initializing...')
17
- const result = init({
18
- context,
19
- name: 'ChainService' as CreatableName,
20
- account,
21
- })
22
- logger?.log('ChainService: Initialized')
23
- return result
24
- }
25
-
26
- export const initMemoryChainService: Initializable<BaseAccountableServiceParams, ChainService> = async ({ context }) => {
27
- const result = await MemoryChainViewer.create({
28
- context,
29
- name: 'MemoryChainService' as CreatableName,
30
- })
31
- assertEx(await result.start(), () => 'Failed to start MemoryChainService')
32
- return result
33
- }
34
-
35
- const init: Initializable<BaseAccountableServiceParams,
36
- ChainService> = async (params): Promise<ChainService> => {
37
- if (chainStakeServiceSingleton) return chainStakeServiceSingleton
38
- const { config } = params.context
39
- chainStakeServiceSingleton = canUseEvmContractChainService(config)
40
- ? await initEvmContractChainService({ ...params, name: 'ChainStakeService' as CreatableName })
41
- : await initMemoryChainService(params)
42
- // Create service
43
- return chainStakeServiceSingleton
44
- }