import '@testing-library/jest-dom';
import { render, RenderOptions, RenderResult } from '@testing-library/react';
import * as React from 'react';
type UI = Parameters<typeof render>[0];
declare const AllTheProviders: ({ children }: {
    children: React.ReactElement;
}) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
export interface TestOptions extends Omit<RenderOptions, 'wrapper'> {
    /**
     * optional additional wrapper, e.g. Context
     *
     * @example
     * ```ts
     * // single wrapper
     * render(<MyConponent />, {
     *  wrapper: MyContext
     * });
     *
     * // multiple wrapper
     * render(<MyConponent />, {
     *  wrapper: ({ children }) => (
     *    <ContextA>
     *      <ContextB>
     *        {children}
     *      <ContextB />
     *    <ContextA />
     *  )
     * });
     *
     * ```
     */
    wrapper?: typeof AllTheProviders;
}
/**
 * Custom render for @testing-library/react
 *
 * @see https://testing-library.com/docs/react-testing-library/setup#custom-render
 * @param component the component under test
 * @param options customized test options
 */
export declare const customRender: (ui: UI, { wrapper: Wrapper, ...options }?: TestOptions) => RenderResult;
export * from '@testing-library/react';
export { default as userEvent } from '@testing-library/user-event';
export { customRender as render };
/**
 * Validates against common a11y mistakes.
 *
 * Wrapper for jest-axe
 *
 * @example
 * ```jsx
 * it('passes a11y test', async () => {
 *  await testA11Y(<MyComponent />, options);
 * });
 *
 * // sometimes we need to perform interactions first to render conditional UI
 * it('passes a11y test when open', async () => {
 *  const { container } = render(<MyComponent />, options);
 *
 *  fireEvent.click(screen.getByRole('button'));
 *
 *  await testA11Y(container, options);
 * });
 * ```
 *
 * @see https://github.com/nickcolley/jest-axe#testing-react-with-react-testing-library
 */
export declare const testA11y: (ui: UI | Element) => Promise<void>;
export declare const sleep: (time: number) => Promise<void>;
export declare const actSleep: (time: number) => Promise<undefined>;
export declare const mockDrag: (el: Element, options: any[]) => void;
