import { Ctor } from '@ne1410s/codl'; /** * A contract for that which generates a response from a request. */ export interface IOperation { /** * Performs the commands necessary to yield a response. * @param requestData The request data. * @throws {OperationInvocationError} */ invoke(requestData: TRequest): Promise; /** * Checks the data in a request. * @param requestData The request data. * @throws {ValidationError} */ validateRequest(requestData: TRequest): void; /** * Checks the data in a response. * @param responseData The response data. * @throws {ValidationError} */ validateResponse(responseData: TResponse): void; } /** * Base implementation for that which generates a response from a request. */ export declare abstract class OperationBase implements IOperation { private readonly requestType?; private readonly responseType?; /** * Creates a new instance. Parameters are model prototypes. They are only * needed if automatic validation (of @ne1410s/codl decorators) is required. * @param requestType The request type. * @param responseType The response type. */ constructor(requestType?: Ctor, responseType?: Ctor); /** * @inheritdoc */ invoke(requestData: TRequest): Promise; /** Validates a request according to @ne1410s/codl decorators. */ validateRequest(requestData: TRequest): void; /** Validates the response according to @ne1410s/codl decorators. */ validateResponse(responseData: TResponse): void; /** * * @param requestData The request data. */ protected abstract invokeInternal(requestData: TRequest): Promise; }