import { IValidationNode } from "./interfaces/validation-node.i"; import { LightValidatorNode } from "./nodes/light-node"; import { MasterValidationNode } from "./nodes/master-node"; import { NetworkListener } from "./network-listener/network-listener"; import { Tendermint } from "./tendermint/tendermint"; import { StandardValidatorFactory } from "./standardValidatorFactory"; // import { stubStore } from "./storage/stub-tranfer-request-storage"; import { FileTransferRequestStorage } from "./storage/file-transfer-request-storage"; import { INetworkListener } from "./interfaces/network-listener.i"; import { CombinedWatcherProxy } from "./watcher-proxy/combined-watcher-proxy"; export class NodeFactory { private static validator = StandardValidatorFactory.create(new CombinedWatcherProxy([])); private static networkListener: INetworkListener; private static tenderMint = new Tendermint(); private static fileStore = new FileTransferRequestStorage(); static createNode(mode: 'light' | 'master' = 'light'): IValidationNode { if (!this.networkListener) { NodeFactory.networkListener = new NetworkListener(0x15); } if (mode === 'light') { return new LightValidatorNode(this.fileStore, this.validator, this.networkListener); } else { return new MasterValidationNode(this.fileStore, this.validator, this.networkListener, this.tenderMint); } } }