// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v2.6.1
//   protoc               v3.17.1
// source: policy/ReqProcessing/AWSLambdaExtension.proto

/* eslint-disable */
import { type Any } from "google-protobuf/google/protobuf/any_pb.js";
import { type Metadata } from "../../common/Metadata.js";
import { type Namespaces } from "../common/Namespaces.js";
import { type RequestProcess } from "../common/RequestProcess.js";
import { type Set } from "../common/Set.js";

/** Copyright Super iPaaS Integration LLC, an IBM Company 2024 */

/** The AWS Lambda Extension related information is captured in the message AWSLambdaExtension. */
export interface AWSLambdaExtension {
  kind?: string | undefined;
  apiVersion?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  kindEnum?: AWSLambdaExtension_KindEnums | undefined;
  spec?: AWSLambdaExtension_Spec | undefined;
}

/** Kind id supported for AWS Lambda extension */
export enum AWSLambdaExtension_KindEnums {
  InvokeAWSLambdaFunction = "InvokeAWSLambdaFunction",
}

/** The message specified the information related to the client configuration */
export interface AWSLambdaExtension_Clientconfig {
  socketTimeout?: number | undefined;
  connectionTimeout?: number | undefined;
  requestTimeout?: number | undefined;
  connectionExpirationTime?: number | undefined;
  maxConnectionIdleTime?: number | undefined;
  clientExecutionTimeout?: number | undefined;
  retryOnErrorCount?: number | undefined;
  enableThrottledRetries?: boolean | undefined;
  maxClientRetries?: number | undefined;
  tcpSendBufferSizeHint?: number | undefined;
  tcpReceiveBufferSizeHint?: number | undefined;
  enableGzip?: boolean | undefined;
  enableExpectContinue?: boolean | undefined;
  enableHostPrefixInjection?: boolean | undefined;
  enableKeepAlive?: boolean | undefined;
  enableResponseMetadataCache?: boolean | undefined;
  responseMetadataCacheSize?: string | undefined;
  signatureAlgorithm?: string | undefined;
}

/** The message specified the information related to the lambda configuration */
export interface AWSLambdaExtension_Lambdaconfig {
  functionName?: string | undefined;
  async?: boolean | undefined;
  alias?: string | undefined;
  clientConfig?: AWSLambdaExtension_Clientconfig | undefined;
}

/** The message specified the information related to the response processing */
export interface AWSLambdaExtension_ResponseProcess {
  transformations?: Any | undefined;
  set?: Set[] | undefined;
  copyEntireResponse?: boolean | undefined;
  abortAPIExecutionForFailure?: boolean | undefined;
}

/** The Spec is used to define the list of condition, lambda configuration, request-processing, namespaces, response-processing */
export interface AWSLambdaExtension_Spec {
  /** Single instance of condition can be given */
  condition?:
    | string
    | undefined;
  /** Single instance of lambda configuration can be given */
  lambdaConfig?:
    | AWSLambdaExtension_Lambdaconfig
    | undefined;
  /**
   * Field 'request_processing' with JSON name 'request-processing' accepts the value of either 'request_processing' or 'request-processing' from the YAML file.
   * If both 'request_processing' and 'request-processing' are specified, the value of 'request-processing' takes priority.
   * Single instances of request processing can be given with JSON name "request-processing".
   */
  "request-processing"?:
    | RequestProcess
    | undefined;
  /**
   * Field 'response_processing' with JSON name 'response-processing' accepts the value of either 'response_processing' or 'response-processing' from the YAML file.
   * If both 'response_processing' and 'response-processing' are specified, the value of 'response-processing' takes priority.
   * Single instances of response processing can be given with JSON name "response-processing".
   */
  "response-processing"?:
    | AWSLambdaExtension_ResponseProcess
    | undefined;
  /** Multiple instanced of namespaces can be given */
  namespaces?: Namespaces[] | undefined;
}
