import { Alepha } from "alepha";
import { ReactElement, ReactNode } from "react";
import "react-dom/test-utils";
import * as ReactDOMClient from "react-dom/client";
import { ARIARole } from "aria-query";
//#region ../../../../node_modules/@testing-library/dom/types/matches.d.ts
type MatcherFunction = (content: string, element: Element | null) => boolean;
type Matcher = MatcherFunction | RegExp | number | string;
// Get autocomplete for ARIARole union types, while still supporting another string
// Ref: https://github.com/microsoft/TypeScript/issues/29729#issuecomment-567871939
type ByRoleMatcher = ARIARole | (string & {});
type NormalizerFn = (text: string) => string;
interface MatcherOptions {
  exact?: boolean;
  /** Use normalizer with getDefaultNormalizer instead */
  trim?: boolean;
  /** Use normalizer with getDefaultNormalizer instead */
  collapseWhitespace?: boolean;
  normalizer?: NormalizerFn;
  /** suppress suggestions for a specific query */
  suggest?: boolean;
}
//#endregion
//#region ../../../../node_modules/@testing-library/dom/types/wait-for.d.ts
interface waitForOptions {
  container?: HTMLElement;
  timeout?: number;
  interval?: number;
  onTimeout?: (error: Error) => Error;
  mutationObserverOptions?: MutationObserverInit;
}
//#endregion
//#region ../../../../node_modules/@testing-library/dom/types/query-helpers.d.ts
interface SelectorMatcherOptions extends MatcherOptions {
  selector?: string;
  ignore?: boolean | string;
}
declare namespace queries_d_exports {
  export { AllByBoundAttribute, AllByRole, AllByText, ByRoleOptions, FindAllByBoundAttribute, FindAllByRole, FindAllByText, FindByBoundAttribute, FindByRole, FindByText, GetByBoundAttribute, GetByRole, GetByText, QueryByBoundAttribute, QueryByRole, QueryByText, findAllByAltText, findAllByDisplayValue, findAllByLabelText, findAllByPlaceholderText, findAllByRole, findAllByTestId, findAllByText, findAllByTitle, findByAltText, findByDisplayValue, findByLabelText, findByPlaceholderText, findByRole, findByTestId, findByText, findByTitle, getAllByAltText, getAllByDisplayValue, getAllByLabelText, getAllByPlaceholderText, getAllByRole, getAllByTestId, getAllByText, getAllByTitle, getByAltText, getByDisplayValue, getByLabelText, getByPlaceholderText, getByRole, getByTestId, getByText, getByTitle, queryAllByAltText, queryAllByDisplayValue, queryAllByLabelText, queryAllByPlaceholderText, queryAllByRole, queryAllByTestId, queryAllByText, queryAllByTitle, queryByAltText, queryByDisplayValue, queryByLabelText, queryByPlaceholderText, queryByRole, queryByTestId, queryByText, queryByTitle };
}
type QueryByBoundAttribute<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: MatcherOptions) => T | null;
type AllByBoundAttribute<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: MatcherOptions) => T[];
type FindAllByBoundAttribute<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: MatcherOptions, waitForElementOptions?: waitForOptions) => Promise<T[]>;
type GetByBoundAttribute<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: MatcherOptions) => T;
type FindByBoundAttribute<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: MatcherOptions, waitForElementOptions?: waitForOptions) => Promise<T>;
type QueryByText<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: SelectorMatcherOptions) => T | null;
type AllByText<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: SelectorMatcherOptions) => T[];
type FindAllByText<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: SelectorMatcherOptions, waitForElementOptions?: waitForOptions) => Promise<T[]>;
type GetByText<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: SelectorMatcherOptions) => T;
type FindByText<T extends HTMLElement = HTMLElement> = (container: HTMLElement, id: Matcher, options?: SelectorMatcherOptions, waitForElementOptions?: waitForOptions) => Promise<T>;
interface ByRoleOptions {
  /** suppress suggestions for a specific query */
  suggest?: boolean;
  /**
   * If true includes elements in the query set that are usually excluded from
   * the accessibility tree. `role="none"` or `role="presentation"` are included
   * in either case.
   */
  hidden?: boolean;
  /**
   * If true only includes elements in the query set that are marked as
   * selected in the accessibility tree, i.e., `aria-selected="true"`
   */
  selected?: boolean;
  /**
   * If true only includes elements in the query set that are marked as
   * busy in the accessibility tree, i.e., `aria-busy="true"`
   */
  busy?: boolean;
  /**
   * If true only includes elements in the query set that are marked as
   * checked in the accessibility tree, i.e., `aria-checked="true"`
   */
  checked?: boolean;
  /**
   * If true only includes elements in the query set that are marked as
   * pressed in the accessibility tree, i.e., `aria-pressed="true"`
   */
  pressed?: boolean;
  /**
   * Filters elements by their `aria-current` state. `true` and `false` match `aria-current="true"` and `aria-current="false"` (as well as a missing `aria-current` attribute) respectively.
   */
  current?: boolean | string;
  /**
   * If true only includes elements in the query set that are marked as
   * expanded in the accessibility tree, i.e., `aria-expanded="true"`
   */
  expanded?: boolean;
  /**
   * Includes elements with the `"heading"` role matching the indicated level,
   * either by the semantic HTML heading elements `<h1>-<h6>` or matching
   * the `aria-level` attribute.
   */
  level?: number;
  value?: {
    now?: number;
    min?: number;
    max?: number;
    text?: Matcher;
  };
  /**
   * Includes every role used in the `role` attribute
   * For example *ByRole('progressbar', {queryFallbacks: true})` will find <div role="meter progressbar">`.
   */
  queryFallbacks?: boolean;
  /**
   * Only considers elements with the specified accessible name.
   */
  name?: RegExp | string | ((accessibleName: string, element: Element) => boolean);
  /**
   * Only considers elements with the specified accessible description.
   */
  description?: RegExp | string | ((accessibleDescription: string, element: Element) => boolean);
}
type AllByRole<T extends HTMLElement = HTMLElement> = (container: HTMLElement, role: ByRoleMatcher, options?: ByRoleOptions) => T[];
type GetByRole<T extends HTMLElement = HTMLElement> = (container: HTMLElement, role: ByRoleMatcher, options?: ByRoleOptions) => T;
type QueryByRole<T extends HTMLElement = HTMLElement> = (container: HTMLElement, role: ByRoleMatcher, options?: ByRoleOptions) => T | null;
type FindByRole<T extends HTMLElement = HTMLElement> = (container: HTMLElement, role: ByRoleMatcher, options?: ByRoleOptions, waitForElementOptions?: waitForOptions) => Promise<T>;
type FindAllByRole<T extends HTMLElement = HTMLElement> = (container: HTMLElement, role: ByRoleMatcher, options?: ByRoleOptions, waitForElementOptions?: waitForOptions) => Promise<T[]>;
declare function getByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByText<T>>): ReturnType<GetByText<T>>;
declare function getAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByText<T>>): ReturnType<AllByText<T>>;
declare function queryByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByText<T>>): ReturnType<QueryByText<T>>;
declare function queryAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByText<T>>): ReturnType<AllByText<T>>;
declare function findByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByText<T>>): ReturnType<FindByText<T>>;
declare function findAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByText<T>>): ReturnType<FindAllByText<T>>;
declare function getByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByBoundAttribute<T>>): ReturnType<GetByBoundAttribute<T>>;
declare function getAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function queryByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByBoundAttribute<T>>): ReturnType<QueryByBoundAttribute<T>>;
declare function queryAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function findByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByBoundAttribute<T>>): ReturnType<FindByBoundAttribute<T>>;
declare function findAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByBoundAttribute<T>>): ReturnType<FindAllByBoundAttribute<T>>;
declare function getByText<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByText<T>>): ReturnType<GetByText<T>>;
declare function getAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByText<T>>): ReturnType<AllByText<T>>;
declare function queryByText<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByText<T>>): ReturnType<QueryByText<T>>;
declare function queryAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByText<T>>): ReturnType<AllByText<T>>;
declare function findByText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByText<T>>): ReturnType<FindByText<T>>;
declare function findAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByText<T>>): ReturnType<FindAllByText<T>>;
declare function getByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByBoundAttribute<T>>): ReturnType<GetByBoundAttribute<T>>;
declare function getAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function queryByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByBoundAttribute<T>>): ReturnType<QueryByBoundAttribute<T>>;
declare function queryAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function findByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByBoundAttribute<T>>): ReturnType<FindByBoundAttribute<T>>;
declare function findAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByBoundAttribute<T>>): ReturnType<FindAllByBoundAttribute<T>>;
declare function getByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByBoundAttribute<T>>): ReturnType<GetByBoundAttribute<T>>;
declare function getAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function queryByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByBoundAttribute<T>>): ReturnType<QueryByBoundAttribute<T>>;
declare function queryAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function findByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByBoundAttribute<T>>): ReturnType<FindByBoundAttribute<T>>;
declare function findAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByBoundAttribute<T>>): ReturnType<FindAllByBoundAttribute<T>>;
declare function getByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByBoundAttribute<T>>): ReturnType<GetByBoundAttribute<T>>;
declare function getAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function queryByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByBoundAttribute<T>>): ReturnType<QueryByBoundAttribute<T>>;
declare function queryAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function findByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByBoundAttribute<T>>): ReturnType<FindByBoundAttribute<T>>;
declare function findAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByBoundAttribute<T>>): ReturnType<FindAllByBoundAttribute<T>>;
declare function getByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByRole<T>>): ReturnType<GetByRole<T>>;
declare function getAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByRole<T>>): ReturnType<AllByRole<T>>;
declare function queryByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByRole<T>>): ReturnType<QueryByRole<T>>;
declare function queryAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByRole<T>>): ReturnType<AllByRole<T>>;
declare function findByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByRole<T>>): ReturnType<FindByRole<T>>;
declare function findAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByRole<T>>): ReturnType<FindAllByRole<T>>;
declare function getByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<GetByBoundAttribute<T>>): ReturnType<GetByBoundAttribute<T>>;
declare function getAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function queryByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<QueryByBoundAttribute<T>>): ReturnType<QueryByBoundAttribute<T>>;
declare function queryAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<AllByBoundAttribute<T>>): ReturnType<AllByBoundAttribute<T>>;
declare function findByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<FindByBoundAttribute<T>>): ReturnType<FindByBoundAttribute<T>>;
declare function findAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<FindAllByBoundAttribute<T>>): ReturnType<FindAllByBoundAttribute<T>>;
//#endregion
//#region ../../../../node_modules/@testing-library/dom/types/get-queries-for-element.d.ts
type BoundFunction<T> = T extends ((container: HTMLElement, ...args: infer P) => infer R) ? (...args: P) => R : never;
type BoundFunctions<Q> = Q extends typeof queries_d_exports ? {
  getByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByText<T>>>): ReturnType<GetByText<T>>;
  getAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByText<T>>>): ReturnType<AllByText<T>>;
  queryByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByText<T>>>): ReturnType<QueryByText<T>>;
  queryAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByText<T>>>): ReturnType<AllByText<T>>;
  findByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByText<T>>>): ReturnType<FindByText<T>>;
  findAllByLabelText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByText<T>>>): ReturnType<FindAllByText<T>>;
  getByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByBoundAttribute<T>>>): ReturnType<GetByBoundAttribute<T>>;
  getAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  queryByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByBoundAttribute<T>>>): ReturnType<QueryByBoundAttribute<T>>;
  queryAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  findByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByBoundAttribute<T>>>): ReturnType<FindByBoundAttribute<T>>;
  findAllByPlaceholderText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByBoundAttribute<T>>>): ReturnType<FindAllByBoundAttribute<T>>;
  getByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByText<T>>>): ReturnType<GetByText<T>>;
  getAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByText<T>>>): ReturnType<AllByText<T>>;
  queryByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByText<T>>>): ReturnType<QueryByText<T>>;
  queryAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByText<T>>>): ReturnType<AllByText<T>>;
  findByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByText<T>>>): ReturnType<FindByText<T>>;
  findAllByText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByText<T>>>): ReturnType<FindAllByText<T>>;
  getByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByBoundAttribute<T>>>): ReturnType<GetByBoundAttribute<T>>;
  getAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  queryByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByBoundAttribute<T>>>): ReturnType<QueryByBoundAttribute<T>>;
  queryAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  findByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByBoundAttribute<T>>>): ReturnType<FindByBoundAttribute<T>>;
  findAllByAltText<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByBoundAttribute<T>>>): ReturnType<FindAllByBoundAttribute<T>>;
  getByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByBoundAttribute<T>>>): ReturnType<GetByBoundAttribute<T>>;
  getAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  queryByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByBoundAttribute<T>>>): ReturnType<QueryByBoundAttribute<T>>;
  queryAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  findByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByBoundAttribute<T>>>): ReturnType<FindByBoundAttribute<T>>;
  findAllByTitle<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByBoundAttribute<T>>>): ReturnType<FindAllByBoundAttribute<T>>;
  getByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByBoundAttribute<T>>>): ReturnType<GetByBoundAttribute<T>>;
  getAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  queryByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByBoundAttribute<T>>>): ReturnType<QueryByBoundAttribute<T>>;
  queryAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  findByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByBoundAttribute<T>>>): ReturnType<FindByBoundAttribute<T>>;
  findAllByDisplayValue<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByBoundAttribute<T>>>): ReturnType<FindAllByBoundAttribute<T>>;
  getByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByRole<T>>>): ReturnType<GetByRole<T>>;
  getAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByRole<T>>>): ReturnType<AllByRole<T>>;
  queryByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByRole<T>>>): ReturnType<QueryByRole<T>>;
  queryAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByRole<T>>>): ReturnType<AllByRole<T>>;
  findByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByRole<T>>>): ReturnType<FindByRole<T>>;
  findAllByRole<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByRole<T>>>): ReturnType<FindAllByRole<T>>;
  getByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<GetByBoundAttribute<T>>>): ReturnType<GetByBoundAttribute<T>>;
  getAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  queryByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<QueryByBoundAttribute<T>>>): ReturnType<QueryByBoundAttribute<T>>;
  queryAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<AllByBoundAttribute<T>>>): ReturnType<AllByBoundAttribute<T>>;
  findByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindByBoundAttribute<T>>>): ReturnType<FindByBoundAttribute<T>>;
  findAllByTestId<T extends HTMLElement = HTMLElement>(...args: Parameters<BoundFunction<FindAllByBoundAttribute<T>>>): ReturnType<FindAllByBoundAttribute<T>>;
} & { [P in keyof Q]: BoundFunction<Q[P]>; } : { [P in keyof Q]: BoundFunction<Q[P]>; };
type Query = (container: HTMLElement, ...args: any[]) => Error | HTMLElement | HTMLElement[] | Promise<HTMLElement[]> | Promise<HTMLElement> | null;
interface Queries {
  [T: string]: Query;
}
//#endregion
//#region ../../../../node_modules/pretty-format/build/types.d.ts
/**
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
declare type Colors = {
  comment: {
    close: string;
    open: string;
  };
  content: {
    close: string;
    open: string;
  };
  prop: {
    close: string;
    open: string;
  };
  tag: {
    close: string;
    open: string;
  };
  value: {
    close: string;
    open: string;
  };
};
declare type Indent = (arg0: string) => string;
declare type Refs = Array<unknown>;
declare type Print = (arg0: unknown) => string;
declare type ThemeReceived = {
  comment?: string;
  content?: string;
  prop?: string;
  tag?: string;
  value?: string;
};
declare type CompareKeys = ((a: string, b: string) => number) | undefined;
interface PrettyFormatOptions {
  callToJSON?: boolean;
  compareKeys?: CompareKeys;
  escapeRegex?: boolean;
  escapeString?: boolean;
  highlight?: boolean;
  indent?: number;
  maxDepth?: number;
  min?: boolean;
  plugins?: Plugins;
  printBasicPrototype?: boolean;
  printFunctionName?: boolean;
  theme?: ThemeReceived;
}
declare type OptionsReceived = PrettyFormatOptions;
declare type Config = {
  callToJSON: boolean;
  compareKeys: CompareKeys;
  colors: Colors;
  escapeRegex: boolean;
  escapeString: boolean;
  indent: string;
  maxDepth: number;
  min: boolean;
  plugins: Plugins;
  printBasicPrototype: boolean;
  printFunctionName: boolean;
  spacingInner: string;
  spacingOuter: string;
};
declare type Printer = (val: unknown, config: Config, indentation: string, depth: number, refs: Refs, hasCalledToJSON?: boolean) => string;
declare type Test = (arg0: any) => boolean;
declare type NewPlugin = {
  serialize: (val: any, config: Config, indentation: string, depth: number, refs: Refs, printer: Printer) => string;
  test: Test;
};
declare type PluginOptions = {
  edgeSpacing: string;
  min: boolean;
  spacing: string;
};
declare type OldPlugin = {
  print: (val: unknown, print: Print, indent: Indent, options: PluginOptions, colors: Colors) => string;
  test: Test;
};
declare type Plugin = NewPlugin | OldPlugin;
declare type Plugins = Array<Plugin>;
//#endregion
//#region ../../../../node_modules/@testing-library/dom/types/screen.d.ts
type Screen<Q extends Queries = typeof queries_d_exports> = BoundFunctions<Q> & {
  /**
   * Convenience function for `pretty-dom` which also allows an array
   * of elements
   */
  debug: (element?: Array<Element | HTMLDocument> | Element | HTMLDocument, maxLength?: number, options?: OptionsReceived) => void;
  /**
   * Convenience function for `Testing Playground` which logs and returns the URL that
   * can be opened in a browser
   */
  logTestingPlaygroundURL: (element?: Element | HTMLDocument) => string;
};
//#endregion
//#region ../../../../node_modules/@testing-library/react/types/index.d.ts
type RenderResult<Q extends Queries = typeof queries_d_exports, Container extends RendererableContainer | HydrateableContainer = HTMLElement, BaseElement extends RendererableContainer | HydrateableContainer = Container> = {
  container: Container;
  baseElement: BaseElement;
  debug: (baseElement?: RendererableContainer | HydrateableContainer | Array<RendererableContainer | HydrateableContainer> | undefined, maxLength?: number | undefined, options?: OptionsReceived | undefined) => void;
  rerender: (ui: React.ReactNode) => void;
  unmount: () => void;
  asFragment: () => DocumentFragment;
} & { [P in keyof Q]: BoundFunction<Q[P]>; };
type RendererableContainer = ReactDOMClient.Container;
type HydrateableContainer = Parameters<typeof ReactDOMClient['hydrateRoot']>[0];
interface RenderOptions<Q extends Queries = typeof queries_d_exports, Container extends RendererableContainer | HydrateableContainer = HTMLElement, BaseElement extends RendererableContainer | HydrateableContainer = Container> {
  /**
   * By default, React Testing Library will create a div and append that div to the document.body. Your React component will be rendered in the created div. If you provide your own HTMLElement container via this option,
   *  it will not be appended to the document.body automatically.
   *
   *  For example: If you are unit testing a `<tbody>` element, it cannot be a child of a div. In this case, you can
   *  specify a table as the render container.
   *
   *  @see https://testing-library.com/docs/react-testing-library/api/#container
   */
  container?: Container | undefined;
  /**
   * Defaults to the container if the container is specified. Otherwise `document.body` is used for the default. This is used as
   *  the base element for the queries as well as what is printed when you use `debug()`.
   *
   *  @see https://testing-library.com/docs/react-testing-library/api/#baseelement
   */
  baseElement?: BaseElement | undefined;
  /**
   * If `hydrate` is set to `true`, then it will render with `ReactDOM.hydrate`. This may be useful if you are using server-side
   *  rendering and use ReactDOM.hydrate to mount your components.
   *
   *  @see https://testing-library.com/docs/react-testing-library/api/#hydrate)
   */
  hydrate?: boolean | undefined;
  /**
   * Only works if used with React 18.
   * Set to `true` if you want to force synchronous `ReactDOM.render`.
   * Otherwise `render` will default to concurrent React if available.
   */
  legacyRoot?: boolean | undefined;
  /**
   * Only supported in React 19.
   * Callback called when React catches an error in an Error Boundary.
   * Called with the error caught by the Error Boundary, and an `errorInfo` object containing the `componentStack`.
   *
   * @see {@link https://react.dev/reference/react-dom/client/createRoot#parameters createRoot#options}
   */
  onCaughtError?: ReactDOMClient.RootOptions extends {
    onCaughtError?: infer OnCaughtError;
  } ? OnCaughtError : never;
  /**
   * Callback called when React automatically recovers from errors.
   * Called with an error React throws, and an `errorInfo` object containing the `componentStack`.
   * Some recoverable errors may include the original error cause as `error.cause`.
   *
   * @see {@link https://react.dev/reference/react-dom/client/createRoot#parameters createRoot#options}
   */
  onRecoverableError?: ReactDOMClient.RootOptions['onRecoverableError'];
  /**
   * Not supported at the moment
   */
  onUncaughtError?: never;
  /**
   * Queries to bind. Overrides the default set from DOM Testing Library unless merged.
   *
   *  @see https://testing-library.com/docs/react-testing-library/api/#queries
   */
  queries?: Q | undefined;
  /**
   * Pass a React Component as the wrapper option to have it rendered around the inner element. This is most useful for creating
   *  reusable custom render functions for common data providers. See setup for examples.
   *
   *  @see https://testing-library.com/docs/react-testing-library/api/#wrapper
   */
  wrapper?: React.JSXElementConstructor<{
    children: React.ReactNode;
  }> | undefined;
  /**
   * When enabled, <StrictMode> is rendered around the inner element.
   * If defined, overrides the value of `reactStrictMode` set in `configure`.
   */
  reactStrictMode?: boolean;
}
//#endregion
//#region ../../src/react/testing/form.d.ts
/**
 * Options for fillForm helper.
 */
