@xyo-network/xl1-protocol-sdk 1.26.11 → 1.26.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/package.json +29 -16
  2. package/src/ChainContextHelpers.ts +0 -50
  3. package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
  4. package/src/CreatableProvider/CreatableProvider.ts +0 -102
  5. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
  6. package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
  7. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
  8. package/src/CreatableProvider/ProviderFactory.ts +0 -138
  9. package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
  10. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
  11. package/src/CreatableProvider/index.ts +0 -8
  12. package/src/SignedBigInt.ts +0 -59
  13. package/src/_internal/context/getTestProviderContext.ts +0 -13
  14. package/src/_internal/context/index.ts +0 -1
  15. package/src/_internal/index.ts +0 -2
  16. package/src/actor/ActorV3.ts +0 -177
  17. package/src/actor/index.ts +0 -1
  18. package/src/amount/ShiftedBigInt.ts +0 -73
  19. package/src/amount/XL1Amount.ts +0 -103
  20. package/src/amount/index.ts +0 -4
  21. package/src/amount/splitOnDecimal.ts +0 -6
  22. package/src/amount/splitOnDecimalToString.ts +0 -40
  23. package/src/block/hydrate/allHashesPresent.ts +0 -8
  24. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
  25. package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
  26. package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
  27. package/src/block/hydrate/hydrateBlock.ts +0 -43
  28. package/src/block/hydrate/index.ts +0 -7
  29. package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
  30. package/src/block/hydrate/tryHydrateBlock.ts +0 -26
  31. package/src/block/index.ts +0 -2
  32. package/src/block/primitives/blockFromBlockNumber.ts +0 -69
  33. package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
  34. package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
  35. package/src/block/primitives/frames/index.ts +0 -2
  36. package/src/block/primitives/hashFromBlockNumber.ts +0 -9
  37. package/src/block/primitives/index.ts +0 -7
  38. package/src/block/primitives/model.ts +0 -18
  39. package/src/block/primitives/payloads/ChainWindow.ts +0 -7
  40. package/src/block/primitives/payloads/index.ts +0 -1
  41. package/src/block/primitives/toStepIdentityString.ts +0 -6
  42. package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
  43. package/src/config/Actor.ts +0 -32
  44. package/src/config/Actors.ts +0 -9
  45. package/src/config/Base.ts +0 -27
  46. package/src/config/Chain.ts +0 -23
  47. package/src/config/Config.ts +0 -24
  48. package/src/config/DataLake/DataLake.ts +0 -12
  49. package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
  50. package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
  51. package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
  52. package/src/config/DataLake/index.ts +0 -4
  53. package/src/config/DeepPartial.ts +0 -4
  54. package/src/config/Evm.ts +0 -38
  55. package/src/config/HostActor.ts +0 -32
  56. package/src/config/Log.ts +0 -25
  57. package/src/config/Provider.ts +0 -20
  58. package/src/config/Providers.ts +0 -9
  59. package/src/config/Remote.ts +0 -59
  60. package/src/config/Telemetry.ts +0 -49
  61. package/src/config/UsageMeta.ts +0 -46
  62. package/src/config/Validation.ts +0 -29
  63. package/src/config/index.ts +0 -12
  64. package/src/config/storage/Storage.ts +0 -16
  65. package/src/config/storage/driver/Mongo.ts +0 -53
  66. package/src/config/storage/driver/index.ts +0 -1
  67. package/src/config/storage/index.ts +0 -2
  68. package/src/constants.ts +0 -4
  69. package/src/context/Actor.ts +0 -20
  70. package/src/context/HostActor.ts +0 -20
  71. package/src/context/getEmptyProviderContext.ts +0 -19
  72. package/src/context/index.ts +0 -3
  73. package/src/createDeclarationPayload.ts +0 -15
  74. package/src/createTransferPayload.ts +0 -16
  75. package/src/driver/cache/LruCacheMap.ts +0 -48
  76. package/src/driver/cache/index.ts +0 -1
  77. package/src/driver/index.ts +0 -2
  78. package/src/driver/memory/MemoryMap.ts +0 -48
  79. package/src/driver/memory/index.ts +0 -1
  80. package/src/eip-712/Payloads/EIP712Data.ts +0 -35
  81. package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
  82. package/src/eip-712/Payloads/index.ts +0 -2
  83. package/src/eip-712/Types.ts +0 -41
  84. package/src/eip-712/index.ts +0 -4
  85. package/src/eip-712/sign.ts +0 -19
  86. package/src/eip-712/spec/fixtures.ts +0 -27
  87. package/src/eip-712/verify.ts +0 -20
  88. package/src/getFileConfig.ts +0 -36
  89. package/src/index.ts +0 -27
  90. package/src/instances/Address.ts +0 -16
  91. package/src/instances/BoundWitness.ts +0 -13
  92. package/src/instances/Data.ts +0 -4
  93. package/src/instances/Fees.ts +0 -9
  94. package/src/instances/HydratedBoundWitness.ts +0 -16
  95. package/src/instances/Object.ts +0 -6
  96. package/src/instances/Payload.ts +0 -7
  97. package/src/instances/Signature.ts +0 -12
  98. package/src/instances/block/BlockFields.ts +0 -18
  99. package/src/instances/block/HydratedBlock.ts +0 -10
  100. package/src/instances/block/index.ts +0 -1
  101. package/src/instances/index.ts +0 -10
  102. package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
  103. package/src/instances/modifiers/BlockWindowState.ts +0 -6
  104. package/src/instances/modifiers/Signed.ts +0 -9
  105. package/src/instances/modifiers/Validatable.ts +0 -6
  106. package/src/instances/modifiers/index.ts +0 -4
  107. package/src/instances/transaction/HydratedTransaction.ts +0 -9
  108. package/src/instances/transaction/TransactionFields.ts +0 -22
  109. package/src/instances/transaction/index.ts +0 -1
  110. package/src/isInternetAvailable.ts +0 -11
  111. package/src/model/ChainFork/ChainForkStatic.ts +0 -9
  112. package/src/model/ChainFork/index.ts +0 -1
  113. package/src/model/ChainIdentity.ts +0 -6
  114. package/src/model/ChainStore.ts +0 -16
  115. package/src/model/CreatableProviderContext.ts +0 -6
  116. package/src/model/CreatableProviderContext.zod.ts +0 -55
  117. package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
  118. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
  119. package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
  120. package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
  121. package/src/model/PayloadBundle/index.ts +0 -4
  122. package/src/model/index.ts +0 -6
  123. package/src/multipliers.ts +0 -18
  124. package/src/payloads/AddressPairPayload.ts +0 -27
  125. package/src/payloads/index.ts +0 -4
  126. package/src/payloads/netBalancesForPayloads.ts +0 -24
  127. package/src/payloads/netSchemasForPayloads.ts +0 -24
  128. package/src/payloads/netTransfersForPayloads.ts +0 -27
  129. package/src/primitives/block/index.ts +0 -2
  130. package/src/primitives/block/range/blockRangeSteps.ts +0 -23
  131. package/src/primitives/block/range/index.ts +0 -1
  132. package/src/primitives/block/rate/blockRate.ts +0 -77
  133. package/src/primitives/block/rate/index.ts +0 -4
  134. package/src/primitives/block/rate/stepRate.ts +0 -37
  135. package/src/primitives/block/rate/timeHelpers.ts +0 -61
  136. package/src/primitives/block/rate/timeRate.ts +0 -121
  137. package/src/primitives/chain/getWindowedChain.ts +0 -50
  138. package/src/primitives/chain/index.ts +0 -3
  139. package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
  140. package/src/primitives/chain/step/index.ts +0 -4
  141. package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
  142. package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
  143. package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
  144. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
  145. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
  146. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
  147. package/src/primitives/chain/time/index.ts +0 -3
  148. package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
  149. package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
  150. package/src/primitives/datalake/index.ts +0 -2
  151. package/src/primitives/index.ts +0 -13
  152. package/src/primitives/mapToMapType.ts +0 -35
  153. package/src/primitives/payload/index.ts +0 -1
  154. package/src/primitives/payload/mergeTransfers.ts +0 -16
  155. package/src/primitives/readPayloadMapFromStore.ts +0 -58
  156. package/src/primitives/rewardFromBlockNumber.ts +0 -19
  157. package/src/primitives/rewards/index.ts +0 -1
  158. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
  159. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
  160. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
  161. package/src/primitives/stake/allStakersForRange.ts +0 -32
  162. package/src/primitives/stake/allStakersForStep.ts +0 -24
  163. package/src/primitives/stake/index.ts +0 -6
  164. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
  165. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
  166. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
  167. package/src/primitives/state/findMostRecentBlock.ts +0 -44
  168. package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
  169. package/src/primitives/state/index.ts +0 -2
  170. package/src/primitives/step/completedStepRewardAddress.ts +0 -10
  171. package/src/primitives/step/derivedReceiveAddress.ts +0 -9
  172. package/src/primitives/step/index.ts +0 -4
  173. package/src/primitives/step/stepBlockRange.ts +0 -9
  174. package/src/primitives/step/stepTransferIndex.ts +0 -19
  175. package/src/primitives/transaction/elevatedPayloads.ts +0 -24
  176. package/src/primitives/transaction/index.ts +0 -1
  177. package/src/primitives/uncle/findBestUncle.ts +0 -9
  178. package/src/primitives/uncle/findUncles.ts +0 -75
  179. package/src/primitives/uncle/index.ts +0 -3
  180. package/src/primitives/uncle/scoreUncle.ts +0 -7
  181. package/src/services/AccountTransfersService.ts +0 -13
  182. package/src/services/BlockProducerService.ts +0 -11
  183. package/src/services/Chain/BaseChainService.ts +0 -4
  184. package/src/services/Chain/ChainHeadService.ts +0 -8
  185. package/src/services/Chain/ChainService.ts +0 -6
  186. package/src/services/Chain/index.ts +0 -3
  187. package/src/services/Election.ts +0 -14
  188. package/src/services/NetworkStakeService.ts +0 -4
  189. package/src/services/Params.ts +0 -13
  190. package/src/services/PendingTransactionsService.ts +0 -7
  191. package/src/services/SchemasService.ts +0 -11
  192. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
  193. package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
  194. package/src/services/StakeIntentService/index.ts +0 -2
  195. package/src/services/index.ts +0 -8
  196. package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
  197. package/src/simple/StakeEventsViewer/index.ts +0 -1
  198. package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
  199. package/src/simple/StakeTotalsViewer/index.ts +0 -1
  200. package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
  201. package/src/simple/StakeViewer/index.ts +0 -1
  202. package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
  203. package/src/simple/TransactionViewer/index.ts +0 -1
  204. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
  205. package/src/simple/accountBalance/index.ts +0 -1
  206. package/src/simple/block/SimpleBlockViewer.ts +0 -231
  207. package/src/simple/block/index.ts +0 -1
  208. package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
  209. package/src/simple/blockInvalidation/index.ts +0 -1
  210. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
  211. package/src/simple/blockReward/index.ts +0 -1
  212. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
  213. package/src/simple/blockValidation/index.ts +0 -1
  214. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
  215. package/src/simple/chainContractViewer/index.ts +0 -1
  216. package/src/simple/client/SimpleXyoClient.ts +0 -14
  217. package/src/simple/client/index.ts +0 -1
  218. package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
  219. package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
  220. package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
  221. package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
  222. package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
  223. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
  224. package/src/simple/datalake/index.ts +0 -4
  225. package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
  226. package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
  227. package/src/simple/finalization/index.ts +0 -2
  228. package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
  229. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
  230. package/src/simple/gateway/index.ts +0 -2
  231. package/src/simple/index.ts +0 -22
  232. package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
  233. package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
  234. package/src/simple/mempool/index.ts +0 -2
  235. package/src/simple/network/SimpleXyoNetwork.ts +0 -48
  236. package/src/simple/network/index.ts +0 -1
  237. package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
  238. package/src/simple/network/lib/StatusNetworks.ts +0 -32
  239. package/src/simple/network/lib/index.ts +0 -2
  240. package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
  241. package/src/simple/permissions/index.ts +0 -2
  242. package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
  243. package/src/simple/permissions/store/PermissionsStore.ts +0 -17
  244. package/src/simple/permissions/store/index.ts +0 -2
  245. package/src/simple/runner/SimpleXyoRunner.ts +0 -41
  246. package/src/simple/runner/index.ts +0 -1
  247. package/src/simple/signer/SimpleXyoSigner.ts +0 -78
  248. package/src/simple/signer/index.ts +0 -1
  249. package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
  250. package/src/simple/timeSync2/index.ts +0 -1
  251. package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
  252. package/src/simple/transactionInvalidation/index.ts +0 -1
  253. package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
  254. package/src/simple/transactionValidation/index.ts +0 -1
  255. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
  256. package/src/simple/windowedBlock/index.ts +0 -1
  257. package/src/status/RuntimeStatusMonitor.ts +0 -120
  258. package/src/status/ServiceStatus.ts +0 -21
  259. package/src/status/index.ts +0 -2
  260. package/src/summary/index.ts +0 -2
  261. package/src/summary/model/BalancesStepSummary.ts +0 -35
  262. package/src/summary/model/SchemasStepSummary.ts +0 -33
  263. package/src/summary/model/StepSummary.ts +0 -20
  264. package/src/summary/model/TransfersSummary.ts +0 -36
  265. package/src/summary/model/index.ts +0 -4
  266. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
  267. package/src/summary/primitives/balances/balancesSummary.ts +0 -48
  268. package/src/summary/primitives/balances/index.ts +0 -2
  269. package/src/summary/primitives/index.ts +0 -3
  270. package/src/summary/primitives/schemas/index.ts +0 -2
  271. package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
  272. package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
  273. package/src/summary/primitives/transfers/index.ts +0 -2
  274. package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
  275. package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
  276. package/src/test/BuildBlockOptions.ts +0 -81
  277. package/src/test/buildBlock.ts +0 -105
  278. package/src/test/buildGenesisBlock.ts +0 -29
  279. package/src/test/buildNextBlock.ts +0 -37
  280. package/src/test/buildRandomChain.ts +0 -92
  281. package/src/test/buildRandomGenesisBlock.ts +0 -47
  282. package/src/test/createGenesisBlock.ts +0 -41
  283. package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
  284. package/src/test/getSimpleBlockViewerLocator.ts +0 -41
  285. package/src/test/getTestProviderContext.ts +0 -8
  286. package/src/test/index.ts +0 -2
  287. package/src/time/index.ts +0 -1
  288. package/src/time/primitives/index.ts +0 -1
  289. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
  290. package/src/transaction/TransactionBuilder.ts +0 -164
  291. package/src/transaction/buildRandomTransaction.ts +0 -38
  292. package/src/transaction/buildTransaction.ts +0 -68
  293. package/src/transaction/buildUnsignedTransaction.ts +0 -56
  294. package/src/transaction/confirmSubmittedTransaction.ts +0 -42
  295. package/src/transaction/hydrateTransaction.ts +0 -117
  296. package/src/transaction/index.ts +0 -9
  297. package/src/transaction/primitives/index.ts +0 -4
  298. package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
  299. package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
  300. package/src/transaction/primitives/transactionOperations.ts +0 -13
  301. package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
  302. package/src/transaction/script.ts +0 -48
  303. package/src/transaction/signTransaction.ts +0 -32
  304. package/src/utils/HydratedCache.ts +0 -39
  305. package/src/utils/index.ts +0 -2
  306. package/src/utils/isZodError.ts +0 -11
  307. package/src/validation/index.ts +0 -2
  308. package/src/validation/lib/getUrl.ts +0 -7
  309. package/src/validation/lib/index.ts +0 -2
  310. package/src/validation/lib/isLocalhost.ts +0 -9
  311. package/src/validation/schema/Address.ts +0 -2
  312. package/src/validation/schema/Mnemonic.ts +0 -21
  313. package/src/validation/schema/index.ts +0 -2
  314. package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
  315. package/src/wallet/index.ts +0 -2
  316. package/src/wallet/paths.ts +0 -17
