diff --git a/line-reader/line-reader-tests.ts b/line-reader/line-reader-tests.ts
new file mode 100644
index 000000000..4d6ce4246
--- /dev/null
+++ b/line-reader/line-reader-tests.ts
@@ -0,0 +1,29 @@
+///
+
+import lineReader = require('line-reader');
+
+lineReader.open('line-reader-tests.ts', function(err: Error, reader: LineReader) {
+ if (err) throw err;
+ if (reader.hasNextLine()) {
+ try {
+ reader.nextLine(function(err: Error, line: string) {
+ if (err) throw err;
+ console.log(line);
+ });
+ } finally {
+ reader.close(function(err: Error) {
+ if (err) throw err;
+ })
+ }
+ }
+ else {
+ reader.close(function(err: Error) {
+ if (err) throw err;
+ });
+ }
+});
+
+lineReader.eachLine('line-reader.d.ts', {encoding: 'utf8'}, function(line: string, last: boolean) {
+ console.log(line);
+ if (last) console.log('');
+});
diff --git a/line-reader/line-reader.d.ts b/line-reader/line-reader.d.ts
new file mode 100644
index 000000000..f744dec6f
--- /dev/null
+++ b/line-reader/line-reader.d.ts
@@ -0,0 +1,27 @@
+// Type definitions for line-reader
+// Project: https://github.com/nickewing/line-reader
+// Definitions by: Sam Saint-Pettersen
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+interface LineReaderOptions {
+ separator?: any;
+ encoding?: string;
+ bufferSize?: number;
+}
+
+interface LineReader {
+ eachLine(): Function; // For Promise.promisify;
+ open(): Function;
+ eachLine(file: string, cb: (line: string, last?: boolean, cb?: Function) => void): LineReader;
+ eachLine(file: string, options: LineReaderOptions, cb: (line: string, last?: boolean, cb?: Function) => void): LineReader;
+ open(file: string, cb: (err: Error, reader: LineReader) => void): void;
+ open(file: string, options: LineReaderOptions, cb: (err: Error, reader: LineReader) => void): void;
+ hasNextLine(): boolean;
+ nextLine(cb: (err: Error, line: string) => void): void;
+ close(cb: (err: Error) => void): void;
+}
+
+declare module "line-reader" {
+ var lr: LineReader;
+ export = lr;
+}