import { IRuntime, IStorageProvider, ICache, ICompression } from "./types"; import { setupLogger, setupName, logNodeInfo, syncPoolState, validateRuntime, validateVersion, validateActiveNode, stakePool, unstakePool, setupStake, runNode, runCache, asyncSetup, shouldIdle, claimUploaderRole, canVote, validateBundleProposal, voteBundleProposal, loadBundle, remainingUploadInterval, waitForNextBundleProposal, canPropose, submitBundleProposal, proposeBundle } from "./methods"; import KyveSDK, { KyveClient, KyveLCDClientType } from "@kyve/sdk"; import { Logger } from "tslog"; import { kyve } from "@kyve/proto"; /** * Main class of KYVE protocol nodes representing a node. * * @class Node * @constructor */ export declare class Node { /** * My property description. Like other pieces of your comment blocks, * this can span multiple lines. * * @property runtime * @type {IRuntime} */ protected runtime: IRuntime; protected storageProvider: IStorageProvider; protected compression: ICompression; protected cache: ICache; sdk: KyveSDK; client: KyveClient; query: KyveLCDClientType; coreVersion: string; pool: kyve.registry.v1beta1.kyveRegistry.Pool; poolConfig: any; name: string; logger: Logger; protected poolId: number; protected mnemonic: string; protected keyfile: string; protected stake: string; protected network: string; protected verbose: boolean; protected asyncSetup: typeof asyncSetup; protected setupLogger: typeof setupLogger; protected setupName: typeof setupName; protected logNodeInfo: typeof logNodeInfo; protected syncPoolState: typeof syncPoolState; protected validateRuntime: typeof validateRuntime; protected validateVersion: typeof validateVersion; protected validateActiveNode: typeof validateActiveNode; protected stakePool: typeof stakePool; protected unstakePool: typeof unstakePool; protected setupStake: typeof setupStake; protected shouldIdle: typeof shouldIdle; protected claimUploaderRole: typeof claimUploaderRole; protected loadBundle: typeof loadBundle; protected canVote: typeof canVote; protected validateBundleProposal: typeof validateBundleProposal; protected voteBundleProposal: typeof voteBundleProposal; protected remainingUploadInterval: typeof remainingUploadInterval; protected waitForNextBundleProposal: typeof waitForNextBundleProposal; protected canPropose: typeof canPropose; protected submitBundleProposal: typeof submitBundleProposal; protected proposeBundle: typeof proposeBundle; protected runNode: typeof runNode; protected runCache: typeof runCache; /** * Defines node options for CLI and initializes those inputs * Node name is generated here depending on inputs * * @method constructor */ constructor(); /** * Set the runtime for the protocol node. * The Runtime implements the custom logic of a pool. * * Required before calling 'run' * * @method addRuntime * @param {IRuntime} runtime which implements the interface IRuntime * @return {Promise} returns this for chained commands * @chainable */ addRuntime(runtime: IRuntime): this; /** * Set the storage provider for the protocol node. * The Storage Provider handles data storage and retrieval for a pool. * * Required before calling 'run' * * @method addStorageProvider * @param {IStorageProvider} storageProvider which implements the interface IStorageProvider * @return {Promise} returns this for chained commands * @chainable */ addStorageProvider(storageProvider: IStorageProvider): this; /** * Set the compression type for the protocol node. * Before saving bundles to the storage provider the node uses this compression * to store data more efficiently * * Required before calling 'run' * * @method addCompression * @param {ICompression} compression which implements the interface ICompression * @return {Promise} returns this for chained commands * @chainable */ addCompression(compression: ICompression): this; /** * Set the cache for the protocol node. * The Cache is responsible for caching data before its validated and stored on the Storage Provider. * * Required before calling 'run' * * @method addCache * @param {ICache} cache which implements the interface ICache * @return {Promise} returns this for chained commands * @chainable */ addCache(cache: ICache): this; /** * Main method of @kyve/core. By running this method the node will start and run. * For this method to run the Runtime, Storage Provider and the Cache have to be added first. * * This method will run indefinetely and only exits on specific exit conditions like running * an incorrect runtime or version. * * @method start * @return {Promise} */ start(): Promise; } export * from "./types"; export * from "./storage"; export * from "./compression"; export * from "./cache";