UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

109 lines (108 loc) 2.87 kB
/** * 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[]; }