// flow-typed signature: 38d6c245fb4a7aae6f6a56abbb4f091a
// flow-typed version: <<STUB>>/macaca-cli_v^1.1.0/flow_v0.42.0

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

declare module 'macaca-cli/lib/common/helper' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/common/logFormatter/index' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/common/logFormatter/performance' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/common/logFormatter/screenshot' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/common/logger' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/index' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/run/index' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/server/index' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/server/server' {
  declare module.exports: any;
}

declare module 'macaca-cli/lib/server/signal' {
  declare module.exports: any;
}

declare module 'macaca-cli/scripts/print' {
  declare module.exports: any;
}

declare module 'macaca-cli/test_ava/ava.test' {
  declare module.exports: any;
}

declare module 'macaca-cli/test_jasmine/jasmine.test' {
  declare module.exports: any;
}

// Filename aliases
declare module 'macaca-cli/lib/common/config.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/config'>;
}
declare module 'macaca-cli/lib/common/helper.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/helper'>;
}
declare module 'macaca-cli/lib/common/logFormatter/index.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/logFormatter/index'>;
}
declare module 'macaca-cli/lib/common/logFormatter/performance.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/logFormatter/performance'>;
}
declare module 'macaca-cli/lib/common/logFormatter/screenshot.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/logFormatter/screenshot'>;
}
declare module 'macaca-cli/lib/common/logger.js' {
  declare module.exports: $Exports<'macaca-cli/lib/common/logger'>;
}
declare module 'macaca-cli/lib/index.js' {
  declare module.exports: $Exports<'macaca-cli/lib/index'>;
}
declare module 'macaca-cli/lib/run/index.js' {
  declare module.exports: $Exports<'macaca-cli/lib/run/index'>;
}
declare module 'macaca-cli/lib/server/index.js' {
  declare module.exports: $Exports<'macaca-cli/lib/server/index'>;
}
declare module 'macaca-cli/lib/server/server.js' {
  declare module.exports: $Exports<'macaca-cli/lib/server/server'>;
}
declare module 'macaca-cli/lib/server/signal.js' {
  declare module.exports: $Exports<'macaca-cli/lib/server/signal'>;
}
declare module 'macaca-cli/scripts/print.js' {
  declare module.exports: $Exports<'macaca-cli/scripts/print'>;
}
declare module 'macaca-cli/test_ava/ava.test.js' {
  declare module.exports: $Exports<'macaca-cli/test_ava/ava.test'>;
}
declare module 'macaca-cli/test_jasmine/jasmine.test.js' {
  declare module.exports: $Exports<'macaca-cli/test_jasmine/jasmine.test'>;
}