interface FillFormOptions {
  /**
   * Timeout for waiting for elements to appear.
   * @default 1000
   */
  timeout?: number;
}
/**
 * Fill form fields by their values.
 *
 * This helper finds form inputs by their test IDs (based on form ID and field name)
 * and sets their values using fireEvent.
 *
 * @param screen - The screen object from @testing-library/react
 * @param formId - The form's ID (used to construct test IDs)
 * @param values - Object with field names as keys and values to fill
 * @param options - Fill options
 *
 * @example
 * ```tsx
 * import { fillForm } from "alepha/react/testing";
 *
 * // For a form with id="user-form" and fields: name, email, age
 * await fillForm(screen, "user-form", {
 *   name: "Alice",
 *   email: "alice@example.com",
 *   age: 30,
 * });
 * ```
 *
 * @example
 * ```tsx
 * // For nested fields (e.g., address.city)
 * await fillForm(screen, "user-form", {
 *   "address.city": "New York",
 *   "address.zip": "10001",
 * });
 * ```
 */
declare const fillForm: (screen: Screen, formId: string, values: Record<string, string | number | boolean>, options?: FillFormOptions) => Promise<void>;
/**
 * Fill a single form field by its test ID.
 *
 * @param screen - The screen object from @testing-library/react
 * @param testId - The element's test ID
 * @param value - The value to set
 *
 * @example
 * ```tsx
 * import { fillField } from "alepha/react/testing";
 *
 * await fillField(screen, "user-form-email", "alice@example.com");
 * ```
 */
