From 86368be75dc2d79c1bed435b780842c4b0616e1b Mon Sep 17 00:00:00 2001
From: Paul <108695806+pxrl@users.noreply.github.com>
Date: Mon, 2 Dec 2024 12:06:24 +0100
Subject: [PATCH 1/8] fix(relayer): Respect chainId input argument in ethers
 listener (#1934)

---
 src/libexec/RelayerSpokePoolIndexer.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libexec/RelayerSpokePoolIndexer.ts b/src/libexec/RelayerSpokePoolIndexer.ts
index cca6045237..618413037d 100644
--- a/src/libexec/RelayerSpokePoolIndexer.ts
+++ b/src/libexec/RelayerSpokePoolIndexer.ts
@@ -122,7 +122,7 @@ async function run(argv: string[]): Promise<void> {
   };
   const args = minimist(argv, minimistOpts);
 
-  const { chainId: chainId, lookback, relayer = null, blockrange: maxBlockRange = 10_000 } = args;
+  const { chainid: chainId, lookback, relayer = null, blockrange: maxBlockRange = 10_000 } = args;
   assert(Number.isInteger(chainId), "chainId must be numeric ");
   assert(Number.isInteger(maxBlockRange), "maxBlockRange must be numeric");
   assert(!isDefined(relayer) || ethersUtils.isAddress(relayer), `relayer address is invalid (${relayer})`);

From e393a92aad9273925160684eae6483b1aede228e Mon Sep 17 00:00:00 2001
From: Matt Rice <matthewcrice32@gmail.com>
Date: Thu, 5 Dec 2024 05:10:31 -0500
Subject: [PATCH 2/8] fix: make datadog logs more digestible in datadog (#1937)

---
 src/monitor/Monitor.ts | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/src/monitor/Monitor.ts b/src/monitor/Monitor.ts
index 1122f8c5af..0b488694e8 100644
--- a/src/monitor/Monitor.ts
+++ b/src/monitor/Monitor.ts
@@ -8,8 +8,6 @@ import {
   L1Token,
   RelayerBalanceReport,
   RelayerBalanceTable,
-  RelayerBalanceColumns,
-  RelayerBalanceCell,
   TokenTransfer,
 } from "../interfaces";
 import {
@@ -44,14 +42,13 @@ import {
   resolveTokenDecimals,
   sortEventsDescending,
   getWidestPossibleExpectedBlockRange,
+  utils,
 } from "../utils";
 
 import { MonitorClients, updateMonitorClients } from "./MonitorClientHelper";
 import { MonitorConfig } from "./MonitorConfig";
 import { CombinedRefunds } from "../dataworker/DataworkerUtils";
 
-import lodash from "lodash";
-
 // 60 minutes, which is the length of the challenge window, so if a rebalance takes longer than this to finalize,
 // then its finalizing after the subsequent challenge period has started, which is sub-optimal.
 export const REBALANCE_FINALIZE_GRACE_PERIOD = Number(process.env.REBALANCE_FINALIZE_GRACE_PERIOD ?? 60 * 60);
@@ -301,22 +298,30 @@ export class Monitor {
       });
 
       // Note: types are here for clarity, not necessity.
-      const machineReadableReport = lodash.mapValues(reports, (table: RelayerBalanceTable) =>
-        lodash.mapValues(table, (columns: RelayerBalanceColumns, tokenSymbol: string) => {
+
+      Object.entries(reports).forEach(([relayer, balanceTable]) => {
+        Object.entries(balanceTable).forEach(([tokenSymbol, columns]) => {
           const decimals = allL1Tokens.find((token) => token.symbol === tokenSymbol)?.decimals;
           if (!decimals) {
             throw new Error(`No decimals found for ${tokenSymbol}`);
           }
-          return lodash.mapValues(columns, (cell: RelayerBalanceCell) =>
-            lodash.mapValues(cell, (balance: BigNumber) => Number(convertFromWei(balance.toString(), decimals)))
-          );
-        })
-      );
-
-      this.logger.debug({
-        at: "Monitor#reportRelayerBalances",
-        message: "Machine-readable balance report",
-        report: machineReadableReport,
+          Object.entries(columns).forEach(([chainName, cell]) => {
+            Object.entries(cell).forEach(([balanceType, balance]) => {
+              this.logger.debug({
+                at: "Monitor#reportRelayerBalances",
+                message: "Machine-readable single balance report",
+                relayer,
+                tokenSymbol,
+                decimals,
+                chainName,
+                balanceType,
+                balanceInWei: balance.toString(),
+                balance: Number(utils.formatUnits(balance, decimals)),
+                datadog: true,
+              });
+            });
+          });
+        });
       });
     }
   }

From 8d79323ff527250078eab54353473faddeec3550 Mon Sep 17 00:00:00 2001
From: bmzig <57361391+bmzig@users.noreply.github.com>
Date: Fri, 6 Dec 2024 12:06:56 -0600
Subject: [PATCH 3/8] improve: only log relayer balances for tokens on
 supported chains (#1938)

Signed-off-by: bennett <bennett@umaproject.org>
---
 src/monitor/Monitor.ts | 39 +++++++++++++++++++++++++--------------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/src/monitor/Monitor.ts b/src/monitor/Monitor.ts
index 0b488694e8..7202af238b 100644
--- a/src/monitor/Monitor.ts
+++ b/src/monitor/Monitor.ts
@@ -44,10 +44,10 @@ import {
   getWidestPossibleExpectedBlockRange,
   utils,
 } from "../utils";
-
 import { MonitorClients, updateMonitorClients } from "./MonitorClientHelper";
 import { MonitorConfig } from "./MonitorConfig";
 import { CombinedRefunds } from "../dataworker/DataworkerUtils";
+import { PUBLIC_NETWORKS } from "@across-protocol/constants";
 
 // 60 minutes, which is the length of the challenge window, so if a rebalance takes longer than this to finalize,
 // then its finalizing after the subsequent challenge period has started, which is sub-optimal.
@@ -306,20 +306,22 @@ export class Monitor {
             throw new Error(`No decimals found for ${tokenSymbol}`);
           }
           Object.entries(columns).forEach(([chainName, cell]) => {
-            Object.entries(cell).forEach(([balanceType, balance]) => {
-              this.logger.debug({
-                at: "Monitor#reportRelayerBalances",
-                message: "Machine-readable single balance report",
-                relayer,
-                tokenSymbol,
-                decimals,
-                chainName,
-                balanceType,
-                balanceInWei: balance.toString(),
-                balance: Number(utils.formatUnits(balance, decimals)),
-                datadog: true,
+            if (this._tokenEnabledForNetwork(tokenSymbol, chainName)) {
+              Object.entries(cell).forEach(([balanceType, balance]) => {
+                this.logger.debug({
+                  at: "Monitor#reportRelayerBalances",
+                  message: "Machine-readable single balance report",
+                  relayer,
+                  tokenSymbol,
+                  decimals,
+                  chainName,
+                  balanceType,
+                  balanceInWei: balance.toString(),
+                  balance: Number(utils.formatUnits(balance, decimals)),
+                  datadog: true,
+                });
               });
-            });
+            }
           });
         });
       });
@@ -1289,4 +1291,13 @@ export class Monitor {
       })
     );
   }
