Once you have the deposit hash there are two ways of listening for cross-chain transfer transaction.
One via SDK where you pass the callback method onFundsTransfered(data) in Hyphen constructor and let SDK call this method whenever a cross-chain transfer happens corresponding to the deposit transaction done by the user via SDK.
Or you can call the SDK method checkDepositStatus({depositHash, fromChainId}) manually to check the status of cross-chain transfer for a given depositHash and fromChainId.
let hyphen =newHyphen(provider, {// other options hereonFundsTransfered: (data) => {/** * data will contain following fields: * fromChainId => Chain id from where funds were transferred * toChainId => Chain id to where funds are transferred * amount => Amount of tokens transferred in smallest unit of token * tokenAddress => Address of token that was trasnferred * depositHash => Deposit transacion hash on fromChainId * exitHash => Transfer transaction hash on toChainId **/ }});
import { RESPONSE_CODES } from"@biconomy/hyphen";constEXIT_STATUS= { PROCESSING:1, PROCESSED:2, FAILED:3}let depsitHash ="";let fromChainId =80001; // Assuming you already have the deposit transaction hash and the chain id// where the transaction was done.// Periodically call checkDepositStatus method unitll you get the responseconstresponse=awaithyphen.depositManager.checkDepositStatus({ depositHash: depsitHash, fromChainId: fromChainId});if(response &&response.code ===RESPONSE_CODES.SUCCESS) {if(response.statusCode ===EXIT_STATUS.PROCESSED&&response.exitHash) {// ✅ Cross-Chain transfer successfull/** * response will contain following fields: * * fromChainId => Chain id from where funds were transferred * toChainId => Chain id to where funds are transferred * amount => Amount of tokens transferred in smallest unit of token * tokenAddress => Address of token that was trasnferred * depositHash => Deposit transacion hash on fromChainId * exitHash => Transfer transaction hash on toChainId **/ } elseif(response.statusCode ===EXIT_STATUS.PROCESSING&&response.exitHash) {// Cross-chain transfer is initiated but transaction is not confirmed yet/** * response will contain following fields: * * fromChainId => Chain id from where funds were transferred * toChainId => Chain id to where funds are transferred * amount => Amount of tokens transferred in smallest unit of token * tokenAddress => Address of token that was trasnferred * depositHash => Deposit transacion hash on fromChainId * exitHash => Transfer transaction hash on toChainId **/ }}
Trigger Cross-Chain Transfer Manually
In case you don't get the transfer transaction hash on the destination chain within 5 minutes and you are not getting the success response from checkDepositStatus method also, you can manually trigger the cross-chain transfer by calling triggerManualTransfer method.
// Assuming you already have the deposit transaction hash on fromChainlet depsitHash ="0x.....";let fromChainId ="137"; let transferStatus =awaithyphen.transfer.triggerManualTransfer(depsitHash, fromChainId);if(transferStatus &&transferStatus.code ===200&&transferStatus.exitHash) {// Successfuly got the transfer transaction hash on toChain// transferStatus will contain following fields/* * "code": Status code. 200 for success else failure. * "message": Human readable response message. * "exitHash": transaction hash for trasnfer transaction on toChain **/}