--- /dev/null
+/**
+ * Copyright (c) 2016, Daniel Imms (MIT License).
+ * Copyright (c) 2018, Microsoft Corporation (MIT License).
+ */
+
+import * as net from 'net';
+
+export interface IProcessEnv {
+ [key: string]: string;
+}
+
+export interface ITerminal {
+ /**
+ * Gets the name of the process.
+ */
+ process: string;
+
+ /**
+ * Gets the process ID.
+ */
+ pid: number;
+
+ /**
+ * The socket for the master file descriptor. This is not supported on
+ * Windows.
+ */
+ master: net.Socket;
+
+ /**
+ * The socket for the slave file descriptor. This is not supported on Windows.
+ */
+ slave: net.Socket;
+
+ /**
+ * Writes data to the socket.
+ * @param data The data to write.
+ */
+ write(data: string): void;
+
+ /**
+ * Resize the pty.
+ * @param cols The number of columns.
+ * @param rows The number of rows.
+ */
+ resize(cols: number, rows: number): void;
+
+ /**
+ * Close, kill and destroy the socket.
+ */
+ destroy(): void;
+
+ /**
+ * Kill the pty.
+ * @param signal The signal to send, by default this is SIGHUP. This is not
+ * supported on Windows.
+ */
+ kill(signal?: string): void;
+
+ /**
+ * Set the pty socket encoding.
+ */
+ setEncoding(encoding: string | null): void;
+
+ /**
+ * Resume the pty socket.
+ */
+ resume(): void;
+
+ /**
+ * Pause the pty socket.
+ */
+ pause(): void;
+
+ /**
+ * Alias for ITerminal.on(eventName, listener).
+ */
+ addListener(eventName: string, listener: (...args: any[]) => any): void;
+
+ /**
+ * Adds the listener function to the end of the listeners array for the event
+ * named eventName.
+ * @param eventName The event name.
+ * @param listener The callback function
+ */
+ on(eventName: string, listener: (...args: any[]) => any): void;
+
+ /**
+ * Returns a copy of the array of listeners for the event named eventName.
+ */
+ listeners(eventName: string): Function[];
+
+ /**
+ * Removes the specified listener from the listener array for the event named
+ * eventName.
+ */
+ removeListener(eventName: string, listener: (...args: any[]) => any): void;
+
+ /**
+ * Removes all listeners, or those of the specified eventName.
+ */
+ removeAllListeners(eventName: string): void;
+
+ /**
+ * Adds a one time listener function for the event named eventName. The next
+ * time eventName is triggered, this listener is removed and then invoked.
+ */
+ once(eventName: string, listener: (...args: any[]) => any): void;
+}
+
+interface IBasePtyForkOptions {
+ name?: string;
+ cols?: number;
+ rows?: number;
+ cwd?: string;
+ env?: { [key: string]: string };
+ encoding?: string;
+ handleFlowControl?: boolean;
+ flowControlPause?: string;
+ flowControlResume?: string;
+}
+
+export interface IPtyForkOptions extends IBasePtyForkOptions {
+ uid?: number;
+ gid?: number;
+}
+
+export interface IWindowsPtyForkOptions extends IBasePtyForkOptions {
+ useConpty?: boolean;
+ conptyInheritCursor?: boolean;
+}
+
+export interface IPtyOpenOptions {
+ cols?: number;
+ rows?: number;
+ encoding?: string;
+}