import { Endpoint } from "./http"; import { RequestHandler } from "./transfer"; import { Decoder, Encoder, Provider } from "./util"; /** * Interface for object requires an Endpoint set. */ export interface EndpointBearer { endpoint: Provider; } export interface StreamCollector { /** * A function that converts a stream into an array of bytes. * * @param stream The low-level native stream from browser or Nodejs runtime */ (stream: any): Promise; } /** * Request and Response serde util functions and settings for AWS services */ export interface SerdeContext extends EndpointBearer { base64Encoder: Encoder; base64Decoder: Decoder; utf8Encoder: Encoder; utf8Decoder: Decoder; streamCollector: StreamCollector; requestHandler: RequestHandler; disableHostPrefix: boolean; } export interface RequestSerializer { /** * Converts the provided `input` into a request object * * @param input The user input to serialize. * * @param context Context containing runtime-specific util functions. */ (input: any, context: Context): Promise; } export interface ResponseDeserializer { /** * Converts the output of an operation into JavaScript types. * * @param output The HTTP response received from the service * * @param context context containing runtime-specific util functions. */ (output: ResponseType, context: Context): Promise; } /** * Declare ReadableStream in case dom.d.ts is not added to the tsconfig lib causing * ReadableStream interface is not defined. For developers with dom.d.ts added, * the ReadableStream interface will be merged correctly. * * This is also required for any clients with streaming interface where ReadableStream * type is also referred. The type is only declared here once since this @aws-sdk/types * is depended by all @aws-sdk packages. */ declare global { export interface ReadableStream { } } /** * The interface contains mix-in utility functions to transfer the runtime-specific * stream implementation to specified format. Each stream can ONLY be transformed * once. */ export interface SdkStreamMixin { transformToByteArray: () => Promise; transformToString: (encoding?: string) => Promise; transformToWebStream: () => ReadableStream; } /** * The type describing a runtime-specific stream implementation with mix-in * utility functions. */ export declare type SdkStream = BaseStream & SdkStreamMixin; /** * Indicates that the member of type T with * key StreamKey have been extended * with the SdkStreamMixin helper methods. */ export declare type WithSdkStreamMixin = { [key in keyof T]: key extends StreamKey ? SdkStream : T[key]; }; /** * Interface for internal function to inject stream utility functions * implementation * * @internal */ export interface SdkStreamMixinInjector { (stream: unknown): SdkStreamMixin; } /** * @internal */ export interface SdkStreamSerdeContext { sdkStreamMixin: SdkStreamMixinInjector; }