Skip to content
wrapped-assets-balance.js 1.05 KiB
Newer Older
async function run(nodeName, networkInfo, args) {
    const {wsUri, userDefinedTypes} = networkInfo.nodesByName[nodeName];
    const api = await zombie.connect(wsUri, userDefinedTypes);

    // TODO: could be replaced with https://github.com/polkadot-js/api/issues/4930 (depends on metadata v15) later
    const accountAddress = args[0];
    const expectedForeignAssetBalance = BigInt(args[1]);
    const bridgedNetworkName = args[2];
    while (true) {
        const foreignAssetAccount = await api.query.foreignAssets.account(
            { parents: 2, interior: { X1: { GlobalConsensus: bridgedNetworkName } } },
            accountAddress
        );
        if (foreignAssetAccount.isSome) {
            const foreignAssetAccountBalance = foreignAssetAccount.unwrap().balance.toBigInt();
            if (foreignAssetAccountBalance > expectedForeignAssetBalance) {
                return foreignAssetAccountBalance;
            }
        }

        // else sleep and retry
        await new Promise((resolve) => setTimeout(resolve, 12000));
    }
}

module.exports = { run }