declare const fillField: (screen: Screen, testId: string, value: string | number | boolean) => Promise<void>;
/**
 * Options for submitForm helper.
 */
interface SubmitFormOptions {
  /**
   * Text of the submit button to click.
   * @default "Submit"
   */
  submitButtonText?: string;
  /**
   * Timeout for waiting for submission to complete.
   * @default 1000
   */
  timeout?: number;
  /**
   * Whether to wait for a form:submit:success event.
   * @default false
   */
  waitForSuccess?: boolean;
}
/**
 * Submit a form by clicking the submit button.
 *
 * @param screen - The screen object from @testing-library/react
 * @param options - Submit options
 *
 * @example
 * ```tsx
 * import { submitForm } from "alepha/react/testing";
 *
 * // Submit by clicking "Submit" button (default)
 * await submitForm(screen);
 *
 * // Submit by clicking a custom button
 * await submitForm(screen, { submitButtonText: "Save" });
 * ```
 */
declare const submitForm: (screen: Screen, options?: SubmitFormOptions) => Promise<void>;
/**
 * Reset a form by clicking the reset button.
 *
 * @param screen - The screen object from @testing-library/react
 * @param resetButtonText - Text of the reset button
 *
 * @example
 * ```tsx
 * import { resetForm } from "alepha/react/testing";
 *
 * await resetForm(screen); // Clicks "Reset" button
 * await resetForm(screen, "Clear"); // Clicks "Clear" button
 * ```
 */
