diff --git a/package.json b/package.json index 5b29fb08aa..54412ac8a6 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "**/@openzeppelin/*", "**/@synapsecns/solidity-devops", "**/ds-test", - "**/forge-std" + "**/forge-std", + "**/pino" ] }, "repository": { diff --git a/packages/rest-api/src/constants/bridgeMap.ts b/packages/rest-api/src/constants/bridgeMap.ts index dda798b68c..50fddc83d2 100644 --- a/packages/rest-api/src/constants/bridgeMap.ts +++ b/packages/rest-api/src/constants/bridgeMap.ts @@ -308,8 +308,8 @@ export const BRIDGE_MAP = { '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'RFQ.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'RFQ.USDC', 'Intents'], swappable: [ '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', @@ -365,8 +365,8 @@ export const BRIDGE_MAP = { '0x7F5c764cBc14f9669B88837ca1490cCa17c31607': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -388,8 +388,8 @@ export const BRIDGE_MAP = { '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9': { decimals: 18, symbol: 'sUSD', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -401,8 +401,8 @@ export const BRIDGE_MAP = { '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -421,8 +421,8 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -441,8 +441,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['RFQ.ETH', 'nETH'], - destination: ['nETH', 'RFQ.ETH'], + origin: ['RFQ.ETH', 'nETH', 'Intents'], + destination: ['nETH', 'RFQ.ETH', 'Intents'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -1527,8 +1527,8 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1540,8 +1540,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['RFQ.ETH', 'nETH'], - destination: ['nETH', 'RFQ.ETH'], + origin: ['RFQ.ETH', 'nETH', 'Intents'], + destination: ['nETH', 'RFQ.ETH', 'Intents'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1550,8 +1550,8 @@ export const BRIDGE_MAP = { '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1563,8 +1563,8 @@ export const BRIDGE_MAP = { '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1583,8 +1583,8 @@ export const BRIDGE_MAP = { '0xaf88d065e77c8cC2239327C5EDb3A432268e5831': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'RFQ.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'RFQ.USDC', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1596,8 +1596,8 @@ export const BRIDGE_MAP = { '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a': { decimals: 18, symbol: 'GMX', - origin: ['GMX'], - destination: ['GMX'], + origin: ['GMX', 'Intents'], + destination: ['GMX', 'Intents'], swappable: [], }, }, diff --git a/packages/sdk-router/package.json b/packages/sdk-router/package.json index e8569b9ba9..c38fe03d1b 100644 --- a/packages/sdk-router/package.json +++ b/packages/sdk-router/package.json @@ -78,6 +78,7 @@ "jest": "^29.7.0", "jsbi": "^4.3.0", "node-cache": "^5.1.2", + "pino": "^9.5.0", "tiny-invariant": "^1.2.0", "toformat": "^2.0.0", "ts-xor": "^1.1.0", diff --git a/packages/sdk-router/src/rfq/api.ts b/packages/sdk-router/src/rfq/api.ts index 9fe78c77e9..78a1137792 100644 --- a/packages/sdk-router/src/rfq/api.ts +++ b/packages/sdk-router/src/rfq/api.ts @@ -6,6 +6,7 @@ import { FastBridgeQuoteAPI, unmarshallFastBridgeQuote, } from './quote' +import { logger } from '../utils/logger' const API_URL = 'https://rfq-api-stage.omnirpc.io' const API_TIMEOUT = 2000 @@ -65,12 +66,18 @@ export const fetchWithTimeout = async ( timeout: number, init?: RequestInit ): Promise => { + const start = Date.now() const controller = new AbortController() const reason = `Timeout of ${timeout}ms exceeded for ${url}` const timeoutId = setTimeout(() => (controller.abort as any)(reason), timeout) - return fetch(url, { signal: controller.signal, ...init }).finally(() => - clearTimeout(timeoutId) - ) + return fetch(url, { signal: controller.signal, ...init }) + .then((response) => { + const end = Date.now() + const timeTaken = end - start + logger.info({ url, timeTaken }, 'API request completed') + return response + }) + .finally(() => clearTimeout(timeoutId)) } /** @@ -83,23 +90,27 @@ export const getAllQuotes = async (): Promise => { try { const response = await fetchWithTimeout(`${API_URL}/quotes`, API_TIMEOUT) if (!response.ok) { - console.error('Error fetching quotes:', response.statusText) + logger.error({ response }, 'Error fetching quotes') return [] } // The response is a list of quotes in the FastBridgeQuoteAPI format const quotes: FastBridgeQuoteAPI[] = await response.json() + logger.info( + { quotes }, + `Received ${quotes.length} quotes from ${API_URL}/quotes` + ) return quotes .map((quote) => { try { return unmarshallFastBridgeQuote(quote) } catch (error) { - console.error('Error unmarshalling quote:', error) + logger.error({ quote, error }, 'Error unmarshalling quote') return null } }) .filter((quote): quote is FastBridgeQuote => quote !== null) } catch (error) { - console.error('Error fetching quotes:', error) + logger.error({ error }, 'Error fetching quotes') return [] } } @@ -141,28 +152,34 @@ export const getBestRelayerQuote = async ( }, }) if (!response.ok) { - console.error('Error fetching quote:', response.statusText) + logger.error({ rfqRequest, response }, 'Error fetching quote') return ZeroQuote } // Check that response is successful, contains non-zero dest amount, and has a relayer address const rfqResponse: PutRFQResponseAPI = await response.json() + logger.info( + { rfqRequest, rfqResponse }, + `Received quote from ${API_URL}/rfq` + ) if (!rfqResponse.success) { - console.error( - 'No RFQ quote returned:', - rfqResponse.reason ?? 'Unknown reason' + logger.error( + { + reason: rfqResponse.reason ?? 'Unknown reason', + }, + 'No RFQ quote returned' ) return ZeroQuote } if (!rfqResponse.dest_amount || !rfqResponse.relayer_address) { - console.error( - 'Error fetching quote: missing dest_amount or relayer_address in response:', - rfqResponse + logger.error( + { rfqResponse }, + 'Error fetching quote: missing dest_amount or relayer_address in response:' ) return ZeroQuote } const destAmount = BigNumber.from(rfqResponse.dest_amount) if (destAmount.lte(0)) { - console.error('No RFQ quote returned') + logger.error({ rfqResponse }, 'No RFQ quote returned') return ZeroQuote } return { @@ -171,7 +188,7 @@ export const getBestRelayerQuote = async ( quoteID: rfqResponse.quote_id, } } catch (error) { - console.error('Error fetching quote:', error) + logger.error({ error }, 'Error fetching quote') return ZeroQuote } } diff --git a/packages/sdk-router/src/rfq/engine/odosEngine.ts b/packages/sdk-router/src/rfq/engine/odosEngine.ts index f2533d0ab1..74f284103a 100644 --- a/packages/sdk-router/src/rfq/engine/odosEngine.ts +++ b/packages/sdk-router/src/rfq/engine/odosEngine.ts @@ -19,6 +19,7 @@ import { import { AddressMap } from '../../constants' import { isSameAddress } from '../../utils/addressUtils' import { isNativeToken } from '../../utils/handleNativeToken' +import { logger } from '../../utils/logger' const ODOS_API_URL = 'https://api.odos.xyz/sor' const ODOS_API_TIMEOUT = 2000 @@ -112,7 +113,7 @@ export class OdosEngine implements SwapEngine { request.inputTokens.length !== 1 || request.outputTokens.length !== 1 ) { - console.error({ request }, 'Multi-token swaps not supported') + logger.error({ request }, 'Multi-token swaps not supported') return EMPTY_SWAP_API_RESPONSE } // Get a quote with the pathID first @@ -128,7 +129,11 @@ export class OdosEngine implements SwapEngine { } ) if (!response.ok) { - console.error({ request, response }, 'Error fetching Odos response') + const responseText = await response.text() + logger.error( + { request, response, responseText }, + 'Error fetching Odos response' + ) return EMPTY_SWAP_API_RESPONSE } const odosQuoteResponse: OdosQuoteResponse = await response.json() @@ -136,14 +141,18 @@ export class OdosEngine implements SwapEngine { odosQuoteResponse.outAmounts.length !== 1 || !odosQuoteResponse.pathId ) { - console.error({ request, response }, 'Invalid Odos response') + logger.error({ request, response }, 'Invalid Odos response') return EMPTY_SWAP_API_RESPONSE } const amountOut = odosQuoteResponse.outAmounts[0] if (amountOut === '0') { - console.info({ request, response }, 'Zero amount out') + logger.info({ request, response }, 'Zero amount out') return EMPTY_SWAP_API_RESPONSE } + logger.info( + { request, response, amountOut }, + 'Received amount out from Odos' + ) // Once we verified the amount out, we can assemble the transaction const assembleRequest: OdosAssembleRequest = { userAddr: request.userAddr, @@ -161,17 +170,18 @@ export class OdosEngine implements SwapEngine { } ) if (!assembleResponse.ok) { - console.error({ assembleResponse }, 'Error fetching Odos response') + logger.error({ assembleResponse }, 'Error fetching Odos response') return EMPTY_SWAP_API_RESPONSE } const odosAssembleResponse: OdosAssembleResponse = await assembleResponse.json() + logger.info({ odosAssembleResponse }, 'Received transaction from Odos') return { amountOut, transaction: odosAssembleResponse.transaction, } } catch (error) { - console.error({ request, error }, 'Error fetching Odos response') + logger.error({ request, error }, 'Error fetching Odos response') return EMPTY_SWAP_API_RESPONSE } } diff --git a/packages/sdk-router/src/rfq/engine/paraSwapEngine.ts b/packages/sdk-router/src/rfq/engine/paraSwapEngine.ts index 13541b3833..36729b53ae 100644 --- a/packages/sdk-router/src/rfq/engine/paraSwapEngine.ts +++ b/packages/sdk-router/src/rfq/engine/paraSwapEngine.ts @@ -25,6 +25,7 @@ import { } from './response' import { ChainProvider } from '../../router' import { isNativeToken } from '../../utils/handleNativeToken' +import { logger } from '../../utils/logger' const PARASWAP_API_URL = 'https://api.paraswap.io/swap' const PARASWAP_API_TIMEOUT = 2000 @@ -110,6 +111,7 @@ export class ParaSwapEngine implements SwapEngine { public async getResponse(request: ParaSwapRequest): Promise { try { + logger.info({ request }, 'Fetching ParaSwap response') // Stringify every value in the request const params = new URLSearchParams( Object.entries(request).map(([k, v]) => { @@ -119,7 +121,10 @@ export class ParaSwapEngine implements SwapEngine { const url = `${PARASWAP_API_URL}?${params.toString()}` const response = await fetchWithTimeout(url, PARASWAP_API_TIMEOUT) if (!response.ok) { - console.error('Error fetching ParaSwap response:', response) + logger.error( + { url, request, response }, + 'Error fetching ParaSwap response' + ) return EMPTY_SWAP_API_RESPONSE } const paraswapResponse: ParaSwapResponse = await response.json() @@ -128,7 +133,7 @@ export class ParaSwapEngine implements SwapEngine { transaction: paraswapResponse.txParams, } } catch (error) { - console.error('Error fetching ParaSwap response:', error) + logger.error({ request, error }, 'Error fetching ParaSwap response') return EMPTY_SWAP_API_RESPONSE } } @@ -143,14 +148,14 @@ export class ParaSwapEngine implements SwapEngine { } const provider = this.providers[chainId] if (!provider) { - console.error('No provider found for chainId', chainId) + logger.error({ chainId }, 'No provider found') return 0 } const tokenContract = new Contract(token, erc20ABI, provider) as ERC20 try { return tokenContract.decimals() } catch (error) { - console.error('Error fetching token decimals:', error) + logger.error({ token, error }, 'Error fetching token decimals') return 0 } } diff --git a/packages/sdk-router/src/rfq/sirSet.ts b/packages/sdk-router/src/rfq/sirSet.ts index f995db0282..654b16320b 100644 --- a/packages/sdk-router/src/rfq/sirSet.ts +++ b/packages/sdk-router/src/rfq/sirSet.ts @@ -27,6 +27,7 @@ import { SynapseIntentRouter } from './sir' import { ChainProvider } from '../router' import { ONE_HOUR, TEN_MINUTES } from '../utils/deadlines' import { isSameAddress } from '../utils/addressUtils' +import { logger } from '../utils/logger' import { marshallTicker, Ticker } from './ticker' import { getAllQuotes, getBestRelayerQuote } from './api' import { @@ -231,7 +232,11 @@ export class SynapseIntentRouterSet extends SynapseModuleSet { ): { originQuery: Query; destQuery: Query } { // We should have saved neccessary params within dstQuery.rawParams if (hexDataLength(destQueryPrecise.rawParams) === 0) { - console.warn( + logger.warn( + { + originQuery: originQueryPrecise, + destQuery: destQueryPrecise, + }, 'No params saved in destQuery.rawParams, slippage is not applied' ) return { @@ -247,7 +252,13 @@ export class SynapseIntentRouterSet extends SynapseModuleSet { isSameAddress(paramsV1.destRelayToken, AddressZero) || paramsV1.destRelayAmount.eq(0) ) { - console.warn( + logger.warn( + { + originQuery: originQueryPrecise, + destQuery: destQueryPrecise, + paramsV1, + paramsV2, + }, 'No destToken or destAmount saved in destQuery.rawParams, slippage is not applied' ) return { diff --git a/packages/sdk-router/src/utils/logger.ts b/packages/sdk-router/src/utils/logger.ts new file mode 100644 index 0000000000..82338b2732 --- /dev/null +++ b/packages/sdk-router/src/utils/logger.ts @@ -0,0 +1,3 @@ +import pino from 'pino' + +export const logger = pino() diff --git a/packages/synapse-interface/constants/bridgeMap.ts b/packages/synapse-interface/constants/bridgeMap.ts index dda798b68c..50fddc83d2 100644 --- a/packages/synapse-interface/constants/bridgeMap.ts +++ b/packages/synapse-interface/constants/bridgeMap.ts @@ -308,8 +308,8 @@ export const BRIDGE_MAP = { '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'RFQ.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'RFQ.USDC', 'Intents'], swappable: [ '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', @@ -365,8 +365,8 @@ export const BRIDGE_MAP = { '0x7F5c764cBc14f9669B88837ca1490cCa17c31607': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -388,8 +388,8 @@ export const BRIDGE_MAP = { '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9': { decimals: 18, symbol: 'sUSD', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -401,8 +401,8 @@ export const BRIDGE_MAP = { '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -421,8 +421,8 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', @@ -441,8 +441,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['RFQ.ETH', 'nETH'], - destination: ['nETH', 'RFQ.ETH'], + origin: ['RFQ.ETH', 'nETH', 'Intents'], + destination: ['nETH', 'RFQ.ETH', 'Intents'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -1527,8 +1527,8 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1540,8 +1540,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['RFQ.ETH', 'nETH'], - destination: ['nETH', 'RFQ.ETH'], + origin: ['RFQ.ETH', 'nETH', 'Intents'], + destination: ['nETH', 'RFQ.ETH', 'Intents'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1550,8 +1550,8 @@ export const BRIDGE_MAP = { '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1563,8 +1563,8 @@ export const BRIDGE_MAP = { '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'nUSD', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1583,8 +1583,8 @@ export const BRIDGE_MAP = { '0xaf88d065e77c8cC2239327C5EDb3A432268e5831': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], - destination: ['CCTP.USDC', 'RFQ.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD', 'Intents'], + destination: ['CCTP.USDC', 'RFQ.USDC', 'Intents'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1596,8 +1596,8 @@ export const BRIDGE_MAP = { '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a': { decimals: 18, symbol: 'GMX', - origin: ['GMX'], - destination: ['GMX'], + origin: ['GMX', 'Intents'], + destination: ['GMX', 'Intents'], swappable: [], }, }, diff --git a/yarn.lock b/yarn.lock index 0beee2f97d..371ebe771e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28408,6 +28408,13 @@ pino-abstract-transport@^1.2.0: readable-stream "^4.0.0" split2 "^4.0.0" +pino-abstract-transport@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== + dependencies: + split2 "^4.0.0" + pino-abstract-transport@v0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" @@ -28426,6 +28433,11 @@ pino-std-serializers@^6.0.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== +pino-std-serializers@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" + integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== + pino@7.11.0: version "7.11.0" resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" @@ -28460,6 +28472,23 @@ pino@^8.16.2: sonic-boom "^3.7.0" thread-stream "^2.6.0" +pino@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.5.0.tgz#a7ef0fea868d22d52d8a4ce46e6e03c5dc46fdd6" + integrity sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^2.0.0" + pino-std-serializers "^7.0.0" + process-warning "^4.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" + pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -29449,6 +29478,11 @@ process-warning@^3.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== +process-warning@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a" + integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw== + process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -32540,6 +32574,13 @@ sonic-boom@^3.7.0: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" + integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== + dependencies: + atomic-sleep "^1.0.0" + sort-css-media-queries@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c" @@ -34006,6 +34047,13 @@ thread-stream@^2.6.0: dependencies: real-require "^0.2.0" +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== + dependencies: + real-require "^0.2.0" + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"