@proto-kit/protocolDocs


Documentation / @proto-kit/protocol / Protocol

Class: Protocol<Modules>

Reusable module container facilitating registration, resolution configuration, decoration and validation of modules

Extends

Type Parameters

Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord

The record of child module classes.

Implements

Constructors

new Protocol()

new Protocol<Modules>(definition): Protocol<Modules>

Parameters

definition: Modules

Returns

Protocol<Modules>

Overrides

ModuleContainer.constructor

Defined in

packages/protocol/src/protocol/Protocol.ts:89

Properties

currentConfig

protected currentConfig: undefined | CombinedModuleContainerConfig<Modules, NoConfig>

Store the config separately, so that we can apply additional checks when retrieving it via the getter

Inherited from

ModuleContainer.currentConfig

Defined in

packages/common/dist/config/ConfigurableModule.d.ts:17


definition

definition: Modules

Overrides

ModuleContainer.definition

Defined in

packages/protocol/src/protocol/Protocol.ts:87

Accessors

blockProver

Get Signature

get blockProver(): BlockProvable

Returns

BlockProvable

Defined in

packages/protocol/src/protocol/Protocol.ts:134


config

Get Signature

get config(): CombinedModuleContainerConfig<Modules, ContainerConfig>

Returns

CombinedModuleContainerConfig<Modules, ContainerConfig>

Set Signature

set config(config): void

Parameters

config: CombinedModuleContainerConfig<Modules, ContainerConfig>

Returns

void

Inherited from

ModuleContainer.config

Defined in

packages/common/dist/config/ModuleContainer.d.ts:121


container

Get Signature

get protected container(): DependencyContainer

Returns

DependencyContainer

Inherited from

ModuleContainer.container

Defined in

packages/common/dist/config/ModuleContainer.d.ts:86


containerConfig

Get Signature

get containerConfig(): ContainerConfig

Returns the container’s own configuration.

Returns

ContainerConfig

Inherited from

ModuleContainer.containerConfig

Defined in

packages/common/dist/config/ModuleContainer.d.ts:73


dependencyContainer

Get Signature

get dependencyContainer(): DependencyContainer

Returns

DependencyContainer

Overrides

ModuleContainer.dependencyContainer

Defined in

packages/protocol/src/protocol/Protocol.ts:116


events

Get Signature

get events(): EventEmitterProxy<Modules>

Returns

EventEmitterProxy<Modules>

Inherited from

ModuleContainer.events

Defined in

packages/common/dist/config/ModuleContainer.d.ts:105


moduleNames

Get Signature

get moduleNames(): string[]

Returns

string[]

list of module names

Inherited from

ModuleContainer.moduleNames

Defined in

packages/common/dist/config/ModuleContainer.d.ts:77


stateService

Get Signature

get stateService(): SimpleAsyncStateService

Returns

SimpleAsyncStateService

Implementation of

ProtocolEnvironment.stateService

Defined in

packages/protocol/src/protocol/Protocol.ts:94


stateServiceProvider

Get Signature

get stateServiceProvider(): StateServiceProvider

Returns

StateServiceProvider

Implementation of

ProtocolEnvironment.stateServiceProvider

Defined in

packages/protocol/src/protocol/Protocol.ts:98


stateTransitionProver

Get Signature

get stateTransitionProver(): StateTransitionProvable

Returns

StateTransitionProvable

Defined in

packages/protocol/src/protocol/Protocol.ts:142


transactionProver

Get Signature

get transactionProver(): TransactionProvable

Returns

TransactionProvable

Defined in

packages/protocol/src/protocol/Protocol.ts:126

Methods

assertContainerInitialized()

assertContainerInitialized(container): asserts container is DependencyContainer

Parameters

container: undefined | DependencyContainer

Returns

asserts container is DependencyContainer

Inherited from

ModuleContainer.assertContainerInitialized

Defined in

packages/common/dist/config/ModuleContainer.d.ts:95


assertIsValidModuleName()

assertIsValidModuleName(moduleName): asserts moduleName is StringKeyOf<Modules>

Assert that the iterated moduleName is of ModuleName type, otherwise it may be just string e.g. when modules are iterated over using e.g. a for loop.

Parameters

moduleName: string

Returns

asserts moduleName is StringKeyOf<Modules>

Inherited from

ModuleContainer.assertIsValidModuleName

Defined in

packages/common/dist/config/ModuleContainer.d.ts:92


configure()

configure(config): void

Provide additional configuration after the ModuleContainer was created.

Keep in mind that modules are only decorated once after they are resolved, therefore applying any configuration must happen before the first resolution.

Parameters

config: CombinedModuleContainerConfig<Modules, NoConfig>

Returns

void

Inherited from

ModuleContainer.configure

Defined in

packages/common/dist/config/ModuleContainer.d.ts:119


configurePartial()

configurePartial(config): void

Parameters

config: RecursivePartial<CombinedModuleContainerConfig<Modules, NoConfig>>

Returns

void

Inherited from

ModuleContainer.configurePartial

Defined in

packages/common/dist/config/ModuleContainer.d.ts:120


create()

create(childContainerProvider): void

This is a placeholder for individual modules to override. This method will be called whenever the underlying container fully initialized

Parameters

childContainerProvider: ChildContainerProvider

Returns

void

Overrides

ModuleContainer.create

Defined in

