// flow-typed signature: 75b2ed78c4960551e737e2f3c49b68b2
// flow-typed version: <<STUB>>/xml2map_v^1.0.2/flow_v0.42.0

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

declare module 'xml2map/test/xml2map.test' {
  declare module.exports: any;
}

// Filename aliases
declare module 'xml2map/index' {
  declare module.exports: $Exports<'xml2map'>;
}
declare module 'xml2map/index.js' {
  declare module.exports: $Exports<'xml2map'>;
}
declare module 'xml2map/lib/xml2map.js' {
  declare module.exports: $Exports<'xml2map/lib/xml2map'>;
}
declare module 'xml2map/test/xml2map.test.js' {
  declare module.exports: $Exports<'xml2map/test/xml2map.test'>;
}
