import type { ArvoTestSuite, IArvoTestFramework } from './types.js';
/**
 * Executes test suites for Arvo event handlers using the provided test framework adapter.
 *
 * This function registers test suites with your test framework (Vitest, Jest, Mocha, etc.)
 * by using the provided adapter. Each test suite can contain multiple configurations and
 * test cases. Test cases execute sequentially with each step receiving output from the
 * previous step, enabling testing of complex event-driven workflows.
 *
 * Features include OpenTelemetry tracing for observability, support for error validation,
 * event output validation, and optional retry logic for flaky tests.
 *
 * @param testSuites - Array of test suites to execute
 * @param adapter - Test framework adapter providing describe, test, and beforeEach functions
 *
 * @example
 * ```typescript
 * import { runArvoTestSuites } from 'arvo-event-handler/test';
 * import { describe, test, beforeEach } from 'vitest';
 *
 * const vitestAdapter = { describe, test, beforeEach };
 *
 * const suites: ArvoTestSuite[] = [
 *   {
 *     config: { name: 'User Handler', handler: userHandler },
 *     cases: [
 *       {
 *         name: 'Should create user and send email',
 *         steps: [
 *           {
 *             input: () => createArvoEvent({}),
 *             expectedEvents: (events) => events.length === 2
 *           },
 *           {
 *             input: (prev) => prev[1], // Use second event from previous step
 *             expectedEvents: (events) => events[0].type === 'email.sent'
 *           }
 *         ]
 *       }
 *     ]
 *   }
 * ];
 *
 * runArvoTestSuites(suites, vitestAdapter);
 * ```
 *
 * @example
 * ```typescript
 * // Testing with retry logic for non-deterministic handlers
 * const suites: ArvoTestSuite[] = [
 *   {
 *     config: { name: 'Flaky Handler', handler: flakyHandler },
 *     cases: [
 *       {
 *         name: 'Should eventually succeed',
 *         steps: [{ input: () => event, expectedEvents: (e) => e.length > 0 }],
 *         repeat: { times: 10, successThreshold: 80 } // 80% success rate required
 *       }
 *     ]
 *   }
 * ];
 *
 * runArvoTestSuites(suites, vitestAdapter);
 * ```
 *
 * @example
 * ```typescript
 * // Testing error cases
 * const suites: ArvoTestSuite[] = [
 *   {
 *     config: { name: 'Error Handler', handler: errorHandler },
 *     cases: [
 *       {
 *         name: 'Should throw validation error',
 *         steps: [
 *           {
 *             input: () => createArvoEvent({}),
 *             expectedError: (error) => error.message.includes('validation')
 *           }
 *         ]
 *       }
 *     ]
 *   }
 * ];
 *
 * runArvoTestSuites(suites, vitestAdapter);
 * ```
 */
export declare const runArvoTestSuites: (testSuites: ArvoTestSuite[], adapter: IArvoTestFramework) => void;
