// flow-typed signature: a5c8dc54e881e4ed564a1f5ae3a4d0f1
// flow-typed version: <<STUB>>/karma-sourcemap-loader_v^0.3.7/flow_v0.42.0

/**
 * This is an autogenerated libdef stub for:
 *
 *   'karma-sourcemap-loader'
 *
 * 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-sourcemap-loader' {
  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.
 */


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