class RawTransactionResource {

    @ApiOperation(value = "Store raw private transaction payload")
    @ApiResponses({
        @ApiResponse(code = 200, response = StoreRawResponse.class, message = "Store response"),
        @ApiResponse(code = 400, message = "For unknown sender")
    })
    @POST
    @Path(ENDPOINT_STORE_RAW)
    @Consumes(APPLICATION_JSON)
    @Produces(APPLICATION_JSON)
    public Response store(
            @ApiParam(name = "storeRawRequest", required = true) @NotNull @Valid final StoreRawRequest request) {

        PublicKey sender = request.getFrom()
            .filter(Objects::nonNull)
            .map(PublicKey::from)
            .orElseGet(transactionManager::defaultPublicKey);

        com.quorum.tessera.transaction.StoreRawRequest storeRawRequest =
            com.quorum.tessera.transaction.StoreRawRequest.Builder.create()
                .withSender(sender)
                .withPayload(request.getPayload())
                .build();

        final com.quorum.tessera.transaction.StoreRawResponse response = transactionManager.store(storeRawRequest);
        StoreRawResponse storeRawResponse = new StoreRawResponse();
        storeRawResponse.setKey(response.getHash().getHashBytes());
        return Response.ok().type(APPLICATION_JSON).entity(storeRawResponse).build();
    }

    public  RawTransactionResource();
    public  RawTransactionResource(final TransactionManager transactionManager);

}