@dojima-wallet/operator-gateway
Version:
Operator gateway client involving dojima stack
65 lines (53 loc) • 1.67 kB
text/typescript
import { AddChainClientParam, GRPCClientParams } from "./types";
import { OperatorTxnsClient } from "./proto/operator_grpc_pb";
import { credentials, ServiceError } from "@grpc/grpc-js";
import {
AddChainClientRequest,
AddChainClientResponse,
} from "./proto/operator_pb";
import { Chain } from "./proto/query_pb";
export interface OperatorClient {
addChainClient(
params: AddChainClientParam,
callback: (
error: ServiceError | null,
response: AddChainClientResponse
) => void
): void;
}
export const noop = () => {};
class OperatorGatewayClient implements OperatorClient {
private client: OperatorTxnsClient;
constructor({ server }: GRPCClientParams) {
this.client = new OperatorTxnsClient(server, credentials.createInsecure());
}
async addChainClient(
params: AddChainClientParam,
callback: (
error: ServiceError | null,
response: AddChainClientResponse
) => void
) {
const request = new AddChainClientRequest();
const chain = new Chain();
// Set chain properties
chain.setTicker(params.chain.ticker);
chain.setName(params.chain.name);
chain.setId(params.chain.chainId);
// Set the chain in the request
request.setChain(chain);
// Set RPC and WS hosts
request.setRpchost(params.rpcUrl);
request.setWshost(params.wsUrl);
// Use the callback to handle the response
this.client.addChainClient(request, (error, response) => {
if (error) {
console.error("Error adding chain client:", error);
callback(error, null);
} else {
callback(null, response);
}
});
}
}
export { OperatorGatewayClient };