// flow-typed signature: e437acb5eb438e7be3fbc38b76fddd43
// flow-typed version: <<STUB>>/http-server_v^0.9.0/flow_v0.42.0

/**
 * This is an autogenerated libdef stub for:
 *
 *   'http-server'
 *
 * Fill this stub out by replacing all the `any` types.
 *
 * Once filled out, we encourage you to share your work with the 
 * community by sending a pull request to: 
 * https://github.com/flowtype/flow-typed
 */

declare module 'http-server' {
  declare module.exports: any;
}

/**
 * We include stubs for each file inside this npm package in case you need to
 * require those files directly. Feel free to delete any files that aren't
 * needed.
 */
declare module 'http-server/lib/http-server' {
  declare module.exports: any;
}

declare module 'http-server/test/http-server-test' {
  declare module.exports: any;
}

// Filename aliases
declare module 'http-server/lib/http-server.js' {
  declare module.exports: $Exports<'http-server/lib/http-server'>;
}
declare module 'http-server/test/http-server-test.js' {
  declare module.exports: $Exports<'http-server/test/http-server-test'>;
}
