import type { ReactElement } from 'react'; import type { IfAllOptionalKeys } from '@shopify/useful-types'; import type { Options as RootOptions } from './root'; import { Root } from './root'; import { Element } from './element'; export { Root, Element }; export declare function mount(element: ReactElement): Root; type AfterMountOption = Async extends true ? { afterMount(wrapper: CustomRoot, options: MountOptions): PromiseLike; } : { afterMount?(wrapper: CustomRoot, options: MountOptions): void; }; type ContextOption = IfAllOptionalKeys; interface Cleanup { cleanup?(wrapper: CustomRoot, options: MountOptions): void; } export type CustomMountOptions = { render(element: ReactElement, context: Context, options: MountOptions): ReactElement; } & ContextOption & AfterMountOption & Cleanup; export interface CustomMount { (...args: IfAllOptionalKeys, MountOptions? ], [ ReactElement, MountOptions ]>): CustomMountResult; extend(options: CustomMountOptions): CustomMount; } type CustomMountResult = Async extends true ? Promise> : CustomRoot; export declare class CustomRoot extends Root { readonly context: Context; constructor(tree: ReactElement, context: Context, options?: RootOptions); } export declare function createMount({ render, context: createContext, afterMount, cleanup, }: CustomMountOptions): CustomMount; //# sourceMappingURL=mount.d.ts.map