+
+  private _tokenEnabledForNetwork(tokenSymbol: string, networkName: string): boolean {
+    for (const [chainId, network] of Object.entries(PUBLIC_NETWORKS)) {
+      if (network.name === networkName) {
+        return isDefined(TOKEN_SYMBOLS_MAP[tokenSymbol]?.addresses[chainId]);
+      }
+    }
+    return false;
+  }
 }

From e32d3de5b043f12188319661623d96fcd2c09710 Mon Sep 17 00:00:00 2001
From: Matt Rice <matthewcrice32@gmail.com>
Date: Fri, 6 Dec 2024 14:58:04 -0500
Subject: [PATCH 4/8] fix: remove excess reporter datadog logs (#1939)

Signed-off-by: Matt Rice <matthewcrice32@gmail.com>
---
 src/monitor/Monitor.ts | 55 +++++++++++++++++++++---------------------
 1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/src/monitor/Monitor.ts b/src/monitor/Monitor.ts
index 7202af238b..0182ef912d 100644
--- a/src/monitor/Monitor.ts
+++ b/src/monitor/Monitor.ts
@@ -296,36 +296,37 @@ export class Monitor {
         message: `Balance report for ${relayer} 📖`,
         mrkdwn,
       });
-
-      // Note: types are here for clarity, not necessity.
-
-      Object.entries(reports).forEach(([relayer, balanceTable]) => {
-        Object.entries(balanceTable).forEach(([tokenSymbol, columns]) => {
-          const decimals = allL1Tokens.find((token) => token.symbol === tokenSymbol)?.decimals;
-          if (!decimals) {
-            throw new Error(`No decimals found for ${tokenSymbol}`);
-          }
-          Object.entries(columns).forEach(([chainName, cell]) => {
-            if (this._tokenEnabledForNetwork(tokenSymbol, chainName)) {
-              Object.entries(cell).forEach(([balanceType, balance]) => {
-                this.logger.debug({
-                  at: "Monitor#reportRelayerBalances",
-                  message: "Machine-readable single balance report",
-                  relayer,
-                  tokenSymbol,
-                  decimals,
-                  chainName,
-                  balanceType,
-                  balanceInWei: balance.toString(),
-                  balance: Number(utils.formatUnits(balance, decimals)),
-                  datadog: true,
-                });
+    }
+    Object.entries(reports).forEach(([relayer, balanceTable]) => {
+      Object.entries(balanceTable).forEach(([tokenSymbol, columns]) => {
+        const decimals = allL1Tokens.find((token) => token.symbol === tokenSymbol)?.decimals;
+        if (!decimals) {
+          throw new Error(`No decimals found for ${tokenSymbol}`);
+        }
+        Object.entries(columns).forEach(([chainName, cell]) => {
+          if (this._tokenEnabledForNetwork(tokenSymbol, chainName)) {
+            Object.entries(cell).forEach(([balanceType, balance]) => {
+              // Don't log zero balances.
+              if (balance.isZero()) {
+                return;
+              }
+              this.logger.debug({
+                at: "Monitor#reportRelayerBalances",
+                message: "Machine-readable single balance report",
+                relayer,
+                tokenSymbol,
+                decimals,
+                chainName,
+                balanceType,
+                balanceInWei: balance.toString(),
+                balance: Number(utils.formatUnits(balance, decimals)),
+                datadog: true,
               });
-            }
-          });
+            });
+          }
         });
       });
-    }
+    });
   }
 
   // Update current balances of all tokens on each supported chain for each relayer.

From 452ed8138d863627157c32167e00cf08b8adff88 Mon Sep 17 00:00:00 2001
From: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date: Tue, 10 Dec 2024 09:51:18 -0600
Subject: [PATCH 5/8] improve(Relayer): Don't include log about outstanding
 xchain txfers if there are 0 txfers (#1944)

* improve(Relayer): Don't include log about outstanding xchain txfers if there are 0 txfers

* Update Relayer.ts
---
 src/relayer/Relayer.ts | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/relayer/Relayer.ts b/src/relayer/Relayer.ts
index fa2428dd97..3f992385e4 100644
--- a/src/relayer/Relayer.ts
+++ b/src/relayer/Relayer.ts
@@ -1251,21 +1251,29 @@ export class Relayer {
         if (this.clients.inventoryClient.isInventoryManagementEnabled() && chainId !== hubChainId) {
           // Shortfalls are mapped to deposit output tokens so look up output token in token symbol map.
           const l1Token = this.clients.hubPoolClient.getL1TokenInfoForAddress(token, chainId);
-          crossChainLog =
-            "There is " +
-            formatter(
-              this.clients.inventoryClient.crossChainTransferClient
-                .getOutstandingCrossChainTransferAmount(this.relayerAddress, chainId, l1Token.address, token)
-                // TODO: Add in additional l2Token param here once we can specify it
-                .toString()
-            ) +
-            ` inbound L1->L2 ${symbol} transfers. `;
+          const outstandingCrossChainTransferAmount =
+            this.clients.inventoryClient.crossChainTransferClient.getOutstandingCrossChainTransferAmount(
+              this.relayerAddress,
+              chainId,
+              l1Token.address,
+              token
+            );
+          crossChainLog = outstandingCrossChainTransferAmount.gt(0)
+            ? " There is " +
+              formatter(
+                this.clients.inventoryClient.crossChainTransferClient
+                  .getOutstandingCrossChainTransferAmount(this.relayerAddress, chainId, l1Token.address, token)
+                  // TODO: Add in additional l2Token param here once we can specify it
+                  .toString()
+              ) +
+              ` inbound L1->L2 ${symbol} transfers. `
+            : undefined;
         }
         mrkdwn +=
           ` - ${symbol} cumulative shortfall of ` +
           `${formatter(shortfall.toString())} ` +
           `(have ${formatter(balance.toString())} but need ` +
-          `${formatter(needed.toString())}). ${crossChainLog}` +
+          `${formatter(needed.toString())}).${crossChainLog}` +
           `This is blocking deposits: ${deposits}.\n`;
       });
     });

From 5ed67e430dc91d841528ffb333e51ad777781b96 Mon Sep 17 00:00:00 2001
From: Paul <108695806+pxrl@users.noreply.github.com>
Date: Tue, 10 Dec 2024 21:35:18 +0100
Subject: [PATCH 6/8] chore: Bump constants (#1945)

For POOL on World Chain.
---
 package.json | 2 +-
 yarn.lock    | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 59fd040d05..81c5304f40 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
     "node": ">=20"
   },
   "dependencies": {
-    "@across-protocol/constants": "^3.1.20",
+    "@across-protocol/constants": "^3.1.21",
     "@across-protocol/contracts": "^3.0.16",
     "@across-protocol/sdk": "^3.3.21",
     "@arbitrum/sdk": "^4.0.2",
diff --git a/yarn.lock b/yarn.lock
index 1b90d97936..117f6cb6db 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -21,6 +21,11 @@
   resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.20.tgz#305bd41f5644b7db5d9fd12a6a6b4bbbbe2fd016"
   integrity sha512-B5RsvuOQsZdFgLk0WcFZGmoivm6g6gv95a+YKVBydcxZkNxAsyP065UQEDAmvRXvPhqGyehhd52515Xa/3bzyg==
 
+"@across-protocol/constants@^3.1.21":
+  version "3.1.21"
+  resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.21.tgz#e5852daa51b4e1a215a32672c252287fea593256"
+  integrity sha512-ajDGLpsbmse3XYPFKsih98RO/CSzpRj4iiPIzfOUvmslBfm3vIYj5nVdLKahgPumsQ+Yq2W3+PF+ZSr6Ac3tRg==
+
 "@across-protocol/contracts@^0.1.4":
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-0.1.4.tgz#64b3d91e639d2bb120ea94ddef3d160967047fa5"

From 3ea50ffe512a9adfd98678075df5f3d54f2ed5fe Mon Sep 17 00:00:00 2001
From: Paul <108695806+pxrl@users.noreply.github.com>
Date: Mon, 16 Dec 2024 16:50:52 +0100
Subject: [PATCH 7/8] chore: Bump constants, contracts & sdk (#1941)

For some RPC-related improvements & bugfixes, as well as:
- WBTC on Lisk.
- POOL on World Chain.
- USDC.e on Aleph Zero.
---
 package.json                         |   6 +-
 test/Dataworker.loadData.slowFill.ts |   2 -
 test/Relayer.BasicFill.ts            |   2 -
 test/Relayer.SlowFill.ts             |   1 -
 yarn.lock                            | 152 ++++++++++++++++++---------
 5 files changed, 106 insertions(+), 57 deletions(-)

diff --git a/package.json b/package.json
index 81c5304f40..d0c2e86e39 100644
--- a/package.json
+++ b/package.json
@@ -10,9 +10,9 @@
     "node": ">=20"
   },
   "dependencies": {
-    "@across-protocol/constants": "^3.1.21",
-    "@across-protocol/contracts": "^3.0.16",
-    "@across-protocol/sdk": "^3.3.21",
+    "@across-protocol/constants": "^3.1.22",
+    "@across-protocol/contracts": "^3.0.18",
+    "@across-protocol/sdk": "^3.3.25",
     "@arbitrum/sdk": "^4.0.2",
     "@consensys/linea-sdk": "^0.2.1",
     "@defi-wonderland/smock": "^2.3.5",
diff --git a/test/Dataworker.loadData.slowFill.ts b/test/Dataworker.loadData.slowFill.ts
index 1fb54e7154..926c9e873a 100644
--- a/test/Dataworker.loadData.slowFill.ts
+++ b/test/Dataworker.loadData.slowFill.ts
@@ -321,8 +321,6 @@ describe("BundleDataClient: Slow fill handling & validation", async function ()
     const destinationChainDeposit = spokePoolClient_2.getDeposits()[0];
 
     // Generate slow fill requests for the slow fill-eligible deposits
-    await spokePool_1.setCurrentTime(depositsWithSlowFillRequests[1].exclusivityDeadline + 1); // Temporary workaround
-    await spokePool_2.setCurrentTime(depositsWithSlowFillRequests[0].exclusivityDeadline + 1); // Temporary workaround
     await requestSlowFill(spokePool_2, relayer, depositsWithSlowFillRequests[0]);
     await requestSlowFill(spokePool_1, relayer, depositsWithSlowFillRequests[1]);
     const lastDestinationChainSlowFillRequestBlock = await spokePool_2.provider.getBlockNumber();
diff --git a/test/Relayer.BasicFill.ts b/test/Relayer.BasicFill.ts
index f9d322cc4c..3522cc43a9 100644
--- a/test/Relayer.BasicFill.ts
+++ b/test/Relayer.BasicFill.ts
@@ -937,7 +937,6 @@ describe("Relayer: Check for Unfilled Deposits and Fill", async function () {
             spy.getCalls().find(({ lastArg }) => lastArg.message.includes("Skipping fill for deposit with message"))
           ).to.not.be.undefined;
         } else {
-          await spokePool_2.setCurrentTime(deposit.exclusivityDeadline + 1); // Temporary workaround.
           // Now speed up deposit again with a higher fee and a message of 0x. This should be filled.
           expect((await txnReceipts[destinationChainId]).length).to.equal(1);
           expect(lastSpyLogIncludes(spy, "Filled v3 deposit")).to.be.true;
@@ -1011,7 +1010,6 @@ describe("Relayer: Check for Unfilled Deposits and Fill", async function () {
         depositor
       );
 
-      await spokePool_2.setCurrentTime(deposit.exclusivityDeadline + 1); // Temporary workaround.
       await updateAllClients();
       txnReceipts = await relayerInstance.checkForUnfilledDepositsAndFill();
       expect((await txnReceipts[destinationChainId]).length).to.equal(1);
diff --git a/test/Relayer.SlowFill.ts b/test/Relayer.SlowFill.ts
index 15e4d305ae..008559a1b6 100644
--- a/test/Relayer.SlowFill.ts
+++ b/test/Relayer.SlowFill.ts
@@ -209,7 +209,6 @@ describe("Relayer: Initiates slow fill requests", async function () {
     );
     expect(deposit).to.exist;
 
-    await spokePool_2.setCurrentTime(deposit.exclusivityDeadline + 1); // Temporary workaround
     await updateAllClients();
     const _txnReceipts = await relayerInstance.checkForUnfilledDepositsAndFill();
     const txnHashes = await _txnReceipts[destinationChainId];
diff --git a/yarn.lock b/yarn.lock
index 117f6cb6db..5c34e9a5ea 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11,20 +11,10 @@
     "@uma/common" "^2.17.0"
     hardhat "^2.9.3"
 
-"@across-protocol/constants@^3.1.19":
-  version "3.1.19"
-  resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.19.tgz#3c29b52ec5f2eece93a6abd50d580668b03dd7b3"
-  integrity sha512-XOFF+o64TDn57xNfUB38kWy8lYyE9lB7PBdyoMOadsXx00HC3KMznFi/paLRKT1iZ50vDwHp00tNZbr7Z7umzA==
-
-"@across-protocol/constants@^3.1.20":
-  version "3.1.20"
-  resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.20.tgz#305bd41f5644b7db5d9fd12a6a6b4bbbbe2fd016"
-  integrity sha512-B5RsvuOQsZdFgLk0WcFZGmoivm6g6gv95a+YKVBydcxZkNxAsyP065UQEDAmvRXvPhqGyehhd52515Xa/3bzyg==
-
-"@across-protocol/constants@^3.1.21":
-  version "3.1.21"
-  resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.21.tgz#e5852daa51b4e1a215a32672c252287fea593256"
-  integrity sha512-ajDGLpsbmse3XYPFKsih98RO/CSzpRj4iiPIzfOUvmslBfm3vIYj5nVdLKahgPumsQ+Yq2W3+PF+ZSr6Ac3tRg==
+"@across-protocol/constants@^3.1.22":
+  version "3.1.22"
+  resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.22.tgz#888fb6852b9781aa9f872ac44e888d7bf2a643c7"
+  integrity sha512-l9CteL0FGHPPIbLaAztANpm/uNk8jV7hmDuecAToZdqAgqcN9E9Hfi44Fflr6H882uVsNlTU0/h1oWkTeifUnA==
 
 "@across-protocol/contracts@^0.1.4":
   version "0.1.4"
@@ -35,12 +25,12 @@
     "@openzeppelin/contracts" "4.1.0"
     "@uma/core" "^2.18.0"
 
-"@across-protocol/contracts@^3.0.16":
-  version "3.0.16"
-  resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-3.0.16.tgz#22eb0c1dcdb01e8ca504dc2351d46513d9f71cc6"
-  integrity sha512-vwg+PmWaenlrx7kTHZdjDTTj1PwXWFU3rMlFyfKM8xBXbPWhIfMQCKCYOwFrGmZw2nRTYgoyhoKN/f6rUs/snw==
+"@across-protocol/contracts@^3.0.18":
+  version "3.0.18"
+  resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-3.0.18.tgz#b5acbebcb249b193a4d9a019a7cd5af00131a70b"
+  integrity sha512-4eWgmK8D33ezNZPx/ePLnh3Za0FfcHj5mmDK5FfWbeOM+AjXOzV7miV2/xBcEZXclhIc52e3GcPdbegI15lA2w==
   dependencies:
-    "@across-protocol/constants" "^3.1.19"
+    "@across-protocol/constants" "^3.1.22"
     "@coral-xyz/anchor" "^0.30.1"
     "@defi-wonderland/smock" "^2.3.4"
     "@eth-optimism/contracts" "^0.5.40"
@@ -54,28 +44,28 @@
     "@solana/spl-token" "^0.4.6"
     "@solana/web3.js" "^1.31.0"
     "@types/yargs" "^17.0.33"
-    "@uma/common" "^2.34.0"
+    "@uma/common" "^2.37.3"
     "@uma/contracts-node" "^0.4.17"
-    "@uma/core" "^2.56.0"
+    "@uma/core" "^2.61.0"
     axios "^1.7.4"
     bs58 "^6.0.0"
     prettier-plugin-rust "^0.1.9"
     yargs "^17.7.2"
     zksync-web3 "^0.14.3"
 
-"@across-protocol/sdk@^3.3.21":
-  version "3.3.21"
-  resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-3.3.21.tgz#f223a0d88b09c5f2335723b89e777a36df5255ca"
-  integrity sha512-N/0H5KwPS+iyMh8m1QvIPBNJuPFhHlRW1841AzcmhXdzwRtbarmSWXaXNDifeWDWMf3Fie8TN2WnSW4oQKd1HQ==
+"@across-protocol/sdk@^3.3.25":
+  version "3.3.25"
+  resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-3.3.25.tgz#6eec255fb7a1025050e0415b56f1bf8681936b1e"
+  integrity sha512-nBBrXY/kslvfsYnVd6kTNOuDSomlfRTw6v4uI40au/rEzPQ6G8X5d/F+DGN3iPfi3ltHY5BEiqE+E6s7AxHA8A==
   dependencies:
     "@across-protocol/across-token" "^1.0.0"
-    "@across-protocol/constants" "^3.1.20"
-    "@across-protocol/contracts" "^3.0.16"
+    "@across-protocol/constants" "^3.1.22"
+    "@across-protocol/contracts" "^3.0.18"
     "@eth-optimism/sdk" "^3.3.1"
     "@ethersproject/bignumber" "^5.7.0"
     "@pinata/sdk" "^2.1.0"
     "@types/mocha" "^10.0.1"
-    "@uma/sdk" "^0.34.1"
+    "@uma/sdk" "^0.34.10"
     arweave "^1.14.4"
     async "^3.2.5"
     axios "^0.27.2"
@@ -3539,17 +3529,63 @@
     web3 "^1.6.0"
     winston "^3.2.1"
 
-"@uma/contracts-frontend@^0.4.18":
-  version "0.4.18"
-  resolved "https://registry.yarnpkg.com/@uma/contracts-frontend/-/contracts-frontend-0.4.18.tgz#339093239ea6f2ba2914de424ad609e6f9346379"
-  integrity sha512-0UcA0Io+RB8p2BAeoyubNb0wQzvIWynQ2805ZzbwWhDB2jlW2xRNAKPRP6kcxaqtzCYcEoLnsTLwOP0ojmeWjw==
+"@uma/common@^2.37.3":
+  version "2.37.3"
+  resolved "https://registry.yarnpkg.com/@uma/common/-/common-2.37.3.tgz#0d7fda1227e3a05563544bb36f418a790c81129d"
+  integrity sha512-DLcM2xtiFWDbty21r2gsL6AJbOc8G/CMqg0iMxssvkKbz8varsWS44zJF85XGxMlY8fE40w0ZS8MR92xpbsu4g==
+  dependencies:
+    "@across-protocol/contracts" "^0.1.4"
+    "@ethersproject/address" "^5.7.0"
+    "@ethersproject/bignumber" "^5.0.5"
+    "@ethersproject/bytes" "^5.7.0"
+    "@ethersproject/constants" "^5.7.0"
+    "@google-cloud/kms" "^3.0.1"
+    "@google-cloud/storage" "^6.4.2"
+    "@nomicfoundation/hardhat-verify" "^1.0.4"
+    "@nomiclabs/hardhat-ethers" "^2.2.1"
+    "@nomiclabs/hardhat-web3" "^2.0.0"
+    "@truffle/contract" "4.6.17"
+    "@truffle/hdwallet-provider" eip1559-beta
+    "@types/ethereum-protocol" "^1.0.0"
+    "@uniswap/v3-core" "^1.0.0-rc.2"
+    abi-decoder "github:UMAprotocol/abi-decoder"
+    async-retry "^1.3.3"
+    axios "^1.6.1"
+    bignumber.js "^8.0.1"
+    chalk-pipe "^3.0.0"
+    decimal.js "^10.2.1"
+    dotenv "^9.0.0"
+    eth-crypto "^2.4.0"
+    hardhat-deploy "0.9.1"
+    hardhat-gas-reporter "^1.0.4"
+    hardhat-typechain "^0.3.5"
+    lodash.uniqby "^4.7.0"
+    minimist "^1.2.0"
+    moment "^2.24.0"
+    node-fetch "^2.6.0"
+    node-metamask "github:UMAprotocol/node-metamask"
+    require-context "^1.1.0"
+    solidity-coverage "^0.7.13"
+    truffle-deploy-registry "^0.5.1"
+    web3 "^1.6.0"
+    winston "^3.2.1"
 
-"@uma/contracts-node@^0.4.0", "@uma/contracts-node@^0.4.17", "@uma/contracts-node@^0.4.18":
+"@uma/contracts-frontend@^0.4.25":
+  version "0.4.25"
+  resolved "https://registry.yarnpkg.com/@uma/contracts-frontend/-/contracts-frontend-0.4.25.tgz#86fd9e07d0466e04be41c48856e292b0f0de0722"
+  integrity sha512-LfkMw0lO+H+hUPevoAFogVu5iJTXp+Q2ChddqiynvvrwZ/lrNHrOjj0uEX1winjJXTLFs78jBK1AsIkkYK2VTQ==
+
+"@uma/contracts-node@^0.4.0", "@uma/contracts-node@^0.4.17":
   version "0.4.18"
   resolved "https://registry.yarnpkg.com/@uma/contracts-node/-/contracts-node-0.4.18.tgz#3d3e0ad7dc70b81b3d0dbe722b4eba93bd29f9bf"
   integrity sha512-JiICiNPEfL18JrddxjSNQUs0/gRMAvdqejIu7UP8JTG4Cup8tDJ6TejZJxBVHlmtB6hSOBnbLoPXb/uLtfdQiw==
 
-"@uma/core@^2.18.0", "@uma/core@^2.56.0":
+"@uma/contracts-node@^0.4.25":
+  version "0.4.25"
+  resolved "https://registry.yarnpkg.com/@uma/contracts-node/-/contracts-node-0.4.25.tgz#d5c82f1f2c7e0dc2dec26fe876db73ba3f0689d7"
+  integrity sha512-WaFojX4qyMmXpy5MBS7g0M0KnWESGusdSfTmlkZpCh65TksGaJwAyOM1YBRLL3xm3xSgxPoG+n6tTilSomUmOw==
+
+"@uma/core@^2.18.0":
   version "2.56.0"
   resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.56.0.tgz#c19aa427f08691a85e99ec523d23abf359a6b0c3"
   integrity sha512-unylWwHeD/1mYcj1t2UPVgj1V+ceBLSo/BcYKgZyyBIHYAkC6bOx4egV/2NrhWPt3sX5CZFG1I1kMAqgp245tQ==
@@ -3566,6 +3602,22 @@
     "@uniswap/v3-core" "^1.0.0-rc.2"
     "@uniswap/v3-periphery" "^1.0.0-beta.23"
 
+"@uma/core@^2.61.0":
+  version "2.61.0"
+  resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.61.0.tgz#29580736349a47af8fb10beb4bb3b50bfcf912f5"
+  integrity sha512-bnk+CWW+uWpRilrgUny/gDXHKomG+h1Ug84OXdx+AAvj1/BtlMDOCNNt1OX8LSAz+a0hkiN9s24/zgHclTC/sg==
+  dependencies:
+    "@gnosis.pm/safe-contracts" "^1.3.0"
+    "@gnosis.pm/zodiac" "3.2.0"
+    "@maticnetwork/fx-portal" "^1.0.4"
+    "@openzeppelin/contracts" "4.9.6"
+    "@uma/common" "^2.37.3"
+    "@uniswap/lib" "4.0.1-alpha"
+    "@uniswap/v2-core" "1.0.0"
+    "@uniswap/v2-periphery" "1.1.0-beta.0"
+    "@uniswap/v3-core" "^1.0.0-rc.2"
+    "@uniswap/v3-periphery" "^1.0.0-beta.23"
+
 "@uma/logger@^1.3.0":
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/@uma/logger/-/logger-1.3.0.tgz#df5beb2efb4333aa3da320ba3a02168a627dbe72"
@@ -3599,19 +3651,19 @@
     mocha "^8.3.0"
     node-fetch "^2.6.1"
 
-"@uma/sdk@^0.34.1":
-  version "0.34.3"
-  resolved "https://registry.yarnpkg.com/@uma/sdk/-/sdk-0.34.3.tgz#cd358e11df02abcf163703d94d4c5f448220b999"
-  integrity sha512-1DqzkculvR5qlRv0R1by9F/RJfMWgFgQa4nn4W2pWhyTvhsTi7/9ZFDbRgm5iU9xRHnWWZiEQE89SIZ8Vl+UiQ==
+"@uma/sdk@^0.34.10":
+  version "0.34.10"
+  resolved "https://registry.yarnpkg.com/@uma/sdk/-/sdk-0.34.10.tgz#ae2bb4d1f5f4140aef0f7d6141620d70dbd57f35"
+  integrity sha512-Jo64XpbCxquuPIIktQCWFMNN/vCTyA1SbVXMrlmXgO7NAtPPMyPBlsKJr+N0/QrqymBQcO5wzdmo+EqJaeKIHw==
   dependencies:
     "@eth-optimism/core-utils" "^0.7.7"
     "@ethersproject/abstract-signer" "^5.4.0"
     "@ethersproject/providers" "^5.4.2"
     "@google-cloud/datastore" "^8.2.1"
     "@types/lodash-es" "^4.17.5"
-    "@uma/contracts-frontend" "^0.4.18"
-    "@uma/contracts-node" "^0.4.18"
-    axios "^0.24.0"
+    "@uma/contracts-frontend" "^0.4.25"
+    "@uma/contracts-node" "^0.4.25"
+    axios "^1.6.0"
     bluebird "^3.7.2"
     bn.js "^4.11.9"
     decimal.js "^10.3.1"
@@ -4295,13 +4347,6 @@ axios@^0.21.1, axios@^0.21.2:
   dependencies:
     follow-redirects "^1.14.0"
 
-axios@^0.24.0:
-  version "0.24.0"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6"
-  integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==
-  dependencies:
-    follow-redirects "^1.14.4"
-
 axios@^0.27.2:
   version "0.27.2"
   resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
@@ -4310,6 +4355,15 @@ axios@^0.27.2:
     follow-redirects "^1.14.9"
     form-data "^4.0.0"
 
+axios@^1.6.0, axios@^1.6.1:
+  version "1.7.9"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a"
+  integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==
+  dependencies:
+    follow-redirects "^1.15.6"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
+
 axios@^1.7.4:
   version "1.7.4"
   resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2"
@@ -7557,7 +7611,7 @@ fn.name@1.x.x:
   resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
   integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
 
-follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.4, follow-redirects@^1.14.9, follow-redirects@^1.15.6:
+follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9, follow-redirects@^1.15.6:
   version "1.15.9"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
   integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==

From 4d9d83ddb00b7f2566ce3fc3e61b8e5db4e79739 Mon Sep 17 00:00:00 2001
From: Paul <108695806+pxrl@users.noreply.github.com>
Date: Mon, 16 Dec 2024 18:11:52 +0100
Subject: [PATCH 8/8] chore: Enable WBTC/Lisk and POOL/WorldChain (#1951)

---
 src/common/Constants.ts | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/common/Constants.ts b/src/common/Constants.ts
index 59fe6b34e9..b6dc7d6c7b 100644
--- a/src/common/Constants.ts
+++ b/src/common/Constants.ts
@@ -311,13 +311,13 @@ export const SUPPORTED_TOKENS: { [chainId: number]: string[] } = {
   [CHAIN_IDs.BASE]: ["BAL", "DAI", "ETH", "WETH", "USDC", "POOL"],
   [CHAIN_IDs.BLAST]: ["DAI", "WBTC", "WETH"],
   [CHAIN_IDs.LINEA]: ["USDC", "USDT", "WETH", "WBTC", "DAI"],
-  [CHAIN_IDs.LISK]: ["WETH", "USDT", "LSK"],
+  [CHAIN_IDs.LISK]: ["WETH", "USDT", "LSK", "WBTC"],
   [CHAIN_IDs.MODE]: ["ETH", "WETH", "USDC", "USDT", "WBTC"],
   [CHAIN_IDs.OPTIMISM]: ["DAI", "SNX", "BAL", "WETH", "USDC", "POOL", "USDT", "WBTC", "UMA", "ACX"],
   [CHAIN_IDs.POLYGON]: ["USDC", "USDT", "WETH", "DAI", "WBTC", "UMA", "BAL", "ACX", "POOL"],
   [CHAIN_IDs.REDSTONE]: ["WETH"],
   [CHAIN_IDs.SCROLL]: ["WETH", "USDC", "USDT", "WBTC", "POOL"],
-  [CHAIN_IDs.WORLD_CHAIN]: ["WETH", "WBTC", "USDC"],
+  [CHAIN_IDs.WORLD_CHAIN]: ["WETH", "WBTC", "USDC", "POOL"],
   [CHAIN_IDs.ZK_SYNC]: ["USDC", "USDT", "WETH", "WBTC", "DAI"],
   [CHAIN_IDs.ZORA]: ["USDC", "WETH"],