/** C8 fails in type-only files. */
import { type AnyFunction, type MaybePromise } from '@augment-vir/core';
import { type AssertFunction } from './assert-function.js';
import { type WaitUntilOverridesBase } from './wait-until-function.js';
export type AssertWrapOverridesBase<Keys extends PropertyKey = string> = Partial<Readonly<Record<Keys, AnyFunction | undefined>>>;
export type CheckFunction<Output> = (input: any, ...extraInputs: any[]) => input is Output;
export type GenericCheckFunction = (input: any, ...extraInputs: any[]) => MaybePromise<boolean> | never;
export type CheckOverridesBase<Keys extends PropertyKey = string> = Partial<Readonly<Record<Keys, CheckFunction<any> | GenericCheckFunction | undefined>>>;
export type GuardGroup<Assertions extends Record<string, AssertFunction<any>>> = {
    assert: Assertions;
    check: CheckOverridesBase<keyof Assertions>;
    assertWrap: AssertWrapOverridesBase<keyof Assertions>;
    checkWrap: AssertWrapOverridesBase<keyof Assertions>;
    waitUntil: WaitUntilOverridesBase<keyof Assertions>;
};
