@maticnetwork/openapi-watchgod-merger
v1.0.9
Published
merge open api and watchgod responses to get latest transaction status
Downloads
14
Readme
openapi-watchgod-merger
Merge OpenAPI and Watchgod responses to track latest status of a deposit/withdraw transaction on Ethereum Chain and Polygon Chain.
Usage
Installation
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
);
Detailed Explanation
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
)
Deposits
Deposit transactions can be tracked via 2 places with below mentioned priorities
Priority for Deposit Txs(Highest to Lowest)
- OpenAPI
- Watchgod
Additional fields
_txType
_txSource
_openapiTxStatus
_watchgodTxStatus
_latestStatus
Withdraw
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
Priority for Withdraw+Exit Txs(Highest to Lowest)
- OpenAPI Exit
- Watchgod Exit
- OpenAPI Withdraw
- Watchgod Withdraw
Additional fields
_txType
_txSource
_burnTxHash
_exitTxHash
_openapiExitTxStatus
_watchgodExitTxStatus
_openapiBurnTxStatus
_watchgodBurnTxStatus
_latestStatus
Interface
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.
Interface
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)
Usage
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 mapping
| OpenAPI | Interface |
| --------------------- | ------------ |
| transactionHash
| txHash
|
| transactionStatus
| txStatus
|
| depositor
| from
|
| isPos
| isPoS
|
| burnTransactionHash
| txBurnHash
|
Watchgod mapping
| Watchgod | Interface |
| -------------- | ------------ |
| hash
| txHash
|
| status
| txStatus
|
| isPos
| isPoS
|
| prevBurnHash
| txBurnHash
|
Other helpful constants
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);