/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { render as inkRender } from 'ink-testing-library';
import React from 'react';
import { LoadedSettings, type Settings } from '../config/settings.js';
import { type UIState } from '../ui/contexts/UIStateContext.js';
export declare const render: (tree: React.ReactElement) => ReturnType<typeof inkRender>;
export declare const createMockSettings: (overrides: Partial<Settings>) => LoadedSettings;
interface MockRuntimeApi {
    getEphemeralSetting: (key: string) => unknown;
    [key: string]: unknown;
}
export declare const useMockRuntimeApi: () => MockRuntimeApi;
export declare const renderWithProviders: (component: React.ReactElement, { settings, uiState, }?: {
    settings?: LoadedSettings;
    uiState?: Partial<UIState>;
}) => ReturnType<typeof render>;
interface RenderHookResult<T> {
    result: {
        current: T;
    };
    rerender: (props?: unknown) => void;
    unmount: () => void;
}
interface RenderHookOptions<P> {
    initialProps?: P;
    wrapper?: React.ComponentType<{
        children: React.ReactNode;
    }>;
}
export declare function renderHook<T, P = undefined>(hook: (props: P) => T, options?: RenderHookOptions<P>): RenderHookResult<T>;
export declare function cleanup(): void;
export declare const waitFor: (callback: () => void | Promise<void>, options?: {
    timeout?: number;
    interval?: number;
}) => Promise<void>;
export {};
