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:
convertInterfaceToWatchgod
will 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_SOURCE
can be used with_txSource
TX_TYPE
can be used with_txType
import { TX_SOURCE, TX_TYPE } from "openapi-watchgod-merger";
const depositTxs = (mergedTransactions) =>
mergedTransactions.filter((tx) => TX_TYPE.DEPOSIT === tx._txType);