@hiero-ledger/sdk
Version:
176 lines (175 loc) • 5.02 kB
TypeScript
/**
* @typedef {import("../channel/Channel.js").default} Channel
* @typedef {import("../channel/MirrorChannel.js").default} MirrorChannel
* @typedef {import("../Node.js").default} Node
* @typedef {import("../MirrorNode.js").default} MirrorNode
* @typedef {import("../address_book/NodeAddressBook.js").default} NodeAddressBook
*/
/**
* @template {Channel | MirrorChannel} ChannelT
* @typedef {import("../ManagedNode.js").default<ChannelT>} ManagedNode
*/
/**
* @template {Channel | MirrorChannel} ChannelT
* @template {ManagedNode<ChannelT>} NetworkNodeT
* @template {{ toString: () => string }} KeyT
*/
export default class ManagedNetwork<ChannelT extends Channel | MirrorChannel, NetworkNodeT extends ManagedNode<ChannelT>, KeyT extends {
toString: () => string;
}> {
/**
* @param {(address: string) => ChannelT} createNetworkChannel
*/
constructor(createNetworkChannel: (address: string) => ChannelT);
/**
* Map of node account ID (as a string)
* to the node URL.
*
* @internal
* @type {Map<string, NetworkNodeT[]>}
*/
_network: Map<string, NetworkNodeT[]>;
/**
* List of node account IDs.
*
* @protected
* @type {NetworkNodeT[]}
*/
protected _nodes: NetworkNodeT[];
/**
* List of node account IDs.
*
* @protected
* @type {NetworkNodeT[]}
*/
protected _healthyNodes: NetworkNodeT[];
/** @type {(address: string, cert?: string) => ChannelT} */
_createNetworkChannel: (address: string, cert?: string) => ChannelT;
/** @type {LedgerId | null} */
_ledgerId: LedgerId | null;
_minBackoff: number;
_maxBackoff: number;
/** @type {number} */
_maxNodeAttempts: number;
_nodeMinReadmitPeriod: number;
_nodeMaxReadmitPeriod: number;
_earliestReadmitTime: number;
/**
* @deprecated
* @param {string} networkName
* @returns {this}
*/
setNetworkName(networkName: string): this;
/**
* @deprecated
* @returns {string | null}
*/
get networkName(): string | null;
/**
* @param {string|LedgerId} ledgerId
* @returns {this}
*/
setLedgerId(ledgerId: string | LedgerId): this;
/**
* @returns {LedgerId | null}
*/
get ledgerId(): LedgerId | null;
/**
* @abstract
* @param {[string, KeyT]} entry
* @returns {NetworkNodeT}
*/
_createNodeFromNetworkEntry(entry: [string, KeyT]): NetworkNodeT;
/**
* @abstract
* @param {Map<string, KeyT>} network
* @returns {number[]}
*/
_getNodesToRemove(network: Map<string, KeyT>): number[];
_removeDeadNodes(): void;
_readmitNodes(): void;
/**
* @param {number} count
* @returns {NetworkNodeT[]}
*/
_getNumberOfMostHealthyNodes(count: number): NetworkNodeT[];
/**
* @param {number} i
*/
_closeNode(i: number): void;
/**
* @param {NetworkNodeT} node
*/
_removeNodeFromNetwork(node: NetworkNodeT): void;
/**
* @param {Map<string, KeyT>} network
* @returns {this}
*/
_setNetwork(network: Map<string, KeyT>): this;
/**
* @returns {number}
*/
get maxNodeAttempts(): number;
/**
* @param {number} maxNodeAttempts
* @returns {this}
*/
setMaxNodeAttempts(maxNodeAttempts: number): this;
/**
* @returns {number}
*/
get minBackoff(): number;
/**
* @param {number} minBackoff
* @returns {this}
*/
setMinBackoff(minBackoff: number): this;
/**
* @returns {number}
*/
get maxBackoff(): number;
/**
* @param {number} maxBackoff
* @returns {this}
*/
setMaxBackoff(maxBackoff: number): this;
/**
* @returns {number}
*/
get nodeMinReadmitPeriod(): number;
/**
* @param {number} nodeMinReadmitPeriod
* @returns {this}
*/
setNodeMinReadmitPeriod(nodeMinReadmitPeriod: number): this;
/**
* @returns {number}
*/
get nodeMaxReadmitPeriod(): number;
/**
* @param {number} nodeMaxReadmitPeriod
* @returns {this}
*/
setNodeMaxReadmitPeriod(nodeMaxReadmitPeriod: number): this;
/**
* @param {KeyT=} key
* @returns {NetworkNodeT}
*/
getNode(key?: KeyT | undefined): NetworkNodeT;
/**
* @param {NetworkNodeT} node
*/
increaseBackoff(node: NetworkNodeT): void;
/**
* @param {NetworkNodeT} node
*/
decreaseBackoff(node: NetworkNodeT): void;
close(): void;
}
export type Channel = import("../channel/Channel.js").default;
export type MirrorChannel = import("../channel/MirrorChannel.js").default;
export type Node = import("../Node.js").default;
export type MirrorNode = import("../MirrorNode.js").default;
export type NodeAddressBook = import("../address_book/NodeAddressBook.js").default;
export type ManagedNode<ChannelT extends Channel | MirrorChannel> = import("../ManagedNode.js").default<ChannelT>;
import LedgerId from "../LedgerId.js";