{
+ /**
+ * Find every node in the render tree that matches the provided selector.
+ * @param selector The selector to match.
+ */
+ find ;
+
+ /**
+ * Forces a re-render. Useful to run before checking the render output if something external may be updating
+ * the state of the component somewhere.
+ * Returns itself.
+ *
+ * NOTE: can only be called on a wrapper instance that is also the root instance.
+ */
+ update(): this;
+
+ /**
+ * Returns an html-like string of the wrapper for debugging purposes. Useful to print out to the console when
+ * tests are not passing when you expect them to.
+ */
+ debug(): String;
+
+ /**
+ * Returns the type of the current node of this wrapper. If it's a composite component, this will be the
+ * component constructor. If it's native DOM node, it will be a string of the tag name.
+ *
+ * Note: can only be called on a wrapper of a single node.
+ */
+ type(): String | Function;
+
+ /**
+ * Iterates through each node of the current wrapper and executes the provided function with a wrapper around
+ * the corresponding node passed in as the first argument.
+ *
+ * Returns itself.
+ * @param fn A callback to be run for every node in the collection. Should expect a ShallowWrapper as the first
+ * argument, and will be run with a context of the original instance.
+ */
+ forEach(fn: (wrapper: this) => any): this;
+
+ /**
+ * Maps the current array of nodes to another array. Each node is passed in as a ShallowWrapper to the map
+ * function.
+ * Returns an array of the returned values from the mapping function..
+ * @param fn A mapping function to be run for every node in the collection, the results of which will be mapped
+ * to the returned array. Should expect a ShallowWrapper as the first argument, and will be run
+ * with a context of the original instance.
+ */
+ map extends CommonWrapper {
+ shallow(): ShallowWrapper ;
+ render(): CheerioWrapper ;
+ unmount(): ShallowWrapper extends CommonWrapper {
+ unmount(): ReactWrapper extends CommonWrapper {
+
+ }
+
+ /**
+ * Shallow rendering is useful to constrain yourself to testing a component as a unit, and to ensure that
+ * your tests aren't indirectly asserting on behavior of child components.
+ * @param node
+ * @param [options]
+ */
+ export function shallow (node: ReactElement , options?: any): ShallowWrapper ;
+
+ /**
+ * Mounts and renders a react component into the document and provides a testing wrapper around it.
+ * @param node
+ * @param [options]
+ */
+ export function mount (node: ReactElement , options?: any): ReactWrapper ;
+
+ /**
+ * Render react components to static HTML and analyze the resulting HTML structure.
+ * @param node
+ * @param [options]
+ */
+ export function render (node: ReactElement , options?: any): CheerioWrapper ;
+
+ export function describeWithDOM(description: String, fn: Function): void;
+
+ export function spyLifecycle(component: typeof Component): void;
+}
\ No newline at end of file
diff --git a/enzyme/enzyme-tests.tsx b/enzyme/enzyme-tests.tsx
index 4cc45e9fd4..805201e53a 100644
--- a/enzyme/enzyme-tests.tsx
+++ b/enzyme/enzyme-tests.tsx
@@ -73,6 +73,26 @@ namespace ShallowWrapperTest {
boolVal = shallowWrapper.contains(