import type { Middleware } from '../middlewareChain';
import type { RestResponse, RestInputWithModels, RestErrorHandlerConfig } from './types';
import type { AmplifyModelType } from '../../queries/types';
/**
 * Creates REST error handler middleware for standardized error processing
 * @param config - Configuration options for error handling behavior
 * @returns Middleware function that catches and processes errors
 *
 * @example
 * ```typescript
 * chain.use('errorHandler', createRestErrorHandler({
 *   includeStackTrace: true,
 *   defaultContext: { service: 'my-api' }
 * }));
 * ```
 */
export declare function createRestErrorHandler<TTypes extends Record<string, AmplifyModelType> = Record<string, AmplifyModelType>, TOutput = RestResponse>(config?: RestErrorHandlerConfig): Middleware<RestInputWithModels<TTypes>, TOutput>;
/**
 * HTTP error helper functions for creating standardized error objects
 */
export declare const HttpErrors: {
    readonly badRequest: (message: string) => {
        statusCode: number;
        code: "BAD_REQUEST";
        message: string;
    };
    readonly unauthorized: (message: string) => {
        statusCode: number;
        code: "UNAUTHORIZED";
        message: string;
    };
    readonly forbidden: (message: string) => {
        statusCode: number;
        code: "FORBIDDEN";
        message: string;
    };
    readonly notFound: (message: string) => {
        statusCode: number;
        code: "NOT_FOUND";
        message: string;
    };
    readonly methodNotAllowed: (message: string) => {
        statusCode: number;
        code: "METHOD_NOT_ALLOWED";
        message: string;
    };
    readonly conflict: (message: string) => {
        statusCode: number;
        code: "CONFLICT";
        message: string;
    };
    readonly unprocessableEntity: (message: string) => {
        statusCode: number;
        code: "UNPROCESSABLE_ENTITY";
        message: string;
    };
    readonly internalServerError: (message: string) => {
        statusCode: number;
        code: "INTERNAL_SERVER_ERROR";
        message: string;
    };
    readonly serviceUnavailable: (message: string) => {
        statusCode: number;
        code: "SERVICE_UNAVAILABLE";
        message: string;
    };
};
/**
 * Creates an HTTP error object with status code and error code
 * @param statusCode - HTTP status code
 * @param code - Error code identifier
 * @param message - Error message
 * @returns Error object with statusCode and code properties
 */
export declare function createHttpError(statusCode: number, code: string, message: string): Error & {
    statusCode: number;
    code: string;
};
//# sourceMappingURL=RestErrorHandler.d.ts.map