UNPKG

lisk-framework

Version:

Lisk blockchain application platform

75 lines (74 loc) 2.52 kB
import { Schema } from '@liskhq/lisk-codec'; import { GenesisConfig } from '../types'; import { BlockAfterExecuteContext, BlockExecuteContext, GenesisBlockExecuteContext, TransactionExecuteContext, TransactionVerifyContext, BlockVerifyContext, VerificationResult } from '../state_machine'; import { BaseCommand } from './base_command'; import { BaseEndpoint } from './base_endpoint'; import { BaseMethod } from './base_method'; import { InsertAssetContext } from '../state_machine/types'; import { NamedRegistry } from './named_registry'; export interface ModuleInitArgs { genesisConfig: Omit<GenesisConfig, 'modules'>; moduleConfig: Record<string, unknown>; } export interface ModuleMetadata { endpoints: { name: string; request?: Schema; response?: Schema; }[]; events: { name: string; data: Schema; }[]; commands: { name: string; params: Schema; }[]; assets: { version: number; data: Schema; }[]; stores: { key: string; data?: Schema; }[]; } export type ModuleMetadataJSON = ModuleMetadata & { name: string; }; export declare abstract class BaseModule { commands: BaseCommand[]; events: NamedRegistry; stores: NamedRegistry; offchainStores: NamedRegistry; get name(): string; abstract endpoint: BaseEndpoint; abstract method: BaseMethod; init?(args: ModuleInitArgs): Promise<void>; insertAssets?(context: InsertAssetContext): Promise<void>; verifyAssets?(context: BlockVerifyContext): Promise<void>; verifyTransaction?(context: TransactionVerifyContext): Promise<VerificationResult>; beforeCommandExecute?(context: TransactionExecuteContext): Promise<void>; afterCommandExecute?(context: TransactionExecuteContext): Promise<void>; initGenesisState?(context: GenesisBlockExecuteContext): Promise<void>; finalizeGenesisState?(context: GenesisBlockExecuteContext): Promise<void>; beforeTransactionsExecute?(context: BlockExecuteContext): Promise<void>; afterTransactionsExecute?(context: BlockAfterExecuteContext): Promise<void>; abstract metadata(): ModuleMetadata; protected baseMetadata(): { commands: { name: string; params: Schema; }[]; events: { name: string; data: Schema; }[]; stores: { key: string; data: Schema; }[]; endpoints: never[]; assets: never[]; }; }