UNPKG

@hiero-ledger/sdk

Version:
176 lines (175 loc) 5.02 kB
/** * @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";