import { Builder, Command, CommandOptions, Network, NetworkBuilder, NodeMode, NodeModeBuilder, OutFile, OutFileBuilder, } from '@zodimo/cardano-cli-base'; export class ProtocolParametersOptions implements CommandOptions { private nodeMode?: NodeMode; private network?: Network; private outFile?: OutFile; withNodeMode(builder: Builder): ProtocolParametersOptions; withNodeMode(value: NodeMode): ProtocolParametersOptions; withNodeMode(value: NodeMode | Builder): ProtocolParametersOptions { if (typeof value !== 'function') { this.nodeMode = value; return this; } this.nodeMode = value(new NodeModeBuilder()); return this; } withNetwork(builder: Builder): ProtocolParametersOptions; withNetwork(value: Network): ProtocolParametersOptions; withNetwork(value: Network | Builder): ProtocolParametersOptions { if (typeof value !== 'function') { this.network = value; return this; } this.network = value(new NetworkBuilder()); return this; } withOutFile(builder: Builder): ProtocolParametersOptions; withOutFile(value: OutFile): ProtocolParametersOptions; withOutFile(value: OutFile | Builder): ProtocolParametersOptions { if (typeof value !== 'function') { this.outFile = value; return this; } this.outFile = value(new OutFileBuilder()); return this; } toString(): string { const output: string[] = []; if (this.nodeMode) { output.push(this.nodeMode.toString()); } if (this.network) { output.push(this.network.toString()); } if (this.outFile) { output.push(this.outFile.toString()); } return output.join(' '); } } export class ProtocolParameters extends Command { getCommandName(): string { return 'protocol-parameters'; } }