/*
 * Copyright (c) 2017 NumberFour AG.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   NumberFour AG - Initial API and implementation
 */
@@Global @@ProvidedByRuntime


import {EventEmitter} from "events";
import {IReadableStream} from "stream";
import {IWritableStream} from "stream";
export external public class ~Process extends EventEmitter {
    public abort(): void;
    public arch: string;
    public argv: string[];
    public chdir(dir: string): void;
    public config: Object+;
    public connected: boolean;
    public cwd(): string;
    public disconnect(): void;
    public env: Object+;
    public execArgv: string[];
    public execPath: string;
    public exit(code: number=): void;
    public exitCode: number;
    public getegid(): number;
    public geteuid(): number;
    public getgid(): number;
    public getgroups(): number[];
    public getuid(): number;
    public hrtime(time: number[] =): number[];
    public initgroups(user: string, extra_group: number): number[];
    public kill(pid: number, signal: string=): void;
    public mainModule: Object+;
    public memoryUsage(): Object+;
    public nextTick(fn: Function): void;
    public pid: number;
    public platform: string;
    public release: ~Object with {
        name: string;
        sourceUrl: string;
        headersUrl: string;
        libUrl: string;
    };
    public send(message: Object, sendHandle: any=, callback: Function=): void;
    public setegid(id: union{number, string}): void;
    public seteuid(id: union{number, string}): void;
    public setgid(id: union{number, string}): void;
    public setgroups(groups: union{number, string}[]): void;
    public setuid(id: union{number, string}): void;
    public stderr: IWritableStream;
    public stdout: IWritableStream;
    public stdin: IReadableStream;
    public title: string;
    public umask(mask: number): void;
    public uptime(): number;
    public version: string;
    public versions: Object+;
}

export external public const process: Process;


