using System;
using System.Collections.Generic;
using EdjCase.JsonRpc.Core;
using Newtonsoft.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json.Linq;
namespace EdjCase.JsonRpc.Router.Abstractions
{
public interface IRpcInvoker
{
///
/// Call the incoming Rpc request method and gives the appropriate response
///
/// Rpc request
/// Rpc path that applies to the current request
/// The context of the current rpc request
/// An Rpc response for the request
Task InvokeRequestAsync(RpcRequest request, RpcPath path, IRouteContext routeContext);
///
/// Call the incoming Rpc requests methods and gives the appropriate respones
///
/// List of Rpc requests to invoke
/// Rpc route that applies to the current request
/// The context of the current rpc request
/// List of Rpc responses for the requests
Task> InvokeBatchRequestAsync(IList requests, RpcPath path, IRouteContext routeContext);
}
}