declare const resetForm: (screen: Screen, resetButtonText?: string) => Promise<void>;
/**
 * Wait for a form submission to complete by listening for the form:submit:end event.
 *
 * @param alepha - The Alepha instance
 * @param formId - The form's ID
 * @param timeout - Maximum time to wait in ms
 *
 * @example
 * ```tsx
 * import { waitForFormSubmit } from "alepha/react/testing";
 *
 * fireEvent.click(submitButton);
 * await waitForFormSubmit(alepha, "my-form");
 * // Form submission is now complete
 * ```
 */
declare const waitForFormSubmit: (alepha: {
  events: {
    once: (event: string, handler: (data: any) => void) => () => void;
  };
}, formId: string, timeout?: number) => Promise<void>;
/**
 * Toggle a switch or checkbox element.
 *
 * @param screen - The screen object from @testing-library/react
 * @param role - The role to find the element by ("switch" or "checkbox")
 * @param name - Optional accessible name to find a specific element
 *
 * @example
 * ```tsx
 * import { toggleSwitch } from "alepha/react/testing";
 *
 * // Toggle the first switch on the page
 * await toggleSwitch(screen, "switch");
 *
 * // Toggle a specific switch by its label
 * await toggleSwitch(screen, "switch", "Enable notifications");
 * ```
 */
