// flow-typed signature: 77087eb25686219194e4dbba6f9cd202
// flow-typed version: <<STUB>>/rollup-plugin-node-resolve_v^2.0.0/flow_v0.42.0

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

declare module 'rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es6' {
  declare module.exports: any;
}

declare module 'rollup-plugin-node-resolve/src/empty' {
  declare module.exports: any;
}

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

// Filename aliases
declare module 'rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js' {
  declare module.exports: $Exports<'rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs'>;
}
declare module 'rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es6.js' {
  declare module.exports: $Exports<'rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es6'>;
}
declare module 'rollup-plugin-node-resolve/src/empty.js' {
  declare module.exports: $Exports<'rollup-plugin-node-resolve/src/empty'>;
}
declare module 'rollup-plugin-node-resolve/src/index.js' {
  declare module.exports: $Exports<'rollup-plugin-node-resolve/src/index'>;
}
