Merge OpenAPI and Watchgod responses to track latest status of a deposit/withdraw transaction on Ethereum Chain and Polygon Chain.
npm i openapi-watchgod-merger
import openapiWatchgodMerge from openapi-watchgod-merger
// Folllowing variables represent data
// from OpenAPI and Watchgod API
const openApiDepositResponse = []
const openApiWithdrawResponse = []
const openApiBurnResponse = []
const watchGodResponse = []
// below given function expects all 4 arguments
// and in same order
const mergedData = openapiWatchgodMerge(
openApiDepositResponse,
openApiWithdrawResponse,
openApiBurnResponse,
watchGodResponse
);For now, it is not giving out exact intelligent status of a transaction. It just merges all related transactions into one and appends some additional information based on below given priority.
A merged transaction will have all the undisturbed response with some additional fields added.
NOTE: All fields added by this library starts with an underscore(e.g.
_latestStatus)
Deposit transactions can be tracked via 2 places with below mentioned priorities
- OpenAPI
- Watchgod
_txType_txSource_openapiTxStatus_watchgodTxStatus_latestStatus
Withdraw transactions consists of 2 parts(i.e. withdraw init/burn and exit). Withdraw transactions can be tracked via 2 places with below mentioned priorities
- OpenAPI Exit
- Watchgod Exit
- OpenAPI Withdraw
- Watchgod Withdraw
_txType_txSource_burnTxHash_exitTxHash_openapiExitTxStatus_watchgodExitTxStatus_openapiBurnTxStatus_watchgodBurnTxStatus_latestStatus
Since different APIs uses their own names for naming a variable(e.g. openapi:transactionHash, watchgod:hash), to avoid juggling between 2 naming conventions we will be parsing some common variable names.
amount
blockNumber
data
from
network
rootToken
timestamp
to
txBurnHash
txHash
txStatus
txType
_txSource
_txType
_depositTxHash
_burnTxHash
_exitTxHash
_openapiExitTxStatus
_watchgodExitTxStatus
_openapiBurnTxStatus
_watchgodBurnTxStatus
_latestStatus
If required, to parse and unparse you can use the util methods provided by this library.
convertOpenapiToInterface(openapiTx)convertWatchgodToInterface(watchgodTx)(watchgodTx)
import {
convertOpenapiToInterface,
convertWatchgodToInterface,
convertInterfaceToWatchgod,
} from "openapi-watchgod-merger";
const openapiTx = {
/*...*/
};
const watchgodTx = {
/*...*/
};
const parsedOpenapiTx = convertOpenapiToInterface(openapiTx);
const parsedWatchgodTx = convertWatchgodToInterface(openapiTx);
const unparsedWatchgodTx = convertInterfaceToWatchgod(parsedWatchgodTx);Note:
convertInterfaceToWatchgodwill still have the additional fields added by library
| OpenAPI | Interface |
|---|---|
transactionHash |
txHash |
transactionStatus |
txStatus |
depositor |
from |
isPos |
isPoS |
burnTransactionHash |
txBurnHash |
| Watchgod | Interface |
|---|---|
hash |
txHash |
status |
txStatus |
isPos |
isPoS |
prevBurnHash |
txBurnHash |
Constants can also be imported for use
TX_SOURCEcan be used with_txSourceTX_TYPEcan be used with_txType
import { TX_SOURCE, TX_TYPE } from "openapi-watchgod-merger";
const depositTxs = (mergedTransactions) =>
mergedTransactions.filter((tx) => TX_TYPE.DEPOSIT === tx._txType);