import { type AnyFunction, type MaybePromise, type NarrowToExpected, type PartialWithUndefined, type RemoveFirstTupleEntry, type RemoveLastTupleEntry, type RequiredAndNotNull } from '@augment-vir/core'; import { type AnyDuration } from '@date-vir/duration'; import { type AssertFunction } from './assert-function.js'; /** * Options for configuring the timing of `waitUntil`. * * @category Assert : Util * @category Package : @augment-vir/assert * @package [`@augment-vir/assert`](https://www.npmjs.com/package/@augment-vir/assert) */ export type WaitUntilOptions = PartialWithUndefined<{ /** * The duration between attempts. * * @default {milliseconds: 100} */ interval: AnyDuration; /** * The maximum duration to keep trying. If the `waitUntil` expectations are still not met by * this time, an {@link AssertionError} will be thrown. * * @default {seconds: 10} */ timeout: AnyDuration; }>; export declare const defaultWaitUntilOptions: RequiredAndNotNull; export declare function executeWaitUntil>(this: void, assert: AssertFunction, rawArgs: unknown[], requireSynchronousResult: boolean): Promise>>; export type WaitUntilOverridesBase = Readonly>>; export type WaitUntilFunctionParameters, Input> = [ ...RemoveFirstTupleEntry>>, () => MaybePromise ]; export type WaitUntilFunction> = Assert extends AssertFunction ? [0]>(this: void, ...params: [ ...WaitUntilFunctionParameters, options?: WaitUntilOptions | undefined, failureMessage?: string | undefined ]) => Promise> : never; export declare function createWaitUntil>(assert: Assert, requireSynchronousResult?: boolean): WaitUntilFunction; export declare function parseWaitUntilArgs(rawArgs: unknown[]): { callback: AnyFunction; options: RequiredAndNotNull>; extraAssertionArgs: unknown[]; failureMessage: string | undefined; }; export declare function parseWaitUntilOptions(rawOptions: WaitUntilOptions | undefined): RequiredAndNotNull;