type ReaderResult = ReaderResult.Success | ReaderResult.Error; declare namespace ReaderResult { function error(message: string, line?: number): ReaderResult; function success(result: T, warnings?: string[]): ReaderResult; class Error { message: string; line: number; isError: true; toString(): string; constructor(message: string, line: number); } class Success { result: T; warnings: string[]; isError: false; constructor(result: T, warnings: string[]); } } export { ReaderResult };