@@ -1,170 +0,0 @@
1
- import { hasAllLabels, type Labels } from '@xylabs/sdk-js'
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import type { CreatableProviderContext } from '../model/index.ts'
6
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
7
- import { type CreatableProviderRegistry, registerCreatableProviderFactory } from './CreatableProviderRegistry.ts'
8
- import type { ProviderFactoryGetInstanceOptions } from './GetInstanceOptions.ts'
9
- import { hasLabels, type LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
10
- import type { ProviderFactoryLocatorInstance } from './ProviderFactoryLocatorInstance.ts'
11
-
12
- /**
13
- * A class which encapsulates the Service Locator Pattern for Provider Factories
14
- */
15
- export class ProviderFactoryLocator<TContext extends CreatableProviderContext = CreatableProviderContext,
16
- TMonikers extends ProviderMoniker[] = ProviderMoniker[]> implements ProviderFactoryLocatorInstance<TContext> {
17
- protected readonly _context: TContext
18
- protected readonly _registry: CreatableProviderRegistry<TMonikers>
19
-
20
- private _frozen = false
21
- private _parent?: ProviderFactoryLocatorInstance<TContext>
22
- private _validateDepsOnRegister: boolean
23
-
24
- constructor(context: (Omit<TContext, 'locator'> & { locator?: TContext['locator'] }), registry: CreatableProviderRegistry = {}, validateDepsOnRegister = false) {
25
- this._registry = registry
26
- this._context = { ...context, locator: this } as unknown as TContext
27
- this._parent = context.locator as ProviderFactoryLocatorInstance<TContext>
28
- this._validateDepsOnRegister = validateDepsOnRegister
29
- }
30
-
31
- get context() {
32
- return this._context
33
- }
34
-
35
- get logger() {
36
- return this.context.logger
37
- }
38
-
39
- /**
40
- * The current registry for the module factory
41
- */
42
- get registry(): Readonly<CreatableProviderRegistry> {
43
- return this._registry
44
- }
45
-
46
- protected get validateDepsOnRegister() {
47
- return this._validateDepsOnRegister
48
- }
49
-
50
- freeze() {
51
- this._frozen = true
52
- }
53
-
54
- async getInstance<TProvider extends Provider<ProviderMoniker>>(
55
- moniker: TProvider['moniker'],
56
- { start = true, labels }: ProviderFactoryGetInstanceOptions = {},
57
- ) {
58
- return assertEx(
59
- await this.tryGetInstance<TProvider>(moniker, { start, labels }),
60
- () => `No provider instance for the supplied config moniker [${moniker}]${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} could be created`,
61
- )
62
- }
63
-
64
- has(moniker: TMonikers[number]): boolean {
65
- return !!this._registry[moniker]
66
- }
67
-
68
- /**
69
- * Locates a provider factory that matches the supplied moniker and labels
70
- * @param moniker The config moniker for the provider
71
- * @param labels The labels for the provider factory
72
- * @returns A provider factory that matches the supplied moniker and labels or throws if one is not found
73
- */
74
- locate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker'], labels?: Labels):
75
- CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> {
76
- return assertEx(
77
- this.tryLocate<TProvider>(moniker, labels),
78
-
79
- () => `No module factory for the supplied config moniker [${moniker}]${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,
80
- )
81
- }
82
-
83
- merge(locator: ProviderFactoryLocatorInstance): ProviderFactoryLocatorInstance {
84
- const registry = { ...this.registry }
85
- for (const moniker in locator.registry) {
86
- if (registry[moniker]) {
87
- registry[moniker].push(...(locator.registry[moniker] ?? []))
88
- } else {
89
- registry[moniker] = locator.registry[moniker]
90
- }
91
- }
92
- return new ProviderFactoryLocator(this.context, registry)
93
- }
94
-
95
- /**
96
- * Registers a single module factory (with optional tags) with the locator
97
- * @param factory The factory to register
98
- * @param labels The labels for the module factory
99
- */
100
- register(factory: CreatableProviderFactory, labels?: Labels, primary: boolean | ProviderMoniker | ProviderMoniker[] = false): this {
101
- assertEx(!this._frozen, () => 'Cannot register a module factory after the locator has been frozen')
102
- if (this.validateDepsOnRegister) {
103
- const missingDeps = factory.dependencies.filter(dep => !this.registered(dep))
104
- assertEx(missingDeps.length === 0, () => `Cannot register module factory [${factory.uniqueId.description}] due to missing dependencies: ${missingDeps.join(', ')}`)
105
- }
106
- registerCreatableProviderFactory(this._registry, factory, labels, primary)
107
- return this
108
- }
109
-
110
- /**
111
- * Registers multiple module factories with the locator
112
- * @param factories The factories to register
113
- */
114
- registerMany(factories: CreatableProviderFactory[]): this {
115
- for (const factory of factories) {
116
- this.register(factory)
117
- }
118
- return this
119
- }
120
-
121
- registered(moniker: ProviderMoniker) {
122
- return !!this.registry[moniker] || (this._parent?.registered(moniker) ?? false)
123
- }
124
-
125
- async tryGetInstance<TProvider extends Provider<ProviderMoniker>>(
126
- moniker: TProvider['moniker'],
127
- { start = true, labels }: ProviderFactoryGetInstanceOptions = {},
128
- ) {
129
- const resolvedParams = { context: this.context } as CreatableProviderInstance<TProvider>['params']
130
- const factory = this.tryLocate<TProvider>(moniker, labels)
131
- if (factory) {
132
- if (this.context.singletons[factory.uniqueId]) {
133
- return this.context.singletons[factory.uniqueId] as CreatableProviderInstance<TProvider>
134
- }
135
- this.logger?.info(`Creating provider instance for moniker [${moniker}]${labels ? ` with labels [${JSON.stringify(labels)}]` : ''} using factory [${factory.uniqueId.description}]`)
136
- const result = await factory.getInstance(resolvedParams, { start })
137
- this.context.singletons[factory.uniqueId] = result
138
- return result
139
- }
140
- }
141
-
142
- /**
143
- * Tries to locate a module factory that matches the supplied moniker and labels
144
- * @param moniker The config moniker for the module
145
- * @param labels The labels for the module factory
146
- * @returns A module factory that matches the supplied moniker and labels or undefined
147
- */
148
- tryLocate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker'], labels?: Labels) {
149
- const result = (labels
150
- // Find the first factory that has labels and has all the labels provided
151
- ? (this._registry[moniker]?.filter(hasLabels).find(factory => hasAllLabels(factory?.labels, labels)) ?? this._registry[moniker]?.[0])
152
- // Otherwise, return the first factory
153
- : this._registry[moniker]?.[0]) ?? this._parent?.tryLocate<TProvider>(moniker, labels)
154
-
155
- return result as CreatableProviderFactory<CreatableProviderInstance<TProvider>>
156
- | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
157
- }
158
-
159
- validateDependencies(recursive = false) {
160
- if (recursive) {
161
- this._parent?.validateDependencies()
162
- }
163
- for (const moniker in this.registry) {
164
- for (const factory of this.registry[moniker] ?? []) {
165
- const missingDeps = factory.dependencies.filter(dep => !this.registered(dep))
166
- assertEx(missingDeps.length === 0, () => `Module factory [${factory.uniqueId.description}] is missing dependencies: ${missingDeps.join(', ')}`)
167
- }
168
- }
169
- }
170
- }
@@ -1,70 +0,0 @@
1
- import type { Labels } from '@xylabs/sdk-js'
2
- import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
3
-
4
- import type { CreatableProviderContext } from '../model/index.ts'
5
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
6
- import type { CreatableProviderRegistry } from './CreatableProviderRegistry.ts'
7
- import type { ProviderFactoryGetInstanceOptions } from './GetInstanceOptions.ts'
8
- import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
9
-
10
- /** Interface for ProviderFactoryLocator instances. */
11
- export interface ProviderFactoryLocatorInstance<T extends CreatableProviderContext = CreatableProviderContext> {
12
-
13
- context: T
14
-
15
- /**
16
- * The current registry for the module factory
17
- */
18
- registry: Readonly<CreatableProviderRegistry>
19
-
20
- freeze(): void
21
-
22
- getInstance<TProvider extends Provider<ProviderMoniker>>(
23
- moniker: TProvider['moniker'],
24
- options?: ProviderFactoryGetInstanceOptions,
25
- ): Promise<CreatableProviderInstance<TProvider>>
26
-
27
- /**
28
- * Locates a module factory that matches the supplied moniker and labels
29
- * @param moniker The config moniker for the module
30
- * @param labels The labels for the module factory
31
- * @returns A module factory that matches the supplied moniker and labels or throws if one is not found
32
- */
33
- locate<TProvider extends Provider<ProviderMoniker>>(moniker: ProviderMoniker, labels?: Labels):
34
- CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
35
-
36
- merge(locator: ProviderFactoryLocatorInstance): ProviderFactoryLocatorInstance
37
-
38
- /**
39
- * Registers a single module factory (with optional tags) with the locator
40
- * @param factory The factory to register
41
- * @param labels The labels for the module factory
42
- */
43
- register(factory: CreatableProviderFactory, labels?: Labels, primary?: boolean | ProviderMoniker | ProviderMoniker[]): ProviderFactoryLocatorInstance
44
-
45
- /**
46
- * Registers multiple module factories with the locator
47
- * @param factories The factories to register
48
- */
49
- registerMany(factories: CreatableProviderFactory[]): ProviderFactoryLocatorInstance
50
-
51
- registered(moniker: ProviderMoniker): boolean
52
-
53
- tryGetInstance<TProvider extends Provider<ProviderMoniker>>(
54
- moniker: TProvider['moniker'],
55
- options?: ProviderFactoryGetInstanceOptions,
56
- ): Promise<CreatableProviderInstance<TProvider> | undefined>
57
-
58
- /**
59
- * Tries to locate a module factory that matches the supplied moniker and labels
60
- * @param moniker The config moniker for the module
61
- * @param labels The labels for the module factory
62
- * @returns A module factory that matches the supplied moniker and labels or undefined
63
- */
64
- tryLocate<TProvider extends Provider<ProviderMoniker>>(
65
- moniker: ProviderMoniker,
66
- labels?: Labels
67
- ): CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
68
-
69
- validateDependencies(): void
70
- }
@@ -1,8 +0,0 @@
1
- export * from './AbstractCreatableProvider.ts'
2
- export * from './CreatableProvider.ts'
3
- export * from './CreatableProviderRegistry.ts'
4
- export * from './GetInstanceOptions.ts'
5
- export * from './LabeledCreatableProviderFactory.ts'
6
- export * from './ProviderFactory.ts'
7
- export * from './ProviderFactoryLocator.ts'
8
- export * from './ProviderFactoryLocatorInstance.ts'
@@ -1,59 +0,0 @@
1
- import {
2
- type Hex,
3
- hexToBigInt,
4
- toHex,
5
- } from '@xylabs/sdk-js'
6
- import { isObject } from '@xylabs/sdk-js'
7
-
8
- /** Represents a negative bigint value stored as a hex string */
9
- export interface NegativeBigInt {
10
- negative: Hex
11
- }
12
-
13
- /** Represents a positive bigint value stored as a hex string */
14
- export interface PositiveBigInt {
15
- positive: Hex
16
- }
17
-
18
- /** A signed bigint value represented as either a negative or positive hex string */
19
- export type SignedBigInt = NegativeBigInt | PositiveBigInt
20
-
21
- /** Type guard that checks if a value is a NegativeBigInt */
22
- export const isNegativeBigInt = (value: unknown): value is NegativeBigInt => {
23
- return isObject(value) && 'negative' in value && typeof value.negative === 'string'
24
- }
25
-
26
- /** Type guard that checks if a value is a PositiveBigInt */
27
- export const isPositiveBigInt = (value: unknown): value is PositiveBigInt => {
28
- return isObject(value) && 'positive' in value && typeof value.positive === 'string'
29
- }
30
-
31
- /** parseSignedBigInt constant. */
32
- export const parseSignedBigInt = (value: SignedBigInt): bigint => {
33
- if (isNegativeBigInt(value)) {
34
- return -hexToBigInt(value.negative)
35
- } else if (isPositiveBigInt(value)) {
36
- return hexToBigInt(value.positive)
37
- } else {
38
- throw new Error('Invalid balance type')
39
- }
40
- }
41
-
42
- /** toSignedBigInt constant. */
43
- export const toSignedBigInt = (value: bigint): SignedBigInt => {
44
- return value < 0n ? { negative: toHex(-value) } : { positive: toHex(value) }
45
- }
46
-
47
- /** toPositiveBigInt constant. */
48
- export const toPositiveBigInt = (value: unknown): PositiveBigInt => {
49
- if (isNegativeBigInt(value)) {
50
- return { positive: toHex(0n) }
51
- }
52
- if (isPositiveBigInt(value)) {
53
- return { positive: value.positive }
54
- }
55
- if (typeof value === 'bigint') {
56
- return { positive: toHex(value) }
57
- }
58
- throw new Error('Invalid value for positive big int')
59
- }
@@ -1,13 +0,0 @@
1
- import type { Config } from '../../config/index.ts'
2
- import { ProviderFactoryLocator } from '../../CreatableProvider/index.ts'
3
- import type { CreatableProviderContext } from '../../model/index.ts'
4
-
5
- // This file should not be exported from the package
6
- export function getTestProviderContext(config: Config): CreatableProviderContext {
7
- const singletons = {}
8
- const caches = {}
9
- const locator = new ProviderFactoryLocator({
10
- config, singletons, caches, logger: console,
11
- })
12
- return locator.context
13
- }
@@ -1 +0,0 @@
1
- export * from './getTestProviderContext.ts'
@@ -1,2 +0,0 @@
1
- // _internal should never be exported from public barrel
2
- export * from './context/index.ts'
@@ -1,177 +0,0 @@
1
- import type {
2
- CreatableInstance, CreatableName, CreatableParams, CreatableStatusReporter, EmptyObject,
3
- Logger,
4
- } from '@xylabs/sdk-js'
5
- import {
6
- AbstractCreatable,
7
- assertEx,
8
- delay, IdLogger,
9
- } from '@xylabs/sdk-js'
10
- import type { AccountInstance } from '@xyo-network/sdk-js'
11
- import { Semaphore } from 'async-mutex'
12
- import z from 'zod'
13
-
14
- import type { ProviderFactoryLocatorInstance } from '../CreatableProvider/index.ts'
15
-
16
- const CreatableNameZod = z.custom<CreatableName>(val => typeof val === 'string' && val.length > 0)
17
- const StatusReporterInstanceZod = z.custom<CreatableStatusReporter>(val => val && typeof val === 'object' && 'report' in val)
18
- const AccountInstanceZod = z.custom<AccountInstance>(val => val && typeof val === 'object' && 'address' in val)
19
-
20
- /** ActorParamsV3Zod constant. */
21
- export const ActorParamsV3Zod = z.object({
22
- account: AccountInstanceZod,
23
- locator: z.unknown(),
24
- name: CreatableNameZod,
25
- statusReporter: StatusReporterInstanceZod.optional(),
26
- })
27
-
28
- /** ActorParamsV3Zod type. */
29
- export type ActorParamsV3Zod = z.infer<typeof ActorParamsV3Zod>
30
-
31
- /** ActorParamsV3 type. */
32
- export type ActorParamsV3<T extends EmptyObject | void = void> = CreatableParams & {
33
- account: AccountInstance
34
- locator: ProviderFactoryLocatorInstance
35
- } & (T extends void ? EmptyObject : T)
36
-
37
- /** ActorInstanceV3 type. */
38
- export type ActorInstanceV3<T extends ActorParamsV3 = ActorParamsV3> = CreatableInstance<T>
39
-
40
- /** ActorV3 implementation. */
41
- export abstract class ActorV3<TParams extends ActorParamsV3 = ActorParamsV3> extends AbstractCreatable<TParams> {
42
- protected readonly _intervals: Map<string, ReturnType<typeof setInterval>> = new Map()
43
- protected readonly _semaphores: Map<string, Semaphore> = new Map()
44
- protected readonly _timeouts: Map<string, ReturnType<typeof setTimeout>> = new Map()
45
-
46
- private _logger?: Logger
47
-
48
- override get logger() {
49
- this._logger = new IdLogger(assertEx(this.context.logger, () => `Logger is required in context for actor ${this.name}.`), () => this.name)
50
- return this._logger
51
- }
52
-
53
- protected get account() {
54
- return this.params.account
55
- }
56
-
57
- protected get context() {
58
- return this.locator.context
59
- }
60
-
61
- protected get locator() {
62
- return this.params.locator
63
- }
64
-
65
- static override async paramsHandler<T extends ActorInstanceV3>(params: Partial<T['params']>) {
66
- const baseParams = await super.paramsHandler({ ...params, name: params.name ?? 'UnknownActor' })
67
- const account = assertEx(params.account, () => `params.account is required for actor ${baseParams.name}.`)
68
- const locator = assertEx(params.locator, () => `params.locator is required for actor ${baseParams.name}.`)
69
- return {
70
- ...baseParams, account, locator,
71
- } satisfies ActorParamsV3
72
- }
73
-
74
- /**
75
- * The timer runs until the actor is deactivated (or you manually stop it).
76
- */
77
- registerTimer(timerName: string, callback: () => Promise<void>, dueTimeMs: number, periodMs: number) {
78
- if (this.status !== 'starting') {
79
- this.logger?.warn(
80
- `Cannot register timer '${timerName}' because actor is not starting.`,
81
- )
82
- return
83
- }
84
-
85
- let running = false
86
-
87
- this._semaphores.set(timerName, new Semaphore(1))
88
-
89
- const timeoutId = setTimeout(() => {
90
- const intervalId = setInterval(() => {
91
- const semaphore = this._semaphores.get(timerName)
92
- if (this.status !== 'started' || !this._intervals.has(timerName) || !semaphore || running) return
93
- if (semaphore.isLocked()) {
94
- this.logger?.warn(
95
- `Skipping timer '${this.name}:${timerName}' execution because previous execution is still running.`,
96
- )
97
- return
98
- }
99
- semaphore.acquire().then(([, release]) => {
100
- const startTime = Date.now()
101
- running = true
102
- callback()
103
- .then(() => {
104
- const duration = Date.now() - startTime
105
- if (duration > periodMs) {
106
- this.logger?.warn(
107
- `Timer '${this.name}:${timerName}' execution took longer (${duration}ms) than the period (${periodMs}ms).`,
108
- )
109
- } else if (duration > 5000) {
110
- this.logger?.warn(
111
- `Timer '${this.name}:${timerName}' execution took longer (${duration}ms) than 5000ms.`,
112
- )
113
- }
114
- })
115
- .catch((error) => {
116
- this.logger?.error(`Error in timer '${this.name}:${timerName}': ${error}`)
117
- this.logger?.error(error.stack)
118
- })
119
- .finally(() => {
120
- release()
121
- running = false
122
- })
123
- }).catch((error) => {
124
- this.logger?.error(`Error acquiring semaphore for timer '${this.name}:${timerName}': ${error}`)
125
- })
126
- }, periodMs)
127
-
128
- // store interval so we can clear it on stop()
129
- this._intervals.set(timerName, intervalId)
130
- }, dueTimeMs)
131
-
132
- // store timeout so we can clear it on stop() if interval hasn't started yet
133
- this._timeouts.set(timerName, timeoutId)
134
-
135
- this.logger?.log(
136
- `Timer '${this.name}:${timerName}' registered: first call after ${dueTimeMs}ms, recurring every ${periodMs}ms.`,
137
- )
138
- }
139
-
140
- /**
141
- * Called by the Orchestrator when the actor is deactivated.
142
- * Stop all running timers.
143
- */
144
- override async stopHandler() {
145
- await super.stopHandler()
146
- this.logger?.log('Stopping all timers...')
147
-
148
- // wait for all semaphores to be free and acquire them to prevent new tasks from starting
149
- await Promise.all(
150
- [...this._semaphores.values()].map(async (semaphore) => {
151
- // Wait for any running tasks to complete
152
- while (semaphore.isLocked()) {
153
- this.logger?.log('Waiting for running timer task to complete...')
154
- await delay(500)
155
- }
156
- await semaphore.acquire()
157
- }),
158
- )
159
-
160
- this._semaphores.clear()
161
-
162
- for (const [, timeoutRef] of this._timeouts.entries()) {
163
- clearTimeout(timeoutRef)
164
- }
165
- this._timeouts.clear()
166
-
167
- for (const [, intervalRef] of this._intervals.entries()) {
168
- clearInterval(intervalRef)
169
- }
170
- this._intervals.clear()
171
-
172
- this.logger?.log('Stopped.')
173
- }
174
- }
175
-
176
- /** Actor implementation. */
177
- export abstract class Actor<TParams extends ActorParamsV3 = ActorParamsV3> extends ActorV3<TParams> {}
@@ -1 +0,0 @@
1
- export * from './ActorV3.ts'
@@ -1,73 +0,0 @@
1
- import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-lib'
2
-
3
- import { splitOnDecimalToString } from './splitOnDecimalToString.ts'
4
-
5
- /** Represents a bigint with a fixed decimal point shift, supporting locale-aware string formatting */
6
- export class ShiftedBigInt {
7
- static readonly defaultConfig: ShiftedBigIntConfig = {
8
- places: 18,
9
- maxDecimal: 18,
10
- maxCharacters: 9,
11
- minDecimals: 1,
12
- locale: 'en-US',
13
- }
14
-
15
- config: ShiftedBigIntConfig
16
- value: bigint
17
-
18
- constructor(
19
- value: bigint | ShiftedBigInt,
20
- config: Partial<ShiftedBigIntConfig> = {},
21
- ) {
22
- this.value = typeof value === 'bigint' ? value : value.value
23
- this.config = {
24
- ...ShiftedBigInt.defaultConfig, ...(typeof value === 'bigint' ? {} : value.config), ...config,
25
- }
26
- }
27
-
28
- get locale(): Intl.LocalesArgument {
29
- return this.config.locale ?? 'en-US'
30
- }
31
-
32
- get maxCharacters(): number {
33
- return this.config.maxCharacters ?? 9
34
- }
35
-
36
- get maxDecimal(): number {
37
- return this.config.maxDecimal ?? this.places
38
- }
39
-
40
- get minDecimals(): number {
41
- return this.config.minDecimals ?? 1
42
- }
43
-
44
- get places(): number {
45
- return this.config.places ?? 18
46
- }
47
-
48
- toFullString(): string {
49
- return splitOnDecimalToString(
50
- this.value,
51
- this.places,
52
- this.places,
53
- Infinity,
54
- this.places,
55
- this.locale,
56
- )
57
- }
58
-
59
- toShortString(): string {
60
- return splitOnDecimalToString(
61
- this.value,
62
- this.places,
63
- this.maxDecimal,
64
- this.maxCharacters,
65
- this.minDecimals,
66
- this.locale,
67
- )
68
- }
69
-
70
- toString(): string {
71
- return this.toFullString()
72
- }
73
- }
@@ -1,103 +0,0 @@
1
- /* eslint-disable @typescript-eslint/member-ordering */
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import type { ShiftedBigIntConfig, XL1AmountInstance } from '@xyo-network/xl1-protocol-lib'
4
- import {
5
- AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1, XL1,
6
- XL1Places,
7
- } from '@xyo-network/xl1-protocol-lib'
8
-
9
- import { ShiftedBigInt } from './ShiftedBigInt.ts'
10
-
11
- const MAX_XL1_AMOUNT = 2n ** 256n - 1n
12
- const allowedPlaces = Object.values(XL1Places)
13
-
14
- /** Represents an XL1 token amount stored in AttoXL1, with conversions to milli, micro, nano, pico, femto, and atto denominations */
15
- export class XL1Amount implements XL1AmountInstance {
16
- value: AttoXL1
17
- private locale: Intl.LocalesArgument
18
-
19
- constructor(value: bigint, locale: Intl.LocalesArgument = 'en-US') {
20
- this.locale = locale
21
- this.value = AttoXL1(value > MAX_XL1_AMOUNT ? MAX_XL1_AMOUNT : value < 0n ? 0n : value)
22
- }
23
-
24
- static from(value: bigint, places: bigint = XL1Places.atto) {
25
- assertEx(allowedPlaces.includes(places), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)
26
- return new XL1Amount(value * 10n ** BigInt(places))
27
- }
28
-
29
- static fromMilli(value: MilliXL1) {
30
- return this.from(value, XL1Places.milli)
31
- }
32
-
33
- static fromMicro(value: MicroXL1) {
34
- return this.from(value, XL1Places.micro)
35
- }
36
-
37
- static fromNano(value: NanoXL1) {
38
- return this.from(value, XL1Places.nano)
39
- }
40
-
41
- static fromPico(value: PicoXL1) {
42
- return this.from(value, XL1Places.pico)
43
- }
44
-
45
- static fromFemto(value: FemtoXL1) {
46
- return this.from(value, XL1Places.femto)
47
- }
48
-
49
- static fromAtto(value: AttoXL1) {
50
- return this.from(value, XL1Places.atto)
51
- }
52
-
53
- static fromXL1(value: XL1) {
54
- return this.from(value, XL1Places.xl1)
55
- }
56
-
57
- to(places: number | bigint = XL1Places.atto) {
58
- return this.value / 10n ** BigInt(places)
59
- }
60
-
61
- get milli() {
62
- return MilliXL1(this.to(XL1Places.milli))
63
- }
64
-
65
- get micro() {
66
- return MicroXL1(this.to(XL1Places.micro))
67
- }
68
-
69
- get nano() {
70
- return NanoXL1(this.to(XL1Places.nano))
71
- }
72
-
73
- get pico() {
74
- return PicoXL1(this.to(XL1Places.pico))
75
- }
76
-
77
- get femto() {
78
- return FemtoXL1(this.to(XL1Places.femto))
79
- }
80
-
81
- get atto() {
82
- return AttoXL1(this.to(XL1Places.atto))
83
- }
84
-
85
- get xl1() {
86
- return XL1(this.to(XL1Places.xl1))
87
- }
88
-
89
- toString(places: number = Number(XL1Places.atto), config: Partial<ShiftedBigIntConfig> = {}): string {
90
- assertEx(allowedPlaces.includes(BigInt(places)), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)
91
- return new ShiftedBigInt(
92
- this.value,
93
- {
94
- places,
95
- locale: this.locale,
96
- maxDecimal: places,
97
- minDecimals: 0,
98
- maxCharacters: places,
99
- ...config,
100
- },
101
- ).toShortString()
102
- }
103
- }