import type { Type } from '@suites/types.common';
import { SuitesError } from '@suites/types.common';
import type { TestBedBuilder } from '@suites/core.unit';
/**
 * Thrown when Suites cannot find a compatible adapter package for the DI framework or mocking library.
 *
 * This occurs when the required adapter package is not installed or cannot be resolved.
 * Install the appropriate adapter package to resolve this error.
 *
 * @since 3.0.0
 * @see {@link https://suites.dev/docs/get-started/installation | Installation Guide}
 */
export declare class AdapterNotFoundError extends SuitesError {
    constructor(message: string);
}
/**
 * Registry of supported mocking library adapter packages.
 *
 * Maps mocking library names to their corresponding Suites adapter package names.
 * Suites automatically detects which library is installed and loads the appropriate adapter.
 *
 * @since 3.0.0
 */
export declare const SuitesDoublesAdapters: {
    readonly jest: "@suites/doubles.jest";
    readonly sinon: "@suites/doubles.sinon";
    readonly vitest: "@suites/doubles.vitest";
    readonly bun: "@suites/doubles.bun";
    readonly deno: "@suites/doubles.deno";
    readonly node: "@suites/doubles.node";
};
/**
 * Registry of supported dependency injection framework adapter packages.
 *
 * Maps DI framework names to their corresponding Suites adapter package names.
 * Suites automatically detects which DI framework is installed and loads the appropriate adapter.
 *
 * @since 3.0.0
 */
export declare const SuitesDIAdapters: {
    readonly nestjs: "@suites/di.nestjs";
    readonly inversify: "@suites/di.inversify";
    readonly tsyringe: "@suites/di.tsyringe";
};
/**
 * Factory function for creating TestBedBuilder instances with automatic adapter resolution.
 *
 * This function resolves and configures the appropriate DI and mocking library adapters
 * based on what's installed in the project, then creates a builder for the specified target class.
 *
 * @internal This is used internally by TestBed.solitary() and TestBed.sociable()
 * @template TClass The type of the class to be tested
 * @param diAdapters - Registry of DI framework adapters
 * @param doublesAdapters - Registry of mocking library adapters
 * @param targetClass - The class for which to create the test environment
 * @returns Factory object with a create method for building TestBedBuilder instances
 * @since 3.0.0
 */
export declare function testBedBuilderFactory<TClass>(diAdapters: typeof SuitesDIAdapters, doublesAdapters: typeof SuitesDoublesAdapters, targetClass: Type<TClass>): {
    create: <TBuilder>(testbedBuilderType: Type<TestBedBuilder<TClass>>) => TBuilder;
};
