import { HttpHeaders, HttpParams } from '@angular/common/http';
import { HttpRemoteMethodParameter } from '@rxap/remote-method/http';
import { OpenAPIV3 } from 'openapi-types';
import { OperationObjectWithMetadata } from './open-api';
export interface SchemaValidationResponse<Data> {
    headers: HttpHeaders;
    status: number;
    body?: Data | null;
    data?: Data;
}
export declare class SchemaValidationMixin<Response = any, Parameters extends Record<string, any> | void = any, RequestBody = any> {
    static STRICT: boolean;
    protected disableSchemaValidation?: boolean;
    /**
     * Validates the parameters against the schema specified in the operation object
     *
     * @param operation
     * @param parameters
     * @param strict
     * @protected
     */
    validateParameters(operation: OperationObjectWithMetadata, parameters?: Parameters, strict?: boolean): void;
    /**
     * Validates the http response against the schema specified in the operation object
     *
     * @param operation
     * @param response
     * @param strict
     * @protected
     */
    validateResponse(operation: OperationObjectWithMetadata, response: SchemaValidationResponse<Response>, strict?: boolean): void;
    validateRequestBody(operation: OperationObjectWithMetadata, body?: RequestBody, strict?: boolean): void;
    validationError(message: string, strict: boolean, schema?: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject, value?: any): void;
    buildHttpParams(operationParameters: OpenAPIV3.ParameterObject[], parameters?: Parameters, ignoreUndefined?: boolean): HttpParams;
    buildHttpHeaders(operationParameters: OpenAPIV3.ParameterObject[], parameters?: Parameters): HttpHeaders;
    buildHttpPathParams(operationParameters: OpenAPIV3.ParameterObject[], parameters?: Parameters): Record<string, string>;
    /**
     * Converts open api parameters into the corresponding http options to
     * create a http request. The transformation is guided by the openapi definition
     *
     * @param operation
     * @param parameters
     * @param requestBody
     * @param ignoreUndefined
     */
    buildHttpOptions(operation: OperationObjectWithMetadata, parameters?: Parameters, requestBody?: RequestBody, ignoreUndefined?: boolean): HttpRemoteMethodParameter;
    private buildBody;
    private validate;
}
