// flow-typed signature: d27960d9578f6d20018e9ab285c690c3
// flow-typed version: <<STUB>>/karma-webpack_v^1.8.0/flow_v0.42.0

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

declare module 'karma-webpack/lib/mocha-env-loader' {
  declare module.exports: any;
}

// Filename aliases
declare module 'karma-webpack/index' {
  declare module.exports: $Exports<'karma-webpack'>;
}
declare module 'karma-webpack/index.js' {
  declare module.exports: $Exports<'karma-webpack'>;
}
declare module 'karma-webpack/lib/karma-webpack.js' {
  declare module.exports: $Exports<'karma-webpack/lib/karma-webpack'>;
}
declare module 'karma-webpack/lib/mocha-env-loader.js' {
  declare module.exports: $Exports<'karma-webpack/lib/mocha-env-loader'>;
}
