@xyo-network/xl1-protocol-lib 1.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +165 -0
- package/README.md +81 -0
- package/dist/neutral/OpenTelemetryProviders.d.ts +7 -0
- package/dist/neutral/OpenTelemetryProviders.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +10 -0
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.mjs +375 -0
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/neutral/network/Status.d.ts +26 -0
- package/dist/neutral/network/Status.d.ts.map +1 -0
- package/dist/neutral/network/index.d.ts +2 -0
- package/dist/neutral/network/index.d.ts.map +1 -0
- package/dist/neutral/permissions/InvokerPermission.d.ts +53 -0
- package/dist/neutral/permissions/InvokerPermission.d.ts.map +1 -0
- package/dist/neutral/permissions/XyoPermissions.d.ts +33 -0
- package/dist/neutral/permissions/XyoPermissions.d.ts.map +1 -0
- package/dist/neutral/permissions/index.d.ts +3 -0
- package/dist/neutral/permissions/index.d.ts.map +1 -0
- package/dist/neutral/providers/DataLake/Provider.d.ts +10 -0
- package/dist/neutral/providers/DataLake/Provider.d.ts.map +1 -0
- package/dist/neutral/providers/DataLake/Runner.d.ts +15 -0
- package/dist/neutral/providers/DataLake/Runner.d.ts.map +1 -0
- package/dist/neutral/providers/DataLake/Viewer.d.ts +14 -0
- package/dist/neutral/providers/DataLake/Viewer.d.ts.map +1 -0
- package/dist/neutral/providers/DataLake/index.d.ts +4 -0
- package/dist/neutral/providers/DataLake/index.d.ts.map +1 -0
- package/dist/neutral/providers/TransactionHelper.d.ts +9 -0
- package/dist/neutral/providers/TransactionHelper.d.ts.map +1 -0
- package/dist/neutral/providers/XyoClient.d.ts +23 -0
- package/dist/neutral/providers/XyoClient.d.ts.map +1 -0
- package/dist/neutral/providers/XyoConnection.d.ts +18 -0
- package/dist/neutral/providers/XyoConnection.d.ts.map +1 -0
- package/dist/neutral/providers/XyoGateway.d.ts +20 -0
- package/dist/neutral/providers/XyoGateway.d.ts.map +1 -0
- package/dist/neutral/providers/XyoGatewayRunner.d.ts +50 -0
- package/dist/neutral/providers/XyoGatewayRunner.d.ts.map +1 -0
- package/dist/neutral/providers/XyoNetwork.d.ts +7 -0
- package/dist/neutral/providers/XyoNetwork.d.ts.map +1 -0
- package/dist/neutral/providers/XyoRunner.d.ts +16 -0
- package/dist/neutral/providers/XyoRunner.d.ts.map +1 -0
- package/dist/neutral/providers/index.d.ts +9 -0
- package/dist/neutral/providers/index.d.ts.map +1 -0
- package/dist/neutral/providers/signer/XyoSigner.d.ts +21 -0
- package/dist/neutral/providers/signer/XyoSigner.d.ts.map +1 -0
- package/dist/neutral/providers/signer/index.d.ts +2 -0
- package/dist/neutral/providers/signer/index.d.ts.map +1 -0
- package/dist/neutral/repository/Repository.d.ts +27 -0
- package/dist/neutral/repository/Repository.d.ts.map +1 -0
- package/dist/neutral/repository/TransactionReadRepository.d.ts +6 -0
- package/dist/neutral/repository/TransactionReadRepository.d.ts.map +1 -0
- package/dist/neutral/repository/TransactionRepository.d.ts +13 -0
- package/dist/neutral/repository/TransactionRepository.d.ts.map +1 -0
- package/dist/neutral/repository/TransactionRepositoryIterator.d.ts +6 -0
- package/dist/neutral/repository/TransactionRepositoryIterator.d.ts.map +1 -0
- package/dist/neutral/repository/TransactionWriteRepository.d.ts +6 -0
- package/dist/neutral/repository/TransactionWriteRepository.d.ts.map +1 -0
- package/dist/neutral/repository/index.d.ts +6 -0
- package/dist/neutral/repository/index.d.ts.map +1 -0
- package/dist/neutral/runners/Block.d.ts +16 -0
- package/dist/neutral/runners/Block.d.ts.map +1 -0
- package/dist/neutral/runners/Finalization.d.ts +15 -0
- package/dist/neutral/runners/Finalization.d.ts.map +1 -0
- package/dist/neutral/runners/Mempool.d.ts +25 -0
- package/dist/neutral/runners/Mempool.d.ts.map +1 -0
- package/dist/neutral/runners/index.d.ts +4 -0
- package/dist/neutral/runners/index.d.ts.map +1 -0
- package/dist/neutral/validation/block/BlockValidationFunction.d.ts +6 -0
- package/dist/neutral/validation/block/BlockValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +19 -0
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +14 -0
- package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/block/error.d.ts +21 -0
- package/dist/neutral/validation/block/error.d.ts.map +1 -0
- package/dist/neutral/validation/block/index.d.ts +5 -0
- package/dist/neutral/validation/block/index.d.ts.map +1 -0
- package/dist/neutral/validation/boundwitness/BoundWitnessValidationFunction.d.ts +6 -0
- package/dist/neutral/validation/boundwitness/BoundWitnessValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts +8 -0
- package/dist/neutral/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/boundwitness/error.d.ts +13 -0
- package/dist/neutral/validation/boundwitness/error.d.ts.map +1 -0
- package/dist/neutral/validation/boundwitness/index.d.ts +4 -0
- package/dist/neutral/validation/boundwitness/index.d.ts.map +1 -0
- package/dist/neutral/validation/error.d.ts +11 -0
- package/dist/neutral/validation/error.d.ts.map +1 -0
- package/dist/neutral/validation/index.d.ts +6 -0
- package/dist/neutral/validation/index.d.ts.map +1 -0
- package/dist/neutral/validation/payload/InBlockPayloadValidationFunction.d.ts +10 -0
- package/dist/neutral/validation/payload/InBlockPayloadValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/payload/error.d.ts +12 -0
- package/dist/neutral/validation/payload/error.d.ts.map +1 -0
- package/dist/neutral/validation/payload/index.d.ts +3 -0
- package/dist/neutral/validation/payload/index.d.ts.map +1 -0
- package/dist/neutral/validation/transaction/HydratedTransactionStateValidationFunction.d.ts +18 -0
- package/dist/neutral/validation/transaction/HydratedTransactionStateValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/transaction/HydratedTransactionValidationFunction.d.ts +16 -0
- package/dist/neutral/validation/transaction/HydratedTransactionValidationFunction.d.ts.map +1 -0
- package/dist/neutral/validation/transaction/error.d.ts +8 -0
- package/dist/neutral/validation/transaction/error.d.ts.map +1 -0
- package/dist/neutral/validation/transaction/index.d.ts +4 -0
- package/dist/neutral/validation/transaction/index.d.ts.map +1 -0
- package/dist/neutral/viewers/Block.d.ts +29 -0
- package/dist/neutral/viewers/Block.d.ts.map +1 -0
- package/dist/neutral/viewers/BlockInvalidation.d.ts +68 -0
- package/dist/neutral/viewers/BlockInvalidation.d.ts.map +1 -0
- package/dist/neutral/viewers/BlockReward.d.ts +14 -0
- package/dist/neutral/viewers/BlockReward.d.ts.map +1 -0
- package/dist/neutral/viewers/BlockValidation.d.ts +68 -0
- package/dist/neutral/viewers/BlockValidation.d.ts.map +1 -0
- package/dist/neutral/viewers/ChainContract.d.ts +22 -0
- package/dist/neutral/viewers/ChainContract.d.ts.map +1 -0
- package/dist/neutral/viewers/ChainStakeViewer.d.ts +11 -0
- package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/Finalization.d.ts +18 -0
- package/dist/neutral/viewers/Finalization.d.ts.map +1 -0
- package/dist/neutral/viewers/Fork.d.ts +9 -0
- package/dist/neutral/viewers/Fork.d.ts.map +1 -0
- package/dist/neutral/viewers/Mempool.d.ts +31 -0
- package/dist/neutral/viewers/Mempool.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/NetworkStakeViewer.d.ts +17 -0
- package/dist/neutral/viewers/NetworkStake/NetworkStakeViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByPositionViewer.d.ts +14 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByPositionViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByStakerViewer.d.ts +15 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByStakerViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByStepViewer.d.ts +14 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/ByStepViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/Options.d.ts +19 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/Options.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/TotalViewer.d.ts +14 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/TotalViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/Viewer.d.ts +20 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/Viewer.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/index.d.ts +8 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/index.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.d.ts +6 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/MethodsTemplate.d.ts +10 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/MethodsTemplate.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/index.d.ts +3 -0
- package/dist/neutral/viewers/NetworkStake/Rewards/templates/index.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStake/index.d.ts +3 -0
- package/dist/neutral/viewers/NetworkStake/index.d.ts.map +1 -0
- package/dist/neutral/viewers/NetworkStakeStepReward.d.ts +40 -0
- package/dist/neutral/viewers/NetworkStakeStepReward.d.ts.map +1 -0
- package/dist/neutral/viewers/Stake.d.ts +38 -0
- package/dist/neutral/viewers/Stake.d.ts.map +1 -0
- package/dist/neutral/viewers/StakeEvents.d.ts +44 -0
- package/dist/neutral/viewers/StakeEvents.d.ts.map +1 -0
- package/dist/neutral/viewers/StakeIntent.d.ts +15 -0
- package/dist/neutral/viewers/StakeIntent.d.ts.map +1 -0
- package/dist/neutral/viewers/StakeTotals.d.ts +20 -0
- package/dist/neutral/viewers/StakeTotals.d.ts.map +1 -0
- package/dist/neutral/viewers/StepStake.d.ts +14 -0
- package/dist/neutral/viewers/StepStake.d.ts.map +1 -0
- package/dist/neutral/viewers/StepViewer.d.ts +37 -0
- package/dist/neutral/viewers/StepViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/TimeSync.d.ts +21 -0
- package/dist/neutral/viewers/TimeSync.d.ts.map +1 -0
- package/dist/neutral/viewers/Transaction.d.ts +22 -0
- package/dist/neutral/viewers/Transaction.d.ts.map +1 -0
- package/dist/neutral/viewers/TransactionInvalidation.d.ts +66 -0
- package/dist/neutral/viewers/TransactionInvalidation.d.ts.map +1 -0
- package/dist/neutral/viewers/TransactionValidation.d.ts +67 -0
- package/dist/neutral/viewers/TransactionValidation.d.ts.map +1 -0
- package/dist/neutral/viewers/TransferBalance.d.ts +30 -0
- package/dist/neutral/viewers/TransferBalance.d.ts.map +1 -0
- package/dist/neutral/viewers/WindowedBlock.d.ts +18 -0
- package/dist/neutral/viewers/WindowedBlock.d.ts.map +1 -0
- package/dist/neutral/viewers/XyoViewer.d.ts +55 -0
- package/dist/neutral/viewers/XyoViewer.d.ts.map +1 -0
- package/dist/neutral/viewers/index.d.ts +24 -0
- package/dist/neutral/viewers/index.d.ts.map +1 -0
- package/package.json +73 -0
- package/src/OpenTelemetryProviders.ts +7 -0
- package/src/index.ts +9 -0
- package/src/network/Status.ts +30 -0
- package/src/network/index.ts +1 -0
- package/src/permissions/InvokerPermission.ts +58 -0
- package/src/permissions/XyoPermissions.ts +41 -0
- package/src/permissions/index.ts +2 -0
- package/src/providers/DataLake/Provider.ts +11 -0
- package/src/providers/DataLake/Runner.ts +16 -0
- package/src/providers/DataLake/Viewer.ts +16 -0
- package/src/providers/DataLake/index.ts +3 -0
- package/src/providers/TransactionHelper.ts +15 -0
- package/src/providers/XyoClient.ts +27 -0
- package/src/providers/XyoConnection.ts +20 -0
- package/src/providers/XyoGateway.ts +24 -0
- package/src/providers/XyoGatewayRunner.ts +72 -0
- package/src/providers/XyoNetwork.ts +8 -0
- package/src/providers/XyoRunner.ts +19 -0
- package/src/providers/index.ts +8 -0
- package/src/providers/signer/XyoSigner.ts +36 -0
- package/src/providers/signer/index.ts +1 -0
- package/src/repository/Repository.ts +32 -0
- package/src/repository/TransactionReadRepository.ts +6 -0
- package/src/repository/TransactionRepository.ts +12 -0
- package/src/repository/TransactionRepositoryIterator.ts +6 -0
- package/src/repository/TransactionWriteRepository.ts +6 -0
- package/src/repository/index.ts +5 -0
- package/src/runners/Block.ts +21 -0
- package/src/runners/Finalization.ts +17 -0
- package/src/runners/Mempool.ts +31 -0
- package/src/runners/index.ts +3 -0
- package/src/validation/block/BlockValidationFunction.ts +13 -0
- package/src/validation/block/HydratedBlockStateValidationFunction.ts +29 -0
- package/src/validation/block/HydratedBlockValidationFunction.ts +21 -0
- package/src/validation/block/error.ts +51 -0
- package/src/validation/block/index.ts +4 -0
- package/src/validation/boundwitness/BoundWitnessValidationFunction.ts +9 -0
- package/src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts +15 -0
- package/src/validation/boundwitness/error.ts +29 -0
- package/src/validation/boundwitness/index.ts +3 -0
- package/src/validation/error.ts +25 -0
- package/src/validation/index.ts +5 -0
- package/src/validation/payload/InBlockPayloadValidationFunction.ts +16 -0
- package/src/validation/payload/error.ts +24 -0
- package/src/validation/payload/index.ts +2 -0
- package/src/validation/transaction/HydratedTransactionStateValidationFunction.ts +27 -0
- package/src/validation/transaction/HydratedTransactionValidationFunction.ts +23 -0
- package/src/validation/transaction/error.ts +16 -0
- package/src/validation/transaction/index.ts +3 -0
- package/src/viewers/Block.ts +40 -0
- package/src/viewers/BlockInvalidation.ts +81 -0
- package/src/viewers/BlockReward.ts +18 -0
- package/src/viewers/BlockValidation.ts +81 -0
- package/src/viewers/ChainContract.ts +28 -0
- package/src/viewers/ChainStakeViewer.ts +15 -0
- package/src/viewers/Finalization.ts +22 -0
- package/src/viewers/Fork.ts +10 -0
- package/src/viewers/Mempool.ts +40 -0
- package/src/viewers/NetworkStake/NetworkStakeViewer.ts +20 -0
- package/src/viewers/NetworkStake/Rewards/ByPositionViewer.ts +19 -0
- package/src/viewers/NetworkStake/Rewards/ByStakerViewer.ts +20 -0
- package/src/viewers/NetworkStake/Rewards/ByStepViewer.ts +18 -0
- package/src/viewers/NetworkStake/Rewards/Options.ts +22 -0
- package/src/viewers/NetworkStake/Rewards/TotalViewer.ts +17 -0
- package/src/viewers/NetworkStake/Rewards/Viewer.ts +22 -0
- package/src/viewers/NetworkStake/Rewards/index.ts +7 -0
- package/src/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.ts +7 -0
- package/src/viewers/NetworkStake/Rewards/templates/MethodsTemplate.ts +10 -0
- package/src/viewers/NetworkStake/Rewards/templates/index.ts +2 -0
- package/src/viewers/NetworkStake/index.ts +4 -0
- package/src/viewers/NetworkStakeStepReward.ts +82 -0
- package/src/viewers/Stake.ts +44 -0
- package/src/viewers/StakeEvents.ts +54 -0
- package/src/viewers/StakeIntent.ts +21 -0
- package/src/viewers/StakeTotals.ts +21 -0
- package/src/viewers/StepStake.ts +26 -0
- package/src/viewers/StepViewer.ts +57 -0
- package/src/viewers/TimeSync.ts +27 -0
- package/src/viewers/Transaction.ts +27 -0
- package/src/viewers/TransactionInvalidation.ts +71 -0
- package/src/viewers/TransactionValidation.ts +72 -0
- package/src/viewers/TransferBalance.ts +35 -0
- package/src/viewers/WindowedBlock.ts +23 -0
- package/src/viewers/XyoViewer.ts +73 -0
- package/src/viewers/index.ts +23 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
BaseContext, ChainId, HydratedBlockWithHashMeta, XL1BlockNumber,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
|
|
6
|
+
import type { HydratedBlockValidationError } from './error.ts'
|
|
7
|
+
|
|
8
|
+
/** Context for HydratedBlockValidationFunction operations. */
|
|
9
|
+
export interface HydratedBlockValidationFunctionContext extends BaseContext {}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A function that validates a hydrated block.
|
|
13
|
+
* @param hydratedBlock The hydrated block to validate.
|
|
14
|
+
* @param chainIdAtBlockNumber A function to get the chain ID at a specific block number.
|
|
15
|
+
* @returns An array of errors if the block is invalid, or an empty array if it is valid.
|
|
16
|
+
*/
|
|
17
|
+
export type HydratedBlockValidationFunction = (
|
|
18
|
+
context: HydratedBlockValidationFunctionContext,
|
|
19
|
+
hydratedBlock: HydratedBlockWithHashMeta,
|
|
20
|
+
chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
|
|
21
|
+
) => Promisable<HydratedBlockValidationError[]>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Hash } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
BlockBoundWitness, ChainId, HydratedBlock,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
|
|
6
|
+
import { isValidationError, ValidationError } from '../error.ts'
|
|
7
|
+
|
|
8
|
+
/** Error thrown during Blockvalidation operations. */
|
|
9
|
+
export class BlockValidationError extends ValidationError<BlockBoundWitness> {}
|
|
10
|
+
|
|
11
|
+
/** Type guard that checks if a value is a valid BlockValidationError. */
|
|
12
|
+
export const isBlockValidationError = (
|
|
13
|
+
error: unknown,
|
|
14
|
+
): error is BlockValidationError => {
|
|
15
|
+
if (!isValidationError(error)) return false
|
|
16
|
+
return (
|
|
17
|
+
error.name === BlockValidationError.constructor.name
|
|
18
|
+
)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Error thrown during HydratedBlockvalidation operations. */
|
|
22
|
+
export class HydratedBlockValidationError extends ValidationError<HydratedBlock> {}
|
|
23
|
+
|
|
24
|
+
/** Type guard that checks if a value is a valid HydratedBlockValidationError. */
|
|
25
|
+
export const isHydratedBlockValidationError = (
|
|
26
|
+
error: unknown,
|
|
27
|
+
): error is HydratedBlockValidationError => {
|
|
28
|
+
if (!isValidationError(error)) return false
|
|
29
|
+
return (
|
|
30
|
+
error.name === HydratedBlockValidationError.constructor.name
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Error thrown during HydratedBlockStatevalidation operations. */
|
|
35
|
+
export class HydratedBlockStateValidationError extends ValidationError<HydratedBlock> {
|
|
36
|
+
chainId: ChainId
|
|
37
|
+
constructor(hash: Hash, chainId: ChainId, value: HydratedBlock, message?: string, cause?: unknown) {
|
|
38
|
+
super(hash, value, message, cause)
|
|
39
|
+
this.chainId = chainId
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Type guard that checks if a value is a valid HydratedBlockStateValidationError. */
|
|
44
|
+
export const isHydratedBlockStateValidationError = (
|
|
45
|
+
error: unknown,
|
|
46
|
+
): error is HydratedBlockStateValidationError => {
|
|
47
|
+
if (!isValidationError(error)) return false
|
|
48
|
+
return (
|
|
49
|
+
error.name === HydratedBlockStateValidationError.constructor.name
|
|
50
|
+
)
|
|
51
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { BoundWitness } from '@xyo-network/sdk-js'
|
|
3
|
+
|
|
4
|
+
import type { BoundWitnessValidationError } from './error.ts'
|
|
5
|
+
|
|
6
|
+
/** Function type for BoundWitnessValidation operations. */
|
|
7
|
+
export type BoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (
|
|
8
|
+
bw: T,
|
|
9
|
+
) => Promisable<BoundWitnessValidationError[]>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
BoundWitness, Payload, WithHashMeta,
|
|
4
|
+
} from '@xyo-network/sdk-js'
|
|
5
|
+
|
|
6
|
+
import type { HydratedBoundWitnessValidationError } from './error.ts'
|
|
7
|
+
|
|
8
|
+
/** Type representing a hydrated BoundWitnessWithHashMeta with resolved payloads. */
|
|
9
|
+
export type HydratedBoundWitnessWithHashMeta<T extends BoundWitness = BoundWitness, P extends Payload = Payload>
|
|
10
|
+
= [WithHashMeta<T>, WithHashMeta<P>[]]
|
|
11
|
+
|
|
12
|
+
/** Type representing a hydrated BoundWitnessValidationFunction with resolved payloads. */
|
|
13
|
+
export type HydratedBoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (
|
|
14
|
+
bw: HydratedBoundWitnessWithHashMeta<T>,
|
|
15
|
+
) => Promisable<HydratedBoundWitnessValidationError[]>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { BoundWitness, HydratedBoundWitness } from '@xyo-network/sdk-js'
|
|
2
|
+
|
|
3
|
+
import { isValidationError, ValidationError } from '../error.ts'
|
|
4
|
+
|
|
5
|
+
/** Error thrown during BoundWitnessvalidation operations. */
|
|
6
|
+
export class BoundWitnessValidationError extends ValidationError<BoundWitness> {}
|
|
7
|
+
|
|
8
|
+
/** Type guard that checks if a value is a valid BoundWitnessValidationError. */
|
|
9
|
+
export const isBoundWitnessValidationError = (
|
|
10
|
+
error: unknown,
|
|
11
|
+
): error is BoundWitnessValidationError => {
|
|
12
|
+
if (!isValidationError(error)) return false
|
|
13
|
+
return (
|
|
14
|
+
error.name === BoundWitnessValidationError.constructor.name
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Error thrown during HydratedBoundWitnessvalidation operations. */
|
|
19
|
+
export class HydratedBoundWitnessValidationError extends ValidationError<HydratedBoundWitness> {}
|
|
20
|
+
|
|
21
|
+
/** Type guard that checks if a value is a valid HydratedBoundWitnessValidationError. */
|
|
22
|
+
export const isHydratedBoundWitnessValidationError = (
|
|
23
|
+
error: unknown,
|
|
24
|
+
): error is HydratedBoundWitnessValidationError => {
|
|
25
|
+
if (!isValidationError(error)) return false
|
|
26
|
+
return (
|
|
27
|
+
error.name === HydratedBoundWitnessValidationError.constructor.name
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Hash, isHash } from '@xylabs/sdk-js'
|
|
2
|
+
import { isError } from '@xylabs/sdk-js'
|
|
3
|
+
import type { Payload } from '@xyo-network/sdk-js'
|
|
4
|
+
|
|
5
|
+
/** Error thrown during validation operations. */
|
|
6
|
+
export class ValidationError<TValue = Payload> extends Error {
|
|
7
|
+
hash: Hash
|
|
8
|
+
value: TValue
|
|
9
|
+
constructor(hash: Hash, value: TValue, message?: string, cause?: unknown) {
|
|
10
|
+
super(message)
|
|
11
|
+
this.hash = hash
|
|
12
|
+
this.name = this.constructor.name
|
|
13
|
+
this.value = value
|
|
14
|
+
this.cause = cause
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Type guard that checks if a value is a valid ValidationError. */
|
|
19
|
+
export const isValidationError = <TValue = Payload>(
|
|
20
|
+
error: unknown,
|
|
21
|
+
): error is ValidationError<TValue> => {
|
|
22
|
+
return (
|
|
23
|
+
isError(error) && isHash((error as ValidationError<TValue>)?.hash) && (error as ValidationError<TValue>)?.value !== undefined
|
|
24
|
+
)
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
|
|
3
|
+
import type { BaseContext, HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-model'
|
|
4
|
+
|
|
5
|
+
import type { InBlockPayloadValidationError } from './error.ts'
|
|
6
|
+
|
|
7
|
+
/** Context for InBlockPayloadValidationFunction operations. */
|
|
8
|
+
export interface InBlockPayloadValidationFunctionContext extends BaseContext {
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Function type for InBlockPayloadValidation operations. */
|
|
13
|
+
export type InBlockPayloadValidationFunction = (
|
|
14
|
+
context: InBlockPayloadValidationFunctionContext,
|
|
15
|
+
payload: WithHashMeta<Payload>, block: HydratedBlockWithHashMeta,
|
|
16
|
+
) => Promisable<InBlockPayloadValidationError[]>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Hash } from '@xylabs/sdk-js'
|
|
2
|
+
import { type Payload } from '@xyo-network/sdk-js'
|
|
3
|
+
import type { HydratedBlock } from '@xyo-network/xl1-protocol-model'
|
|
4
|
+
|
|
5
|
+
import { isValidationError, ValidationError } from '../error.ts'
|
|
6
|
+
|
|
7
|
+
/** Error thrown during InBlockPayloadvalidation operations. */
|
|
8
|
+
export class InBlockPayloadValidationError extends ValidationError<Payload> {
|
|
9
|
+
block: HydratedBlock
|
|
10
|
+
constructor(hash: Hash, block: HydratedBlock, value: Payload, message?: string, cause?: unknown) {
|
|
11
|
+
super(hash, value, message, cause)
|
|
12
|
+
this.block = block
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Type guard that checks if a value is a valid InBlockPayloadValidationError. */
|
|
17
|
+
export const isInBlockPayloadValidationError = (
|
|
18
|
+
error: unknown,
|
|
19
|
+
): error is InBlockPayloadValidationError => {
|
|
20
|
+
if (!isValidationError(error)) return false
|
|
21
|
+
return (
|
|
22
|
+
error.name === InBlockPayloadValidationError.constructor.name
|
|
23
|
+
)
|
|
24
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
AccountBalanceViewer,
|
|
4
|
+
BaseContext, ChainId,
|
|
5
|
+
HydratedTransactionWithHashMeta,
|
|
6
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
7
|
+
|
|
8
|
+
import type { BlockViewer } from '../../viewers/index.ts'
|
|
9
|
+
import type { HydratedTransactionValidationError } from './error.ts'
|
|
10
|
+
|
|
11
|
+
/** Context for HydratedTransactionStateValidationFunction operations. */
|
|
12
|
+
export interface HydratedTransactionStateValidationFunctionContext extends BaseContext {
|
|
13
|
+
accountBalanceViewer: AccountBalanceViewer
|
|
14
|
+
blockViewer: BlockViewer
|
|
15
|
+
chainId: ChainId
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A function that validates a hydrated transaction against chain state.
|
|
20
|
+
* @param context The context to use for validation.
|
|
21
|
+
* @param hydratedTransaction The hydrated transaction to validate.
|
|
22
|
+
* @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
|
|
23
|
+
*/
|
|
24
|
+
export type HydratedTransactionStateValidationFunction = (
|
|
25
|
+
context: HydratedTransactionStateValidationFunctionContext,
|
|
26
|
+
hydratedTransaction: HydratedTransactionWithHashMeta,
|
|
27
|
+
) => Promisable<HydratedTransactionValidationError[]>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
BaseContext, ChainId, HydratedTransactionWithHashMeta, StepIdentity,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
|
|
6
|
+
import type { HydratedTransactionValidationError } from './error.ts'
|
|
7
|
+
|
|
8
|
+
/** Context for HydratedTransactionValidationFunction operations. */
|
|
9
|
+
export interface HydratedTransactionValidationFunctionContext extends BaseContext {
|
|
10
|
+
chainId: ChainId
|
|
11
|
+
step?: StepIdentity
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A function that validates a hydrated transaction.
|
|
16
|
+
* @param bw The hydrated transaction to validate.
|
|
17
|
+
* @param context The context to use for validation.
|
|
18
|
+
* @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
|
|
19
|
+
*/
|
|
20
|
+
export type HydratedTransactionValidationFunction<TContext extends HydratedTransactionValidationFunctionContext = HydratedTransactionValidationFunctionContext> = (
|
|
21
|
+
context: TContext,
|
|
22
|
+
hydratedTransaction: HydratedTransactionWithHashMeta,
|
|
23
|
+
) => Promisable<HydratedTransactionValidationError[]>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HydratedTransaction } from '@xyo-network/xl1-protocol-model'
|
|
2
|
+
|
|
3
|
+
import { isValidationError, ValidationError } from '../error.ts'
|
|
4
|
+
|
|
5
|
+
/** Error thrown during HydratedTransactionvalidation operations. */
|
|
6
|
+
export class HydratedTransactionValidationError extends ValidationError<HydratedTransaction> {}
|
|
7
|
+
|
|
8
|
+
/** Type guard that checks if a value is a valid HydratedTransactionValidationError. */
|
|
9
|
+
export const isHydratedTransactionValidationError = (
|
|
10
|
+
error: unknown,
|
|
11
|
+
): error is HydratedTransactionValidationError => {
|
|
12
|
+
if (!isValidationError(error)) return false
|
|
13
|
+
return (
|
|
14
|
+
error.name === HydratedTransactionValidationError.constructor.name
|
|
15
|
+
)
|
|
16
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
|
|
3
|
+
import type {
|
|
4
|
+
BlockRate, ChainId,
|
|
5
|
+
Provider, ProviderMoniker, SignedHydratedBlockWithHashMeta, SingleTimeConfig, TimeDurations, XL1BlockNumber, XL1BlockRange,
|
|
6
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
7
|
+
|
|
8
|
+
/** BlockViewerMethods interface. */
|
|
9
|
+
export interface BlockViewerMethods {
|
|
10
|
+
blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
|
|
11
|
+
blocksByNumber(block: XL1BlockNumber, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
|
|
12
|
+
currentBlock(): Promisable<SignedHydratedBlockWithHashMeta>
|
|
13
|
+
payloadsByHash(hashes: Hash[]): Promisable<WithHashMeta<Payload>[]>
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Moniker identifier for the BlockViewer provider. */
|
|
17
|
+
export const BlockViewerMoniker = 'BlockViewer' as const
|
|
18
|
+
/** Type literal for the BlockViewer provider moniker. */
|
|
19
|
+
export type BlockViewerMoniker = typeof BlockViewerMoniker
|
|
20
|
+
|
|
21
|
+
/** Viewer interface for reading Block data. */
|
|
22
|
+
export interface BlockViewer<TMoniker extends ProviderMoniker = BlockViewerMoniker> extends BlockViewerMethods, Provider<TMoniker> {
|
|
23
|
+
blockByHash(hash: Hash): Promisable<SignedHydratedBlockWithHashMeta | null>
|
|
24
|
+
blockByNumber(block: XL1BlockNumber): Promisable<SignedHydratedBlockWithHashMeta | null>
|
|
25
|
+
chainId(): Promisable<ChainId>
|
|
26
|
+
chainId(blockNumber: XL1BlockNumber): Promisable<ChainId>
|
|
27
|
+
chainId(blockNumber: 'latest'): Promisable<ChainId>
|
|
28
|
+
currentBlockHash(): Promisable<Hash>
|
|
29
|
+
currentBlockNumber(): Promisable<XL1BlockNumber>
|
|
30
|
+
payloadByHash(hash: Hash): Promisable<WithHashMeta<Payload> | null>
|
|
31
|
+
rate(range: XL1BlockRange, timeUnit?: keyof TimeDurations): Promisable<BlockRate>
|
|
32
|
+
stepSizeRate(start: XL1BlockNumber, stepIndex: number, count?: number, timeUnit?: keyof TimeDurations): Promisable<BlockRate>
|
|
33
|
+
timeDurationRate(
|
|
34
|
+
timeConfig: SingleTimeConfig,
|
|
35
|
+
startBlockNumber?: XL1BlockNumber,
|
|
36
|
+
timeUnit?: keyof TimeDurations,
|
|
37
|
+
toleranceMs?: number,
|
|
38
|
+
maxAttempts?: number,
|
|
39
|
+
): Promisable<BlockRate>
|
|
40
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import { zodIsFactory } from '@xylabs/sdk-js'
|
|
3
|
+
import type {
|
|
4
|
+
Provider, SignedHydratedBlock, SignedHydratedBlockWithHashMeta,
|
|
5
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
6
|
+
import {
|
|
7
|
+
ChainQualificationZod, ChainQualifiedHeadConfigZod, ChainQualifiedRangeConfigZod,
|
|
8
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
9
|
+
import { z } from 'zod'
|
|
10
|
+
|
|
11
|
+
import type { HydratedBlockValidationError } from '../validation/index.ts'
|
|
12
|
+
|
|
13
|
+
/** BlockInvalidationQualificationZod constant. */
|
|
14
|
+
export const BlockInvalidationQualificationZod = ChainQualificationZod
|
|
15
|
+
/** BlockInvalidationQualification type. */
|
|
16
|
+
export type BlockInvalidationQualification = z.infer<typeof BlockInvalidationQualificationZod>
|
|
17
|
+
/** Type guard that checks if a value is a valid BlockInvalidationQualification. */
|
|
18
|
+
export const isBlockInvalidationQualification = zodIsFactory(BlockInvalidationQualificationZod)
|
|
19
|
+
|
|
20
|
+
/** BlockInvalidationConfigFieldsZod constant. */
|
|
21
|
+
export const BlockInvalidationConfigFieldsZod = z.object({
|
|
22
|
+
state: z.boolean().optional(),
|
|
23
|
+
value: z.boolean().optional(),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
/** BlockInvalidationConfigZod constant. */
|
|
27
|
+
export const BlockInvalidationConfigZod = z.union([
|
|
28
|
+
BlockInvalidationConfigFieldsZod.extend(ChainQualifiedHeadConfigZod.shape),
|
|
29
|
+
BlockInvalidationConfigFieldsZod.extend(ChainQualifiedRangeConfigZod.shape),
|
|
30
|
+
BlockInvalidationConfigFieldsZod,
|
|
31
|
+
z.object({}),
|
|
32
|
+
])
|
|
33
|
+
|
|
34
|
+
/** BlockInvalidationConfig type. */
|
|
35
|
+
export type BlockInvalidationConfig = z.infer<typeof BlockInvalidationConfigZod>
|
|
36
|
+
/** Type guard that checks if a value is a valid BlockInvalidationConfig. */
|
|
37
|
+
export const isBlockInvalidationConfig = zodIsFactory(BlockInvalidationConfigZod)
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Checks if blocks are invalid (impossible to ever become valid) according to protocol rules.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
export interface BlockInvalidationViewerMethods {
|
|
44
|
+
qualifiedInvalidateBlocks(
|
|
45
|
+
blocks: SignedHydratedBlock[],
|
|
46
|
+
config?: BlockInvalidationConfig
|
|
47
|
+
): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]>
|
|
48
|
+
|
|
49
|
+
qualifiedInvalidateUncle(
|
|
50
|
+
blocks: SignedHydratedBlock[],
|
|
51
|
+
config?: BlockInvalidationConfig
|
|
52
|
+
): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]>
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Moniker identifier for the BlockInvalidationViewer provider. */
|
|
56
|
+
export const BlockInvalidationViewerMoniker = 'BlockInvalidationViewer' as const
|
|
57
|
+
/** Type literal for the BlockInvalidationViewer provider moniker. */
|
|
58
|
+
export type BlockInvalidationViewerMoniker = typeof BlockInvalidationViewerMoniker
|
|
59
|
+
|
|
60
|
+
/** Viewer interface for reading BlockInvalidation data. */
|
|
61
|
+
export interface BlockInvalidationViewer extends BlockInvalidationViewerMethods, Provider<BlockInvalidationViewerMoniker> {
|
|
62
|
+
invalidateBlock(
|
|
63
|
+
block: SignedHydratedBlock,
|
|
64
|
+
config?: BlockInvalidationConfig
|
|
65
|
+
): Promisable<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>
|
|
66
|
+
|
|
67
|
+
invalidateBlocks(
|
|
68
|
+
blocks: SignedHydratedBlock[],
|
|
69
|
+
config?: BlockInvalidationConfig
|
|
70
|
+
): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
|
|
71
|
+
|
|
72
|
+
invalidateUncle(
|
|
73
|
+
blocks: SignedHydratedBlock[],
|
|
74
|
+
config?: BlockInvalidationConfig
|
|
75
|
+
): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
|
|
76
|
+
|
|
77
|
+
qualifiedInvalidateBlock(
|
|
78
|
+
block: SignedHydratedBlock,
|
|
79
|
+
config?: BlockInvalidationConfig
|
|
80
|
+
): Promisable<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockInvalidationQualification]>
|
|
81
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
AttoXL1, Provider, XL1BlockNumber,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
|
|
6
|
+
/** BlockRewardViewerMethods interface. */
|
|
7
|
+
export interface BlockRewardViewerMethods {
|
|
8
|
+
// The amount of xl1 to send to the producer from the block reward
|
|
9
|
+
allowedRewardForBlock(block: XL1BlockNumber): Promisable<AttoXL1>
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Moniker identifier for the BlockRewardViewer provider. */
|
|
13
|
+
export const BlockRewardViewerMoniker = 'BlockRewardViewer' as const
|
|
14
|
+
/** Type literal for the BlockRewardViewer provider moniker. */
|
|
15
|
+
export type BlockRewardViewerMoniker = typeof BlockRewardViewerMoniker
|
|
16
|
+
|
|
17
|
+
/** Viewer interface for reading BlockReward data. */
|
|
18
|
+
export interface BlockRewardViewer extends BlockRewardViewerMethods, Provider<BlockRewardViewerMoniker> {}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import { zodIsFactory } from '@xylabs/sdk-js'
|
|
3
|
+
import type {
|
|
4
|
+
Provider, SignedHydratedBlock, SignedHydratedBlockWithHashMeta,
|
|
5
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
6
|
+
import {
|
|
7
|
+
ChainQualificationZod, ChainQualifiedHeadConfigZod, ChainQualifiedRangeConfigZod,
|
|
8
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
9
|
+
import { z } from 'zod'
|
|
10
|
+
|
|
11
|
+
import type { HydratedBlockValidationError } from '../validation/index.ts'
|
|
12
|
+
|
|
13
|
+
/** BlockValidationQualificationZod constant. */
|
|
14
|
+
export const BlockValidationQualificationZod = ChainQualificationZod
|
|
15
|
+
/** BlockValidationQualification type. */
|
|
16
|
+
export type BlockValidationQualification = z.infer<typeof BlockValidationQualificationZod>
|
|
17
|
+
/** Type guard that checks if a value is a valid BlockValidationQualification. */
|
|
18
|
+
export const isBlockValidationQualification = zodIsFactory(BlockValidationQualificationZod)
|
|
19
|
+
|
|
20
|
+
/** BlockValidationConfigFieldsZod constant. */
|
|
21
|
+
export const BlockValidationConfigFieldsZod = z.object({
|
|
22
|
+
value: z.boolean().optional(),
|
|
23
|
+
state: z.boolean().optional(),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
/** BlockValidationConfigZod constant. */
|
|
27
|
+
export const BlockValidationConfigZod = z.union([
|
|
28
|
+
BlockValidationConfigFieldsZod.extend(ChainQualifiedHeadConfigZod.shape),
|
|
29
|
+
BlockValidationConfigFieldsZod.extend(ChainQualifiedRangeConfigZod.shape),
|
|
30
|
+
BlockValidationConfigFieldsZod,
|
|
31
|
+
z.object({}),
|
|
32
|
+
])
|
|
33
|
+
|
|
34
|
+
/** BlockValidationConfig type. */
|
|
35
|
+
export type BlockValidationConfig = z.infer<typeof BlockValidationConfigZod>
|
|
36
|
+
/** Type guard that checks if a value is a valid BlockValidationConfig. */
|
|
37
|
+
export const isBlockValidationConfig = zodIsFactory(BlockValidationConfigZod)
|
|
38
|
+
|
|
39
|
+
/** BlockValidationViewerMethods interface. */
|
|
40
|
+
export interface BlockValidationViewerMethods {
|
|
41
|
+
qualifiedValidateBlocks(
|
|
42
|
+
blocks: SignedHydratedBlock[],
|
|
43
|
+
config?: BlockValidationConfig
|
|
44
|
+
): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]>
|
|
45
|
+
|
|
46
|
+
qualifiedValidateUncle(
|
|
47
|
+
blocks: SignedHydratedBlock[],
|
|
48
|
+
config?: BlockValidationConfig
|
|
49
|
+
): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]>
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Moniker identifier for the BlockValidationViewer provider. */
|
|
53
|
+
export const BlockValidationViewerMoniker = 'BlockValidationViewer' as const
|
|
54
|
+
/** Type literal for the BlockValidationViewer provider moniker. */
|
|
55
|
+
export type BlockValidationViewerMoniker = typeof BlockValidationViewerMoniker
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Checks if blocks are valid (currently valid) according to protocol rules. In the case that they are not valid, they may still become valid in the future.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
export interface BlockValidationViewer extends BlockValidationViewerMethods, Provider<BlockValidationViewerMoniker> {
|
|
62
|
+
qualifiedValidateBlock(
|
|
63
|
+
block: SignedHydratedBlock,
|
|
64
|
+
config?: BlockValidationConfig
|
|
65
|
+
): Promisable<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockValidationQualification]>
|
|
66
|
+
|
|
67
|
+
validateBlock(
|
|
68
|
+
block: SignedHydratedBlock,
|
|
69
|
+
config?: BlockValidationConfig
|
|
70
|
+
): Promisable<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>
|
|
71
|
+
|
|
72
|
+
validateBlocks(
|
|
73
|
+
blocks: SignedHydratedBlock[],
|
|
74
|
+
config?: BlockValidationConfig
|
|
75
|
+
): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
|
|
76
|
+
|
|
77
|
+
validateUncle(
|
|
78
|
+
blocks: SignedHydratedBlock[],
|
|
79
|
+
config?: BlockValidationConfig
|
|
80
|
+
): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
|
|
81
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Address, Hash, Promisable,
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
4
|
+
import type {
|
|
5
|
+
ChainId, Provider, XL1BlockNumber,
|
|
6
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
7
|
+
|
|
8
|
+
/** ChainContractViewerMethods interface. */
|
|
9
|
+
export interface ChainContractViewerMethods {
|
|
10
|
+
chainId(): Promisable<ChainId>
|
|
11
|
+
forkedAtBlockNumber(): Promisable<XL1BlockNumber | null>
|
|
12
|
+
forkedAtHash(): Promisable<Hash | null>
|
|
13
|
+
forkedChainId(): Promisable<ChainId | null>
|
|
14
|
+
minWithdrawalBlocks(): Promisable<number>
|
|
15
|
+
rewardsContract(): Promisable<Address>
|
|
16
|
+
stakingTokenAddress(): Promisable<Address>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Moniker identifier for the ChainContractViewer provider. */
|
|
20
|
+
export const ChainContractViewerMoniker = 'ChainContractViewer' as const
|
|
21
|
+
/** Type literal for the ChainContractViewer provider moniker. */
|
|
22
|
+
export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker
|
|
23
|
+
|
|
24
|
+
/** Viewer interface for reading ChainContract data. */
|
|
25
|
+
export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
|
|
26
|
+
chainIdAtBlockNumber(blockNumber: XL1BlockNumber | 'latest'): Promisable<ChainId>
|
|
27
|
+
forkedChainContractViewer(): Promisable<ChainContractViewer | null>
|
|
28
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Provider } from '@xyo-network/xl1-protocol-model'
|
|
2
|
+
|
|
3
|
+
import type { ChainContractViewer } from './ChainContract.ts'
|
|
4
|
+
import type { StakeTotalsViewer } from './StakeTotals.ts'
|
|
5
|
+
|
|
6
|
+
/** Moniker identifier for the ChainStakeViewer provider. */
|
|
7
|
+
export const ChainStakeViewerMoniker = 'ChainStakeViewer' as const
|
|
8
|
+
/** Type literal for the ChainStakeViewer provider moniker. */
|
|
9
|
+
export type ChainStakeViewerMoniker = typeof ChainStakeViewerMoniker
|
|
10
|
+
|
|
11
|
+
/** Viewer interface for reading ChainStake data. */
|
|
12
|
+
export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>,
|
|
13
|
+
Provider<ChainStakeViewerMoniker> {
|
|
14
|
+
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
ChainId, Provider, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
|
|
6
|
+
/** FinalizationViewerMethods interface. */
|
|
7
|
+
export interface FinalizationViewerMethods {
|
|
8
|
+
head(): Promisable<SignedHydratedBlockWithHashMeta>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Moniker identifier for the FinalizationViewer provider. */
|
|
12
|
+
export const FinalizationViewerMoniker = 'FinalizationViewer' as const
|
|
13
|
+
/** Type literal for the FinalizationViewer provider moniker. */
|
|
14
|
+
export type FinalizationViewerMoniker = typeof FinalizationViewerMoniker
|
|
15
|
+
|
|
16
|
+
/** Viewer interface for reading Finalization data. */
|
|
17
|
+
export interface FinalizationViewer extends FinalizationViewerMethods, Provider<FinalizationViewerMoniker> {
|
|
18
|
+
chainId(): Promisable<ChainId>
|
|
19
|
+
headBlock(): Promisable<SignedBlockBoundWitnessWithHashMeta>
|
|
20
|
+
headHash(): Promisable<Hash>
|
|
21
|
+
headNumber(): Promisable<XL1BlockNumber>
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { ChainId } from '@xyo-network/xl1-protocol-model'
|
|
3
|
+
|
|
4
|
+
/** ForkHistory type. */
|
|
5
|
+
export type ForkHistory = Record<number, ChainId>
|
|
6
|
+
|
|
7
|
+
/** ForkViewerMethods interface. */
|
|
8
|
+
export interface ForkViewerMethods {
|
|
9
|
+
forkHistory(): Promisable<ForkHistory>
|
|
10
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { HashZod } from '@xylabs/sdk-js'
|
|
2
|
+
import type {
|
|
3
|
+
Provider, SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta,
|
|
4
|
+
} from '@xyo-network/xl1-protocol-model'
|
|
5
|
+
import { XL1BlockRangeZod } from '@xyo-network/xl1-protocol-model'
|
|
6
|
+
import { z } from 'zod'
|
|
7
|
+
|
|
8
|
+
/** PendingTransactionsOptionsZod constant. */
|
|
9
|
+
export const PendingTransactionsOptionsZod = z.object({
|
|
10
|
+
cursor: HashZod.optional(),
|
|
11
|
+
limit: z.number().int().positive().optional(),
|
|
12
|
+
window: XL1BlockRangeZod.optional(),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
/** PendingTransactionsOptions type. */
|
|
16
|
+
export type PendingTransactionsOptions = z.infer<typeof PendingTransactionsOptionsZod>
|
|
17
|
+
|
|
18
|
+
/** PendingBlocksOptionsZod constant. */
|
|
19
|
+
export const PendingBlocksOptionsZod = z.object({
|
|
20
|
+
cursor: HashZod.optional(),
|
|
21
|
+
limit: z.number().int().positive().optional(),
|
|
22
|
+
window: XL1BlockRangeZod.optional(),
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
/** PendingBlocksOptions type. */
|
|
26
|
+
export type PendingBlocksOptions = z.infer<typeof PendingBlocksOptionsZod>
|
|
27
|
+
|
|
28
|
+
/** MempoolViewerMethods interface. */
|
|
29
|
+
export interface MempoolViewerMethods {
|
|
30
|
+
pendingBlocks(options?: PendingBlocksOptions): Promise<SignedHydratedBlockWithHashMeta[]>
|
|
31
|
+
pendingTransactions(options?: PendingTransactionsOptions): Promise<SignedHydratedTransactionWithHashMeta[]>
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Moniker identifier for the MempoolViewer provider. */
|
|
35
|
+
export const MempoolViewerMoniker = 'MempoolViewer' as const
|
|
36
|
+
/** Type literal for the MempoolViewer provider moniker. */
|
|
37
|
+
export type MempoolViewerMoniker = typeof MempoolViewerMoniker
|
|
38
|
+
|
|
39
|
+
/** Viewer interface for reading Mempool data. */
|
|
40
|
+
export interface MempoolViewer extends MempoolViewerMethods, Provider<MempoolViewerMoniker> {}
|