import { type WhookOpenAPI, type WhookOpenAPIOperation } from '../types/openapi.js';
import { type WhookRequest, type WhookResponse } from '../types/http.js';
import { type WhookRouteHandler, type WhookRouteDefinition, type WhookRouteHandlerParameters } from '../types/routes.js';
export type WhookBodySpec = {
    contentType: string;
    contentLength: number;
    charset: 'utf-8';
    boundary?: string;
};
export type WhookResponseSpec = {
    contentTypes: string[];
    charsets: string[];
};
export declare function extractConsumableMediaTypes(API: WhookOpenAPI, operation: WhookOpenAPIOperation): Promise<string[]>;
export declare function extractProduceableMediaTypes(API: WhookOpenAPI, operation: WhookOpenAPIOperation): Promise<string[]>;
export declare function extractBodySpec(request: WhookRequest, consumableMediaTypes: string[], consumableCharsets: string[]): WhookBodySpec;
export declare function checkBodyCharset(bodySpec: WhookBodySpec, consumableCharsets: string[]): void;
export declare function checkBodyMediaType(bodySpec: WhookBodySpec, consumableMediaTypes: string[]): void;
export declare function extractResponseSpec(operation: WhookOpenAPIOperation, request: WhookRequest, supportedMediaTypes: string[], supportedCharsets: string[]): WhookResponseSpec;
export declare function checkResponseMediaType(request: WhookRequest, responseSpec: WhookResponseSpec, produceableMediaTypes: string[]): void;
export declare function checkResponseCharset(request: WhookRequest, responseSpec: WhookResponseSpec, produceableCharsets: string[]): void;
export declare function executeHandler(definition: WhookRouteDefinition, handler: WhookRouteHandler, parameters: WhookRouteHandlerParameters): Promise<WhookResponse>;
