import * as React from 'react'; import { IfAllOptionalKeys } from '@shopify/useful-types'; import { Root } from './root'; import { Element } from './element'; export { Root, Element }; export declare function mount(element: React.ReactElement): Root; declare type AfterMountOption = Async extends true ? { afterMount(wrapper: CustomRoot, options: MountOptions): PromiseLike; } : { afterMount?(wrapper: CustomRoot, options: MountOptions): void; }; declare type ContextOption = IfAllOptionalKeys; export declare type CustomMountOptions = { render(element: React.ReactElement, context: Context, options: MountOptions): React.ReactElement; } & ContextOption & AfterMountOption; declare type CustomMount = IfAllOptionalKeys(element: React.ReactElement, options?: MountOptions) => CustomMountResult, (element: React.ReactElement, options: MountOptions) => CustomMountResult>; declare type CustomMountResult = Async extends true ? Promise> : CustomRoot; export declare class CustomRoot extends Root { readonly context: Context; constructor(tree: React.ReactElement, context: Context, resolve: (element: Element) => Element | null); } export declare function createMount({ render, context: createContext, afterMount, }: CustomMountOptions): CustomMount;