import "vue";
import "@vue/test-utils";
import { RouteLocationRaw } from "vue-router";
//#region src/runtime-utils/utils/suspended.d.ts
type SetupState = Record<string, any>;
type WrapperFnComponent<Fn> = Fn extends ((c: infer C, o: infer _) => infer _) ? C : never;
type WrapperFnOption<Fn> = Fn extends ((c: WrapperFnComponent<Fn>, o: infer O) => infer _) ? O : never;
type WrapperFnResult<Fn> = Fn extends ((c: WrapperFnComponent<Fn>, o: WrapperFnOption<Fn>) => infer R) ? R : never;
type WrapperSuspendedOptions<Fn> = WrapperFnOption<Fn> & {
  /**
   * The initial route, or false to skip the initial route change.
   * @default '/'
   */
  route?: RouteLocationRaw | false;
  /**
   * Enable spy component setup state.
   * @default false
   * @example
   * ```ts
   * const wrapper = await mountSuspended(CustomRandom, { spy: true })
   * vi.mocked(wrapper.setupState.getRandom).mockImplementation(() => 200)
   * await wrapper.find('#random').trigger('click')
   * expect(wrapper.setupState.getRandom).toHaveBeenCalled()
   * ```
   */
  spy?: boolean;
  scoped?: boolean;
};
type WrapperSuspendedResult<Fn> = WrapperFnResult<Fn> & {
  /**
   * The return value of the component setup.
   */
  setupState: SetupState;
};
declare global {
  interface Window {
    __cleanup?: Array<() => void>;
  }
}
//#endregion
export { WrapperSuspendedOptions as n, WrapperSuspendedResult as r, SetupState as t };