import { Effect, Layer, Scope as EffectScope } from "effect";
import { HttpClient, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
export { makeTestConfig, makeTestExecutor, makeTestWorkspaceHarness, makeTestWorkspaceLayer, memoryCredentialsPlugin, TestWorkspace, type TestConfigOptions, type TestDatabaseBackend, type TestFumaDb, type TestWorkspaceHarness, } from "./test-config";
export { OAuthTestServer, serveOAuthTestServer, OAuthTestServerAddressError, OAuthTestServerFlowError, type OAuthAuthorizationCompletion, type OAuthTokenSet, type OAuthTestServerOptions, type OAuthTestServerRequest, type OAuthTestServerShape, } from "./testing/oauth-test-server";
export { createSqliteTestFumaDb, type SqliteTestFumaDb } from "./sqlite-test-db";
export { typeCheckOutputTypeScript, type OutputTypeScriptContract, type TypeCheckOutputTypeScriptOptions, } from "./testing/tool-output-contract";
declare const TestHttpServerAddressError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
    readonly _tag: "TestHttpServerAddressError";
} & Readonly<A>;
export declare class TestHttpServerAddressError extends TestHttpServerAddressError_base<{
    readonly address: unknown;
}> {
}
declare const TestHttpServerServeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
    readonly _tag: "TestHttpServerServeError";
} & Readonly<A>;
export declare class TestHttpServerServeError extends TestHttpServerServeError_base<{
    readonly cause: unknown;
}> {
}
export interface TestHttpServerShape {
    readonly baseUrl: string;
    readonly httpClientLayer: Layer.Layer<HttpClient.HttpClient>;
    readonly url: (path?: string) => string;
}
export type TestHttpRoute = HttpRouter.Route<any, any>;
export type TestHttpRequest = HttpServerRequest.HttpServerRequest;
export type TestHttpResponse = HttpServerResponse.HttpServerResponse;
export declare const testHttpRoute: <E = never, R = never>(method: "*" | import("effect/unstable/http/HttpMethod").HttpMethod, path: HttpRouter.PathInput, handler: HttpServerResponse.HttpServerResponse | Effect.Effect<HttpServerResponse.HttpServerResponse, E, R> | ((request: HttpServerRequest.HttpServerRequest) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>), options?: {
    readonly uninterruptible?: boolean | undefined;
}) => HttpRouter.Route<E, Exclude<R, HttpRouter.Provided>>;
export declare const serveTestHttpRoutes: (routes: readonly TestHttpRoute[]) => Effect.Effect<TestHttpServerShape, TestHttpServerAddressError | TestHttpServerServeError, EffectScope.Scope>;
export declare const serveTestHttpApp: (handler: (request: TestHttpRequest) => Effect.Effect<TestHttpResponse>) => Effect.Effect<TestHttpServerShape, TestHttpServerAddressError | TestHttpServerServeError, EffectScope.Scope>;
export declare const serveTestHttpServerLayer: (serverLayer: Layer.Layer<never, any, any>) => Effect.Effect<TestHttpServerShape, TestHttpServerAddressError | TestHttpServerServeError, EffectScope.Scope>;
//# sourceMappingURL=testing.d.ts.map