Skip to content

Commit 4493018

Browse files
committed
Refactor and address comments
1 parent e7f1060 commit 4493018

File tree

5 files changed

+44
-18
lines changed

5 files changed

+44
-18
lines changed

api/_bridges/index.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { getHyperCoreBridgeStrategy } from "./hypercore/strategy";
33
import {
44
BridgeStrategiesConfig,
55
BridgeStrategy,
6+
BridgeStrategyDataParams,
67
GetBridgeStrategyParams,
78
} from "./types";
89
import { CHAIN_IDs } from "../_constants";
@@ -37,7 +38,6 @@ export async function getBridgeStrategy({
3738
amountType,
3839
recipient,
3940
depositor,
40-
logger,
4141
}: GetBridgeStrategyParams): Promise<BridgeStrategy> {
4242
const fromToChainOverride =
4343
bridgeStrategies.fromToChains?.[originChainId]?.[destinationChainId];
@@ -50,14 +50,34 @@ export async function getBridgeStrategy({
5050
if (supportedBridgeStrategies.length === 1) {
5151
return supportedBridgeStrategies[0];
5252
}
53+
if (supportedBridgeStrategies.includes(getCctpBridgeStrategy())) {
54+
return routeStrategyForCctp({
55+
inputToken,
56+
outputToken,
57+
amount,
58+
amountType,
59+
recipient,
60+
depositor,
61+
});
62+
}
63+
return getAcrossBridgeStrategy();
64+
}
65+
66+
async function routeStrategyForCctp({
67+
inputToken,
68+
outputToken,
69+
amount,
70+
amountType,
71+
recipient,
72+
depositor,
73+
}: BridgeStrategyDataParams): Promise<BridgeStrategy> {
5374
const bridgeStrategyData = await getBridgeStrategyData({
5475
inputToken,
5576
outputToken,
5677
amount,
5778
amountType,
5879
recipient,
5980
depositor,
60-
logger,
6181
});
6282
if (!bridgeStrategyData) {
6383
return bridgeStrategies.default;
@@ -87,7 +107,6 @@ export async function getBridgeStrategy({
87107
if (bridgeStrategyData.isLargeDeposit) {
88108
return getAcrossBridgeStrategy();
89109
} else {
90-
// Use OFT bridge if not CCTP
91110
return getCctpBridgeStrategy();
92111
}
93112
}

api/_bridges/oft/strategy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ export function getOftBridgeStrategy(): BridgeStrategy {
487487
ecosystem: "evm" as const,
488488
};
489489
},
490+
isRouteSupported,
490491
};
491492
}
492493

api/_bridges/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export type BridgeStrategyDataParams = {
119119
amountType: "exactInput" | "exactOutput" | "minOutput";
120120
recipient?: string;
121121
depositor: string;
122-
logger: Logger;
122+
logger?: Logger;
123123
};
124124

125125
export type GetBridgeStrategyParams = {

api/_bridges/utils.ts

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,24 @@ import {
88
BridgeStrategyDataParams,
99
} from "../_bridges/types";
1010

11+
const ACROSS_THRESHOLD = 10_000; // 10K USD
12+
const LARGE_DEPOSIT_THRESHOLD = 1_000_000; // 1M USD
13+
1114
export function isFullyUtilized(limits: LimitsResponse): boolean {
1215
// Check if utilization is high (>80%)
1316
const { liquidReserves, utilizedReserves } = limits.reserves;
1417
const _liquidReserves = BigNumber.from(liquidReserves);
1518
const _utilizedReserves = BigNumber.from(utilizedReserves);
19+
const flooredUtilizedReserves = _utilizedReserves.gt(0)
20+
? _utilizedReserves
21+
: BigNumber.from(0);
1622

1723
const utilizationThreshold = sdk.utils.fixedPointAdjustment.mul(80).div(100); // 80%
1824

1925
// Calculate current utilization percentage
20-
const currentUtilization = _utilizedReserves
26+
const currentUtilization = flooredUtilizedReserves
2127
.mul(sdk.utils.fixedPointAdjustment)
22-
.div(_liquidReserves.add(_utilizedReserves));
28+
.div(_liquidReserves.add(flooredUtilizedReserves));
2329

2430
return currentUtilization.gt(utilizationThreshold);
2531
}
@@ -69,15 +75,14 @@ export async function getBridgeStrategyData({
6975
const depositAmountUsd = parseFloat(
7076
ethers.utils.formatUnits(amountInInputTokenDecimals, inputToken.decimals)
7177
);
72-
const isInThreshold = depositAmountUsd <= 10_000; // 10K USD
73-
const isLargeDeposit = depositAmountUsd > 1_000_000; // 1M USD
78+
const isInThreshold = depositAmountUsd <= ACROSS_THRESHOLD;
79+
const isLargeDeposit = depositAmountUsd > LARGE_DEPOSIT_THRESHOLD;
7480

7581
// Check if eligible for Fast CCTP (Polygon, BSC, Solana) and deposit > 10K USD
7682
const fastCctpChains = [CHAIN_IDs.POLYGON, CHAIN_IDs.BSC, CHAIN_IDs.SOLANA];
77-
const isFastCctpChain =
78-
fastCctpChains.includes(inputToken.chainId) ||
79-
fastCctpChains.includes(outputToken.chainId);
80-
const isFastCctpEligible = isFastCctpChain && depositAmountUsd > 10_000; // 10K USD
83+
const isFastCctpChain = fastCctpChains.includes(inputToken.chainId);
84+
const isFastCctpEligible =
85+
isFastCctpChain && depositAmountUsd > ACROSS_THRESHOLD;
8186

8287
// Check if Linea is the source chain
8388
const isLineaSource = inputToken.chainId === CHAIN_IDs.LINEA;
@@ -92,11 +97,13 @@ export async function getBridgeStrategyData({
9297
isLineaSource,
9398
};
9499
} catch (error) {
95-
logger.warn({
96-
at: "getBridgeStrategyData",
97-
message: "Failed to fetch bridge strategy data, using defaults",
98-
error: error instanceof Error ? error.message : String(error),
99-
});
100+
if (logger) {
101+
logger.warn({
102+
at: "getBridgeStrategyData",
103+
message: "Failed to fetch bridge strategy data, using defaults",
104+
error: error instanceof Error ? error.message : String(error),
105+
});
106+
}
100107

101108
// Safely return undefined if we can't fetch bridge strategy data
102109
return undefined;

api/swap/approval/_service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export async function handleApprovalSwap(
8888
amountType,
8989
recipient,
9090
depositor,
91-
logger,
9291
});
9392

9493
const crossSwapQuotes = await getCrossSwapQuotes(

0 commit comments

Comments
 (0)