// flow-typed signature: fbafafb5202f0bb33ff57efb91900bbb
// flow-typed version: <<STUB>>/sinon-chai_v^2.8.0/flow_v0.42.0

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

// Filename aliases
declare module 'sinon-chai/lib/sinon-chai.js' {
  declare module.exports: $Exports<'sinon-chai/lib/sinon-chai'>;
}
