/// <reference types="node" />
import { LernaGraph } from './lerna-graph';
import { TranspilingStatus, TypeCheckStatus } from './enums/compilation.status';
import { ChildProcess } from 'child_process';
import { Observable } from 'rxjs';
import { RecompilationScheduler } from '../utils/scheduler';
import { IPCSocketsManager } from '../ipc/socket';
export interface IGraphElement {
    name: string;
    version: string;
    private: boolean;
    location: string;
    dependencies: string[];
}
export declare abstract class LernaNode {
    protected readonly name: string;
    protected readonly location: string;
    protected readonly graph: LernaGraph;
    protected readonly dependencies: LernaNode[];
    private readonly version;
    private readonly private;
    protected transpilingStatus: TranspilingStatus;
    protected transpilingPromise: Promise<void>;
    protected typeCheckStatus: TypeCheckStatus;
    protected typeCheckProcess: ChildProcess;
    private _typeCheckLogs;
    private _checksums;
    private _lastTypeCheck;
    private nodeStatus;
    protected _ipc: IPCSocketsManager;
    protected _scheduler: RecompilationScheduler;
    private _watchers;
    constructor(scheduler: RecompilationScheduler, graph: LernaGraph, node: IGraphElement, nodes: Set<LernaNode>, elements: IGraphElement[]);
    get tscLogs(): string[];
    get lastTypeCheck(): string;
    enable(): void;
    disable(): void;
    registerIPCServer(sockets: IPCSocketsManager): void;
    isEnabled(): boolean;
    isService(): boolean;
    getTranspilingStatus(): TranspilingStatus;
    getTypeCheckStatus(): TypeCheckStatus;
    getChildren(): LernaNode[];
    getGraph(): LernaGraph;
    getVersion(): string;
    getChild(name: string): LernaNode;
    setTranspilingStatus(status: TranspilingStatus): void;
    setTypeCheckingStatus(status: TypeCheckStatus): void;
    isRoot(): boolean;
    getName(): string;
    getLocation(): string;
    getDependencies(): LernaNode[];
    private _getDependencies;
    getDependent(): LernaNode[];
    getParents(): LernaNode[];
    transpile(): Observable<LernaNode>;
    performTypeChecking(force?: boolean): Observable<LernaNode>;
    private _startTranspiling;
    private _startTypeChecking;
    private _handleTscLogs;
    private _watchTypeChecking;
    watch(): void;
    protected unwatch(): void;
}
