import { ErrorObject, ErrorDetails, Id, Request, ResponseObject } from './interfaces';
import { ErrorType } from '../utils';
/**
 * Builds and returns a JSON RPC 2 conform error object.
 *
 * @param code {number} - JSON RPC 2 error code
 * @param details {ErrorDetails} - optional primitive or structured value with detailed error information
 */
export declare function buildError(code: number, details?: ErrorDetails): ErrorObject;
/**
 * Builds and returns a JSON RPC 2 conform response object.
 *
 * @param error {boolean} - if true -> builds JSON RPC 2 error response, if false -> JSON RPC 2 result response
 * @param id {Id} - JSON RPC 2 id
 * @param data {any | ErrorObject} - should be rpc result if error is false, otherwise ErrorObject
 */
export declare function buildResponse(error: boolean, id: Id, data: any | ErrorObject): ResponseObject;
/**
 * Assertion to ensure value is a JSON RPC 2 conform request
 *
 * @param val {*} - value to be asserted on
 * @param Err {ErrorType} - Error to be thrown if assertion fails
 */
export declare function assertValidJSONRPC2Request(val: any, Err: ErrorType<Error>): asserts val is Request;
