///
import Events from './apis/Events';
import BreakpointService, { IBreakpointService } from './BreakpointService';
import { NerdVisionApiKey, NerdVisionConfig } from './models/NerdVisionConfig';
import AgentRegistration from './apis/AgentRegistration';
import { Debug } from './apis/Debug';
import Configuration from './models/Configuration';
import FileLoader from './utils/FileLoader';
import { ClientConfig, IDecorator } from "./models/ClientConfig";
import SourceMapperService from "./apis/SourceMapperService";
export declare class NerdVisionAgent {
private _events;
private _breakpointService;
private _debug;
private _clientReg;
private _fileLoader;
private _config;
private _clientConfig;
private _sourceMapper;
private grpc;
constructor(_events: Events, _breakpointService: BreakpointService, _debug: Debug, _clientReg: AgentRegistration, _fileLoader: FileLoader, _config: Configuration, _clientConfig: ClientConfig, _sourceMapper: SourceMapperService);
/**
* Check the node version is correct and throw error if incorrect
*
* @param versions the node version to check
*/
static checkVersion(versions: NodeJS.ProcessVersions): void;
get breakpointService(): IBreakpointService;
/**
* Start up the NerdVision agent
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
* @param isServerless set this as a serverless start
*/
start(config?: NerdVisionApiKey | NerdVisionConfig, isServerless?: boolean): Promise;
/**
* Start up the nerd.vision agent
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
* @deprecated use start(NerdVisionApiKey | NerdVisionConfig)
*/
init(config?: NerdVisionApiKey | NerdVisionConfig): Promise;
/**
* Start up the nerd.vision agent in serverless mode
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
* @deprecated use startServerless(NerdVisionApiKey | NerdVisionConfig)
*/
initLambda(config?: NerdVisionApiKey | NerdVisionConfig): Promise;
/**
* Start up the nerd.vision agent in serverless mode
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
*/
startServerless(config?: NerdVisionApiKey | NerdVisionConfig): Promise;
/**
* Ensure the node agent starts and stops cleanly by wrapping the given function
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
* @param wrapped The function that should be wrapped
*
* @deprecated use wrapFunc
*/
wrap(wrapped: () => any, config?: NerdVisionApiKey | NerdVisionConfig): Promise;
/**
* Ensure the node agent starts and stops cleanly by wrapping the given function
* NerdVision will start in serverless mode
*
* @param config NerdVisionApiKey | NerdVisionConfig - The configuration for the agent. You can pass through an API key, or a full configuration object
* @param wrapped The function that should be wrapped
*
* @deprecated use wrapFunc
*/
wrapLambda(wrapped: () => any, config?: NerdVisionApiKey | NerdVisionConfig): Promise;
/**
* Wrap an arbitrary function with NerdVision. NerdVision will first initialise then call the function provided, and then
* report the error to NerdVision for processing. After the function is called NerdVision will flush and shutdown.
*
* @param func the function to wrap
* @param config the config for the NerdVision agent
*
* @return the wrapped function to call inplace of the original
* @throws the exception caused by the original function, if one is thrown
*/
wrapFunc Promise | any>(func: FUNC, config?: NerdVisionApiKey | NerdVisionConfig): FUNC;
/**
* Close the connection to NerdVision
*/
close(): Promise;
/**
* Capture an exception and send it to NerdVision as a trigger for auto tracepoints
*
* @param e the error
*/
captureException(e: Error | string): Promise;
/**
* Perform the actual agent startup
*/
private startup;
/**
* Add a decorator to add meta data to data being sent to cloud
*
* @param decorator the decorator
* @return the decorator id
*/
addDecorator(decorator: IDecorator): string;
/**
* Remove the decorator with the give id
* @param id the decorator id
*
* @return the decorator removed
*/
removeDecorator(id: string): IDecorator;
}