// flow-typed signature: 240e95bdb13c3a35f80d872c5f1bfb07
// flow-typed version: <<STUB>>/rollup-plugin-commonjs_v^5.0.4/flow_v0.42.0

/**
 * This is an autogenerated libdef stub for:
 *
 *   'rollup-plugin-commonjs'
 *
 * 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 'rollup-plugin-commonjs' {
  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 'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/ast-utils' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/defaultResolver' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/helpers' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/index' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/transform' {
  declare module.exports: any;
}

declare module 'rollup-plugin-commonjs/src/utils' {
  declare module.exports: any;
}

// Filename aliases
declare module 'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs'>;
}
declare module 'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es'>;
}
declare module 'rollup-plugin-commonjs/src/ast-utils.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/ast-utils'>;
}
declare module 'rollup-plugin-commonjs/src/defaultResolver.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/defaultResolver'>;
}
declare module 'rollup-plugin-commonjs/src/helpers.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/helpers'>;
}
declare module 'rollup-plugin-commonjs/src/index.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/index'>;
}
declare module 'rollup-plugin-commonjs/src/transform.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/transform'>;
}
declare module 'rollup-plugin-commonjs/src/utils.js' {
  declare module.exports: $Exports<'rollup-plugin-commonjs/src/utils'>;
}
