// flow-typed signature: 53907eaae19285207dcb127208163f0c
// flow-typed version: <<STUB>>/httpurl_v^0.1.1/flow_v0.42.0

/**
 * This is an autogenerated libdef stub for:
 *
 *   'httpurl'
 *
 * 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 'httpurl' {
  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 'httpurl/build/httpurl.common' {
  declare module.exports: any;
}

declare module 'httpurl/build/httpurl.debug' {
  declare module.exports: any;
}

declare module 'httpurl/build/httpurl' {
  declare module.exports: any;
}

declare module 'httpurl/Gruntfile' {
  declare module.exports: any;
}

declare module 'httpurl/src/httpurl' {
  declare module.exports: any;
}

declare module 'httpurl/test/httpurl' {
  declare module.exports: any;
}

// Filename aliases
declare module 'httpurl/build/httpurl.common.js' {
  declare module.exports: $Exports<'httpurl/build/httpurl.common'>;
}
declare module 'httpurl/build/httpurl.debug.js' {
  declare module.exports: $Exports<'httpurl/build/httpurl.debug'>;
}
declare module 'httpurl/build/httpurl.js' {
  declare module.exports: $Exports<'httpurl/build/httpurl'>;
}
declare module 'httpurl/Gruntfile.js' {
  declare module.exports: $Exports<'httpurl/Gruntfile'>;
}
declare module 'httpurl/src/httpurl.js' {
  declare module.exports: $Exports<'httpurl/src/httpurl'>;
}
declare module 'httpurl/test/httpurl.js' {
  declare module.exports: $Exports<'httpurl/test/httpurl'>;
}
