import { Discovery } from './discovery.js';
import { Broker } from '../broker.js';
import { MicroserviceConfig } from '../types/index.js';
export type MicroserviceOptions = {
    noStopMethod?: boolean;
};
export declare class Microservice {
    readonly broker: Broker;
    private readonly options?;
    private readonly ee;
    readonly discovery: Discovery;
    private readonly startedMethods;
    constructor(broker: Broker, config: MicroserviceConfig | (() => MicroserviceConfig), options?: MicroserviceOptions | undefined);
    static create(broker: Broker, config: MicroserviceConfig | (() => MicroserviceConfig), options?: MicroserviceOptions): Promise<Microservice>;
    static createFromClass<T extends object>(broker: Broker, target: T, options?: MicroserviceOptions): Promise<Microservice>;
    get id(): Readonly<string>;
    get config(): Readonly<MicroserviceConfig>;
    on(event: 'stop', listener: () => void): void;
    on(event: 'close', listener: () => void): void;
    off(event: 'stop', listener: () => void): void;
    off(event: 'close', listener: () => void): void;
    private emit;
    private addMicroserviceStopToConfig;
    private startMethod;
    private stopMethod;
    start(): Promise<this>;
    restart(): Promise<this>;
    private handleStop;
    stop(): Promise<this>;
    private getProfiledMethodHandler;
}
