import { ServiceOptions, ServiceRepresentation } from '../domain';
import ServiceLogger from './ServiceLogger';
import { Service } from '../domain';
import { WorkerContextAccessor } from '../application/WorkerContextAccessor';
/**
 * Class SimpleServiceCore
 */
export declare class ServiceCore {
    protected ImplClass: any;
    protected impl: Service;
    protected options: ServiceOptions;
    constructor(options: ServiceOptions, ImplClass: any);
    _logger: ServiceLogger;
    readonly logger: ServiceLogger;
    readonly context: WorkerContextAccessor;
    private _dependencies;
    readonly dependencies: any;
    readonly representation: ServiceRepresentation;
    readonly serviceName: string;
    readonly config: any;
    /**
     * Get Class of implementation
     * @return {any}
     */
    protected getImplClass(): any;
    /**
     * Instantiate service
     * @return {Service}
     */
    instantiate(): Service;
    /**
     * Start service
     * @return {Promise<void>}
     */
    start(): Promise<void>;
    /**
     * Stop service
     * @return {Promise<void>}
     */
    stop(): Promise<void>;
    /**
     * Publish this service to IPC HUB
     * @return {Promise<void>}
     */
    publish(): Promise<void>;
    /**
     * Get service's implementation object
     * @return {Service}
     */
    getService(): Service;
    /**
     * Get service's identify, equal service's name now
     * @return {string}
     */
    getServiceId(): string;
    /**
     * Get a dependency service's implementation object by service's ID (name)
     * @param name
     * @return {any}
     */
    getDependency(name: any): any;
}
