import { ServiceException as SDKBaseServiceException } from "@smithy/core/client";
import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema";
import {
  HttpResponse as IHttpResponse,
  MetadataBearer,
  ResponseMetadata,
  StaticErrorSchema,
} from "@smithy/types";
type ErrorMetadataBearer = MetadataBearer & {
  $fault: "client" | "server";
};
export declare class ProtocolLib {
  private queryCompat;
  private errorRegistry?;
  constructor(queryCompat?: boolean);
  resolveRestContentType(
    defaultContentType: string,
    inputSchema: NormalizedSchema,
  ): string | undefined;
  getErrorSchemaOrThrowBaseException(
    errorIdentifier: string,
    defaultNamespace: string,
    response: IHttpResponse,
    dataObject: any,
    metadata: ResponseMetadata,
    getErrorSchema?: (registry: TypeRegistry, errorName: string) => StaticErrorSchema,
  ): Promise<{
    errorSchema: StaticErrorSchema;
    errorMetadata: ErrorMetadataBearer;
  }>;
  compose(composite: TypeRegistry, errorIdentifier: string, defaultNamespace: string): void;
  decorateServiceException<E extends SDKBaseServiceException>(
    exception: E,
    additions?: Record<string, any>,
  ): E;
  setQueryCompatError(output: Record<string, any>, response: IHttpResponse): void;
  queryCompatOutput(queryCompatErrorData: any, errorData: any): void;
  findQueryCompatibleError(registry: TypeRegistry, errorName: string): StaticErrorSchema;
}
export {};