packages/protocol/src/protocol/Protocol.ts:174


decorateModule()

decorateModule(moduleName, containedModule): void

Override this in the child class to provide custom features or module checks

Parameters

moduleName: StringKeyOf<Modules>

containedModule: InstanceType<Modules[StringKeyOf<Modules>]>

Returns

void

Overrides

ModuleContainer.decorateModule

Defined in

packages/protocol/src/protocol/Protocol.ts:102


getAreProofsEnabled()

getAreProofsEnabled(): AreProofsEnabled

Returns

AreProofsEnabled

Implementation of

ProtocolEnvironment.getAreProofsEnabled

Defined in

packages/protocol/src/protocol/Protocol.ts:170


initializeDependencyFactories()

protected initializeDependencyFactories(factories): void

Inject a set of dependencies using the given list of DependencyFactories This method should be called during startup

Parameters

factories: StringKeyOf<Modules>[]

Returns

void

Inherited from

ModuleContainer.initializeDependencyFactories

Defined in

packages/common/dist/config/ModuleContainer.d.ts:145


isValidModuleName()

isValidModuleName(modules, moduleName): moduleName is StringKeyOf<Modules>

Parameters

modules: Modules

moduleName: string | number | symbol

Returns

moduleName is StringKeyOf<Modules>

Inherited from

ModuleContainer.isValidModuleName

Defined in

packages/common/dist/config/ModuleContainer.d.ts:93


onAfterModuleResolution()

protected onAfterModuleResolution(moduleName): void

Handle module resolution, e.g. by decorating resolved modules

Parameters

moduleName: StringKeyOf<Modules>

Returns

void

Inherited from

ModuleContainer.onAfterModuleResolution

Defined in

packages/common/dist/config/ModuleContainer.d.ts:160


registerAliases()

protected registerAliases(originalToken, clas): void

Parameters

originalToken: string

clas: TypedClass<any>

Returns

void

Inherited from

ModuleContainer.registerAliases

Defined in

packages/common/dist/config/ModuleContainer.d.ts:96


registerModules()

protected registerModules(modules): void

Register modules into the current container, and registers a respective resolution hook in order to decorate the module upon/after resolution.

Parameters

modules: Modules

Returns

void

Inherited from

ModuleContainer.registerModules

Defined in

packages/common/dist/config/ModuleContainer.d.ts:104


registerValue()

registerValue<Value>(modules): void

Register a non-module value into the current container

Type Parameters

Value

Parameters

modules: Record<string, Value>

Returns

void

Inherited from

ModuleContainer.registerValue

Defined in

packages/common/dist/config/ModuleContainer.d.ts:110


resolve()

resolve<KeyType>(moduleName): InstanceType<ResolvableModules<Modules>[KeyType]>

Resolves a module from the current module container

We have to narrow down the ModuleName type here to ResolvableModuleName, otherwise the resolved value might be any module instance, not the one specifically requested as argument.

Type Parameters

KeyType extends string

Parameters

moduleName: KeyType

Returns

InstanceType<ResolvableModules<Modules>[KeyType]>

Inherited from

ModuleContainer.resolve

Defined in

packages/common/dist/config/ModuleContainer.d.ts:133


resolveOrFail()

resolveOrFail<ModuleType>(moduleName, moduleType?): ModuleType

Type Parameters

ModuleType

Parameters

moduleName: string

moduleType?: TypedClass<ModuleType>

Returns

ModuleType

Inherited from

ModuleContainer.resolveOrFail

Defined in

packages/common/dist/config/ModuleContainer.d.ts:134


start()

start(): Promise<void>

Returns

Promise<void>

Implementation of

Startable.start

Defined in

packages/protocol/src/protocol/Protocol.ts:247


validateModule()

protected validateModule(moduleName, containedModule): void

Check if the provided module satisfies the container requirements, such as only injecting other known modules.

Parameters

moduleName: StringKeyOf<Modules>

containedModule: ConfigurableModule<unknown>

Returns

void

Inherited from

ModuleContainer.validateModule

Defined in

packages/common/dist/config/ModuleContainer.d.ts:85


defaultConfig()

static defaultConfig(): object

Returns

object

AccountState

AccountState: object = {}

BlockHeight

BlockHeight: object = {}

BlockProver

BlockProver: object = {}

LastStateRoot

LastStateRoot: object = {}

StateTransitionProver

StateTransitionProver: object = {}

TransactionProver

TransactionProver: object = {}

Defined in

packages/protocol/src/protocol/Protocol.ts:159


defaultModules()

static defaultModules(): object

Returns

object

AccountState

AccountState: typeof AccountStateHook = AccountStateHook

BlockHeight

BlockHeight: typeof BlockHeightHook = BlockHeightHook

BlockProver

BlockProver: typeof BlockProver

LastStateRoot

LastStateRoot: typeof LastStateRootBlockHook = LastStateRootBlockHook

StateTransitionProver

StateTransitionProver: typeof StateTransitionProver

TransactionProver

TransactionProver: typeof TransactionProver

Defined in

packages/protocol/src/protocol/Protocol.ts:148


from()

static from<Modules>(modules): TypedClass<Protocol<Modules>>

Type Parameters

Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord

Parameters

modules: Modules

Returns

TypedClass<Protocol<Modules>>

Defined in

packages/protocol/src/protocol/Protocol.ts:75