declare const toggleSwitch: (screen: Screen, role?: "switch" | "checkbox", name?: string) => Promise<void>;
//#endregion
//#region ../../src/react/testing/render.d.ts
/**
 * Options for renderWithAlepha.
 */
interface RenderWithAlephaOptions extends Omit<RenderOptions, "wrapper"> {
  /**
   * Pre-configured Alepha instance to use.
   * If not provided, a new instance with AlephaLogger will be created.
   */
  alepha?: Alepha;
  /**
   * Whether to automatically start the Alepha instance.
   * @default true
   */
  autoStart?: boolean;
  /**
   * Wrapper component to wrap around the rendered element.
   * Use this for UI framework providers (theme, etc.) or custom context providers.
   *
   * @example
   * ```tsx
   * import { ThemeProvider } from "my-ui-library";
   * renderWithAlepha(<MyComponent />, { wrapper: ThemeProvider });
   * ```
   */
  wrapper?: React.ComponentType<{
    children: ReactNode;
  }>;
}
/**
 * Result of renderWithAlepha, extending the standard render result.
 */
interface RenderWithAlephaResult extends RenderResult {
  /**
   * The Alepha instance used for rendering.
   */
  alepha: Alepha;
}
/**
 * Render a React element with Alepha context for testing.
 *
 * This is a convenience wrapper around `@testing-library/react`'s `render` function
 * that automatically sets up the AlephaContext.Provider.
 *
 * @param element - The React element to render
 * @param options - Render options
 * @returns The render result with the Alepha instance
 *
 * @example
 * ```tsx
 * import { renderWithAlepha } from "alepha/react/testing";
 *
 * test("renders component", async () => {
 *   const { alepha, getByText } = await renderWithAlepha(<MyComponent />);
 *
 *   expect(getByText("Hello")).toBeDefined();
 * });
 * ```
 *
 * @example
 * ```tsx
 * // With custom Alepha configuration
 * import { renderWithAlepha } from "alepha/react/testing";
 * import { MyService, MockService } from "./services";
 *
 * test("renders with mocked service", async () => {
 *   const alepha = Alepha.create().with({ provide: MyService, use: MockService });
 *
 *   const { getByText } = await renderWithAlepha(<MyComponent />, { alepha });
 *
 *   expect(getByText("Mocked")).toBeDefined();
 * });
 * ```
 *
 * @example
 * ```tsx
 * // With UI framework provider
 * import { renderWithAlepha } from "alepha/react/testing";
 * import { ThemeProvider } from "my-ui-library";
 *
 * test("renders themed component", async () => {
 *   const { getByRole } = await renderWithAlepha(
 *     <Button>Click me</Button>,
 *     { wrapper: ThemeProvider }
 *   );
 *
 *   expect(getByRole("button")).toBeDefined();
 * });
 * ```
 */
