// flow-typed signature: bc76123b8d3835bf9593da423abe04d7
// flow-typed version: <<STUB>>/rollup-plugin-buble_v^0.14.0/flow_v0.42.0

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

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

// Filename aliases
declare module 'rollup-plugin-buble/dist/rollup-plugin-buble.cjs.js' {
  declare module.exports: $Exports<'rollup-plugin-buble/dist/rollup-plugin-buble.cjs'>;
}
declare module 'rollup-plugin-buble/dist/rollup-plugin-buble.es.js' {
  declare module.exports: $Exports<'rollup-plugin-buble/dist/rollup-plugin-buble.es'>;
}
