// flow-typed signature: 815591caa2e3b3cf9763db5e80d01c1c
// flow-typed version: <<STUB>>/macaca-utils_v^0.1.9/flow_v0.42.0

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

declare module 'macaca-utils/test/macaca-utils.test' {
  declare module.exports: any;
}

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