import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client";
import { BedrockRuntimeServiceException as __BaseException } from "./BedrockRuntimeServiceException";
export declare class AccessDeniedException extends __BaseException {
  readonly name: "AccessDeniedException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<AccessDeniedException, __BaseException>
  );
}
export declare class InternalServerException extends __BaseException {
  readonly name: "InternalServerException";
  readonly $fault: "server";
  constructor(
    opts: __ExceptionOptionType<InternalServerException, __BaseException>
  );
}
export interface InvokeModelRequest {
  body: Uint8Array | undefined;
  contentType?: string;
  accept?: string;
  modelId: string | undefined;
}
export interface InvokeModelResponse {
  body: Uint8Array | undefined;
  contentType: string | undefined;
}
export declare class ModelErrorException extends __BaseException {
  readonly name: "ModelErrorException";
  readonly $fault: "client";
  originalStatusCode?: number;
  resourceName?: string;
  constructor(
    opts: __ExceptionOptionType<ModelErrorException, __BaseException>
  );
}
export declare class ModelNotReadyException extends __BaseException {
  readonly name: "ModelNotReadyException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ModelNotReadyException, __BaseException>
  );
}
export declare class ModelTimeoutException extends __BaseException {
  readonly name: "ModelTimeoutException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ModelTimeoutException, __BaseException>
  );
}
export declare class ResourceNotFoundException extends __BaseException {
  readonly name: "ResourceNotFoundException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ResourceNotFoundException, __BaseException>
  );
}
export declare class ServiceQuotaExceededException extends __BaseException {
  readonly name: "ServiceQuotaExceededException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ServiceQuotaExceededException, __BaseException>
  );
}
export declare class ThrottlingException extends __BaseException {
  readonly name: "ThrottlingException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ThrottlingException, __BaseException>
  );
}
export declare class ValidationException extends __BaseException {
  readonly name: "ValidationException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<ValidationException, __BaseException>
  );
}
export interface InvokeModelWithResponseStreamRequest {
  body: Uint8Array | undefined;
  contentType?: string;
  accept?: string;
  modelId: string | undefined;
}
export interface PayloadPart {
  bytes?: Uint8Array;
}
export declare class ModelStreamErrorException extends __BaseException {
  readonly name: "ModelStreamErrorException";
  readonly $fault: "client";
  originalStatusCode?: number;
  originalMessage?: string;
  constructor(
    opts: __ExceptionOptionType<ModelStreamErrorException, __BaseException>
  );
}
export type ResponseStream =
  | ResponseStream.ChunkMember
  | ResponseStream.InternalServerExceptionMember
  | ResponseStream.ModelStreamErrorExceptionMember
  | ResponseStream.ThrottlingExceptionMember
  | ResponseStream.ValidationExceptionMember
  | ResponseStream.$UnknownMember;
export declare namespace ResponseStream {
  interface ChunkMember {
    chunk: PayloadPart;
    internalServerException?: never;
    modelStreamErrorException?: never;
    validationException?: never;
    throttlingException?: never;
    $unknown?: never;
  }
  interface InternalServerExceptionMember {
    chunk?: never;
    internalServerException: InternalServerException;
    modelStreamErrorException?: never;
    validationException?: never;
    throttlingException?: never;
    $unknown?: never;
  }
  interface ModelStreamErrorExceptionMember {
    chunk?: never;
    internalServerException?: never;
    modelStreamErrorException: ModelStreamErrorException;
    validationException?: never;
    throttlingException?: never;
    $unknown?: never;
  }
  interface ValidationExceptionMember {
    chunk?: never;
    internalServerException?: never;
    modelStreamErrorException?: never;
    validationException: ValidationException;
    throttlingException?: never;
    $unknown?: never;
  }
  interface ThrottlingExceptionMember {
    chunk?: never;
    internalServerException?: never;
    modelStreamErrorException?: never;
    validationException?: never;
    throttlingException: ThrottlingException;
    $unknown?: never;
  }
  interface $UnknownMember {
    chunk?: never;
    internalServerException?: never;
    modelStreamErrorException?: never;
    validationException?: never;
    throttlingException?: never;
    $unknown: [string, any];
  }
  interface Visitor<T> {
    chunk: (value: PayloadPart) => T;
    internalServerException: (value: InternalServerException) => T;
    modelStreamErrorException: (value: ModelStreamErrorException) => T;
    validationException: (value: ValidationException) => T;
    throttlingException: (value: ThrottlingException) => T;
    _: (name: string, value: any) => T;
  }
  const visit: <T>(value: ResponseStream, visitor: Visitor<T>) => T;
}
export interface InvokeModelWithResponseStreamResponse {
  body: AsyncIterable<ResponseStream> | undefined;
  contentType: string | undefined;
}
export declare const InvokeModelRequestFilterSensitiveLog: (
  obj: InvokeModelRequest
) => any;
export declare const InvokeModelResponseFilterSensitiveLog: (
  obj: InvokeModelResponse
) => any;
export declare const InvokeModelWithResponseStreamRequestFilterSensitiveLog: (
  obj: InvokeModelWithResponseStreamRequest
) => any;
export declare const PayloadPartFilterSensitiveLog: (obj: PayloadPart) => any;
export declare const ResponseStreamFilterSensitiveLog: (
  obj: ResponseStream
) => any;
export declare const InvokeModelWithResponseStreamResponseFilterSensitiveLog: (
  obj: InvokeModelWithResponseStreamResponse
) => any;
