// Type definitions for SuperAgent 0.15.4 // Project: https://github.com/visionmedia/superagent // Definitions by: Alex Varju // Definitions: https://github.com/borisyankov/DefinitelyTyped /// declare module "superagent" { import stream = require('stream'); type CallbackHandler = { (err: any, res: request.Response): void; }|{ (res: request.Response): void; }; var request: request.SuperAgentStatic; module request { interface SuperAgentStatic extends SuperAgent { (url: string): SuperAgentRequest; (method: string, url: string): SuperAgentRequest; agent(): SuperAgent; } interface SuperAgent> extends stream.Stream { get(url: string, callback?: CallbackHandler): Req; post(url: string, callback?: CallbackHandler): Req; put(url: string, callback?: CallbackHandler): Req; head(url: string, callback?: CallbackHandler): Req; del(url: string, callback?: CallbackHandler): Req; delete(url: string, callback?: CallbackHandler): Req; options(url: string, callback?: CallbackHandler): Req; trace(url: string, callback?: CallbackHandler): Req; copy(url: string, callback?: CallbackHandler): Req; lock(url: string, callback?: CallbackHandler): Req; mkcol(url: string, callback?: CallbackHandler): Req; move(url: string, callback?: CallbackHandler): Req; purge(url: string, callback?: CallbackHandler): Req; propfind(url: string, callback?: CallbackHandler): Req; proppatch(url: string, callback?: CallbackHandler): Req; unlock(url: string, callback?: CallbackHandler): Req; report(url: string, callback?: CallbackHandler): Req; mkactivity(url: string, callback?: CallbackHandler): Req; checkout(url: string, callback?: CallbackHandler): Req; merge(url: string, callback?: CallbackHandler): Req; // m-search(url: string, callback?: CallbackHandler): Req; notify(url: string, callback?: CallbackHandler): Req; subscribe(url: string, callback?: CallbackHandler): Req; unsubscribe(url: string, callback?: CallbackHandler): Req; patch(url: string, callback?: CallbackHandler): Req; search(url: string, callback?: CallbackHandler): Req; connect(url: string, callback?: CallbackHandler): Req; parse(fn: Function): Req; saveCookies(res: Response): void; attachCookies(req: Req): void; } interface Response extends NodeJS.ReadableStream { text: string; body: any; files: any; header: any; type: string; charset: string; status: number; statusType: number; info: boolean; ok: boolean; redirect: boolean; clientError: boolean; serverError: boolean; error: Error; accepted: boolean; noContent: boolean; badRequest: boolean; unauthorized: boolean; notAcceptable: boolean; notFound: boolean; forbidden: boolean; get(header: string): string; toError(): Error; } interface Request> /* extends NodeJS.WritableStream */ { abort(): Req; accept(type: string): Req; attach(field: string, file: Blob|File, filename?: string): Req; auth(user: string, pass: string): Req; buffer(val: boolean): Req; clearTimeout(): Req; end(callback?: CallbackHandler): Req; field(name: string, val: string|Blob|File): Req; get(field: string): string; on(name: string, handler: Function): Req; pipe(stream: NodeJS.WritableStream, options?: Object): stream.Writable; query(val: Object|string): Req; send(data: Object|string): Req; set(field: string, val: string): Req; set(field: Object): Req; timeout(ms: number): Req; type(val: string): Req; unset(field: string): Req; withCredentials(): Req; } interface SuperAgentRequest extends Request>>> {} } export = request; }