import { LightValidatorNode } from "./light-node"; import { filter, switchMap } from "rxjs/operators"; import { Tendermint } from "../tendermint/tendermint"; import { Validator } from "../validator/validator"; import { INetworkListener } from "../interfaces/network-listener.i"; import { Observable } from "rxjs"; import { ITransferRequestStore } from "../interfaces/transfer-request-store.i"; export class MasterValidationNode extends LightValidatorNode { private isValidationNotAlreadyCounted = filter(() => true); private countValidation = filter(() => true); constructor( protected store: ITransferRequestStore, protected validator: Validator, protected networkListener: INetworkListener, private tenderMint: Tendermint, ) { super(store, validator, networkListener) } init() { super.init(); this.networkListener.incommingValidationObservable.pipe( this.isValidationNotAlreadyCounted, this.countValidation, ); this.completedValidationObservable.pipe(switchMap((tx) => { return Observable.create(this.tenderMint.broadcastValidatedRequest(tx)); })); } }