declare const renderWithAlepha: (element: ReactElement, options?: RenderWithAlephaOptions) => Promise<RenderWithAlephaResult>;
/**
 * Synchronous version of renderWithAlepha for cases where you don't need to await.
 * Note: If autoStart is true (default), you should use the async version instead.
 *
 * @param element - The React element to render
 * @param options - Render options (autoStart defaults to false)
 * @returns The render result with the Alepha instance
 */
declare const renderWithAlephaSync: (element: ReactElement, options?: RenderWithAlephaOptions) => RenderWithAlephaResult;
//#endregion
//#region ../../src/react/testing/setup.d.ts
/**
 * Setup jsdom mocks required for testing React components that use browser APIs.
 * This includes mocks needed by Mantine UI components and other common browser APIs.
 *
 * Call this in your test setup (e.g., `beforeAll`) before rendering any components.
 *
 * @example
 * ```typescript
 * import { setupJsdomMocks } from "alepha/react/testing";
 *
 * beforeAll(() => {
 *   setupJsdomMocks();
 * });
 * ```
 */
declare const setupJsdomMocks: () => void;
/**
 * Type declarations for mocked APIs.
 */
declare global {
  interface Window {
    ResizeObserver: typeof ResizeObserver;
    IntersectionObserver: typeof IntersectionObserver;
  }
}
//#endregion
//#region ../../src/react/testing/index.d.ts
/**
 * Testing utilities for Alepha React applications.
 *
 * **Features:**
 * - `renderWithAlepha()` - Render components with Alepha context
 * - `fillForm()` / `submitForm()` - Form testing helpers
 * - `setupJsdomMocks()` - Mock browser APIs for jsdom
 *
 * @module alepha.react.testing
 *
 * @example
 * ```tsx
 * import { renderWithAlepha, fillForm, submitForm, setupJsdomMocks } from "alepha/react/testing";
 *
 * // Setup mocks before tests
 * beforeAll(() => {
 *   setupJsdomMocks();
 * });
 *
 * test("form submission", async () => {
 *   const { alepha, screen } = renderWithAlepha(<MyForm />);
 *
 *   // Fill form fields by their schema keys
 *   await fillForm(screen, "my-form", { name: "Alice", age: 30 });
 *
 *   // Submit and wait for handler
 *   await submitForm(screen);
 * });
 * ```
 */
declare const AlephaReactTesting: import("alepha").Service<import("alepha").Module>;
//#endregion
export { AlephaReactTesting, FillFormOptions, RenderWithAlephaOptions, RenderWithAlephaResult, SubmitFormOptions, fillField, fillForm, renderWithAlepha, renderWithAlephaSync, resetForm, setupJsdomMocks, submitForm, toggleSwitch, waitForFormSubmit };
//# sourceMappingURL=index.d.ts.map