@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
109 lines (108 loc) • 2.87 kB
TypeScript
/**
* SPDX-License-Identifier: Apache-2.0
*/
import type * as x509 from '@peculiar/x509';
import type net from 'net';
import type * as WebSocket from 'ws';
import type crypto from 'crypto';
import { type ListrTask, type ListrTaskWrapper } from 'listr2';
import { type PublicKey } from '@hashgraph/sdk';
import { type JsonString } from './aliases.js';
export interface NodeKeyObject {
privateKey: crypto.webcrypto.CryptoKey;
certificate: x509.X509Certificate;
certificateChain: x509.X509Certificates;
}
export interface PrivateKeyAndCertificateObject {
privateKeyFile: string;
certificateFile: string;
}
export interface ExtendedNetServer extends net.Server {
localPort: number;
info: string;
}
export interface LocalContextObject {
reject: (reason?: any) => void;
connection: WebSocket.WebSocket;
errorMessage: string;
}
export interface AccountIdWithKeyPairObject {
accountId: string;
privateKey: string;
publicKey: string;
}
/**
* Generic type for representing optional types
*/
export type Optional<T> = T | undefined;
/**
* Interface for capsuling validating for class's own properties
*/
export interface Validate {
/**
* Validates all properties of the class and throws if data is invalid
*/
validate(): void;
}
/**
* Interface for converting a class to a plain object.
*/
export interface ToObject<T> {
/**
* Converts the class instance to a plain object.
*
* @returns the plain object representation of the class.
*/
toObject(): T;
}
/**
* Interface for converting class to JSON string.
*/
export interface ToJSON {
/**
* Converts the class instance to a plain JSON string.
*
* @returns the plain JSON string of the class.
*/
toJSON(): JsonString;
}
export type SoloListrTask<T> = ListrTask<T, any, any>;
export type EmptyContextConfig = object;
export type SoloListrTaskWrapper<T> = ListrTaskWrapper<T, any, any>;
export interface ServiceEndpoint {
ipAddressV4?: string;
port: number;
domainName: string;
}
export interface NodeAccountId {
accountId: {
accountNum: string;
};
}
export interface GenesisNetworkNodeStructure {
nodeId: number;
accountId: NodeAccountId;
description: string;
gossipEndpoint: ServiceEndpoint[];
serviceEndpoint: ServiceEndpoint[];
gossipCaCertificate: string;
grpcCertificateHash: string;
weight: number;
deleted: boolean;
adminKey: PublicKey;
}
export interface GenesisNetworkRosterStructure {
nodeId: number;
weight: number;
gossipEndpoint: ServiceEndpoint[];
gossipCaCertificate: string;
}
export interface GossipEndpoint {
nodeId: number;
hostname: string;
port: number;
}
export interface NodeOverridesStructure {
interfaceBindings: GossipEndpoint[];
endpointOverrides: GossipEndpoint[];
}