From 4807670d072fa2d94c38902ed7947e8056f79d12 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Tue, 24 Sep 2024 01:26:29 -0300 Subject: [PATCH 01/16] feat: support multiple tx eth events --- .../app-portal/src/systems/Bridge/events.tsx | 6 +-- .../Bridge/machines/bridgeTxsMachine.tsx | 8 +++- .../src/systems/Bridge/pages/BridgeTxList.tsx | 1 + .../src/systems/Bridge/services/bridge.tsx | 1 + .../app-portal/src/systems/Bridge/types.tsx | 1 + .../eth/containers/TxEthToFuelDialog.tsx | 6 ++- .../eth/containers/TxListItemEthToFuel.tsx | 11 +++++- .../Chains/eth/contracts/FuelMessagePortal.ts | 16 +++++--- .../Chains/eth/hooks/useTxEthToFuel.tsx | 16 +++++--- .../eth/machines/txEthToFuelMachine.tsx | 27 ++++++++----- .../Chains/eth/services/txEthToFuel.ts | 38 +++++++++++++------ .../app-portal/src/systems/Overlay/events.tsx | 6 ++- 12 files changed, 96 insertions(+), 41 deletions(-) diff --git a/packages/app-portal/src/systems/Bridge/events.tsx b/packages/app-portal/src/systems/Bridge/events.tsx index 50775d63c..6513f81a9 100644 --- a/packages/app-portal/src/systems/Bridge/events.tsx +++ b/packages/app-portal/src/systems/Bridge/events.tsx @@ -66,19 +66,19 @@ export function bridgeEvents(store: Store) { }, relayMessageEthToFuel({ input, - ethTxId, + machineId, }: { input?: { fuelWallet: FuelWallet; }; - ethTxId: HexAddress; + machineId: string; }) { if (!input) return; // TODO: make store.send function support this last object prop const service = store.services[Services.bridgeTxs]; const snapshot = service.getSnapshot(); - const txEthToFuelMachine = snapshot?.context.ethToFuelTxRefs?.[ethTxId]; + const txEthToFuelMachine = snapshot?.context.ethToFuelTxRefs?.[machineId]; txEthToFuelMachine.send({ type: 'RELAY_MESSAGE_ON_FUEL', input }); }, diff --git a/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx b/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx index efe8cc149..c6a5f20e1 100644 --- a/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx +++ b/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx @@ -150,16 +150,20 @@ export const bridgeTxsMachine = createMachine( // safely avoid overriding instance if (ctx.ethToFuelTxRefs?.[tx.txHash]) return prev; + const key = `${tx.txHash}-${tx.nonce}`; + return { ...prev, - [tx.txHash]: spawn( + [key]: spawn( txEthToFuelMachine.withContext({ ethTxId: tx.txHash as HexAddress, + inputEthTxNonce: tx.nonce, + machineId: key, fuelAddress: ctx.fuelAddress, fuelProvider: ctx.fuelProvider, ethPublicClient: ctx.ethPublicClient, }), - { name: tx.txHash, sync: true }, + { name: key, sync: true }, ), }; }, {}); diff --git a/packages/app-portal/src/systems/Bridge/pages/BridgeTxList.tsx b/packages/app-portal/src/systems/Bridge/pages/BridgeTxList.tsx index fe87a4ff2..6d0a23125 100644 --- a/packages/app-portal/src/systems/Bridge/pages/BridgeTxList.tsx +++ b/packages/app-portal/src/systems/Bridge/pages/BridgeTxList.tsx @@ -57,6 +57,7 @@ export const BridgeTxList = () => { ); } diff --git a/packages/app-portal/src/systems/Bridge/services/bridge.tsx b/packages/app-portal/src/systems/Bridge/services/bridge.tsx index 556df06ca..d0594b53b 100644 --- a/packages/app-portal/src/systems/Bridge/services/bridge.tsx +++ b/packages/app-portal/src/systems/Bridge/services/bridge.tsx @@ -178,6 +178,7 @@ export class BridgeService { return { txHash: log?.transactionHash || '0x', + nonce: (log?.args as any)?.nonce, fromNetwork: ETH_CHAIN, toNetwork: FUEL_CHAIN, date, diff --git a/packages/app-portal/src/systems/Bridge/types.tsx b/packages/app-portal/src/systems/Bridge/types.tsx index 0efb9b589..0369f7387 100644 --- a/packages/app-portal/src/systems/Bridge/types.tsx +++ b/packages/app-portal/src/systems/Bridge/types.tsx @@ -3,6 +3,7 @@ import type { SupportedChain } from '../Chains'; export type BridgeTx = { date?: Date; txHash: string; + nonce?: BigInt; fromNetwork: SupportedChain; toNetwork: SupportedChain; }; diff --git a/packages/app-portal/src/systems/Chains/eth/containers/TxEthToFuelDialog.tsx b/packages/app-portal/src/systems/Chains/eth/containers/TxEthToFuelDialog.tsx index 13741747f..8590c87b4 100644 --- a/packages/app-portal/src/systems/Chains/eth/containers/TxEthToFuelDialog.tsx +++ b/packages/app-portal/src/systems/Chains/eth/containers/TxEthToFuelDialog.tsx @@ -13,7 +13,10 @@ import { useTxEthToFuel } from '../hooks'; export function TxEthToFuelDialog() { const classes = styles(); const { asset: ethAsset } = useAsset(); - const { metadata } = useOverlay<{ txId: string }>(); + const { metadata } = useOverlay<{ + txId: string; + messageSentEventNonce: BigInt; + }>(); const { steps, date, @@ -26,6 +29,7 @@ export function TxEthToFuelDialog() { explorerLink, } = useTxEthToFuel({ id: metadata.txId, + messageSentEventNonce: metadata.messageSentEventNonce, }); return ( diff --git a/packages/app-portal/src/systems/Chains/eth/containers/TxListItemEthToFuel.tsx b/packages/app-portal/src/systems/Chains/eth/containers/TxListItemEthToFuel.tsx index e8f731d0c..dee9a178d 100644 --- a/packages/app-portal/src/systems/Chains/eth/containers/TxListItemEthToFuel.tsx +++ b/packages/app-portal/src/systems/Chains/eth/containers/TxListItemEthToFuel.tsx @@ -8,14 +8,19 @@ import { useTxEthToFuel } from '../hooks'; type TxListItemEthToFuelProps = { txHash: string; + messageSentEventNonce: BigInt; }; -export const TxListItemEthToFuel = ({ txHash }: TxListItemEthToFuelProps) => { +export const TxListItemEthToFuel = ({ + txHash, + messageSentEventNonce, +}: TxListItemEthToFuelProps) => { const classes = styles(); const { asset: ethAsset } = useAsset(); const { steps, date, handlers, asset, status, amount, isLoadingReceipts } = useTxEthToFuel({ id: txHash, + messageSentEventNonce, }); const bridgeTxStatus = steps?.find(({ isSelected }) => !!isSelected); @@ -51,7 +56,9 @@ export const TxListItemEthToFuel = ({ txHash }: TxListItemEthToFuelProps) => { } - onClick={() => handlers.openTxEthToFuel({ txId: txHash })} + onClick={() => + handlers.openTxEthToFuel({ txId: txHash, messageSentEventNonce }) + } /> ); }; diff --git a/packages/app-portal/src/systems/Chains/eth/contracts/FuelMessagePortal.ts b/packages/app-portal/src/systems/Chains/eth/contracts/FuelMessagePortal.ts index f373ed29c..8064ca735 100644 --- a/packages/app-portal/src/systems/Chains/eth/contracts/FuelMessagePortal.ts +++ b/packages/app-portal/src/systems/Chains/eth/contracts/FuelMessagePortal.ts @@ -1,5 +1,6 @@ import FuelMessagePortal from '@fuel-bridge/solidity-contracts/artifacts/contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol/FuelMessagePortalV3.json'; import type { HexAddress } from 'app-commons'; +import { bn } from 'fuels'; export type FuelMessagePortalArgs = { MessageSent: { @@ -17,12 +18,17 @@ export const decodeMessageSentData = { /^0x([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})([A-f0-9]{64})$/; const match = data.match(pattern); const [, fuelTokenId, , tokenAddress, , sender, to, amount] = match || []; + + const decodedTokenAddress = tokenAddress + ? bn(tokenAddress, 'hex').toHex(20) + : undefined; + const parsed = { - fuelTokenId: `0x${fuelTokenId}`, - tokenAddress: `0x${tokenAddress}`, - sender: `0x${sender}`, - to: `0x${to}`, - amount, + fuelTokenId: fuelTokenId ? `0x${fuelTokenId}` : undefined, + tokenAddress: decodedTokenAddress, + sender: sender ? `0x${sender}` : undefined, + to: to ? `0x${to}` : undefined, + amount: amount, }; return parsed; diff --git a/packages/app-portal/src/systems/Chains/eth/hooks/useTxEthToFuel.tsx b/packages/app-portal/src/systems/Chains/eth/hooks/useTxEthToFuel.tsx index 456e758d9..bf1b75c5a 100644 --- a/packages/app-portal/src/systems/Chains/eth/hooks/useTxEthToFuel.tsx +++ b/packages/app-portal/src/systems/Chains/eth/hooks/useTxEthToFuel.tsx @@ -13,10 +13,10 @@ import type { HexAddress } from 'app-commons'; import { deepCompare } from '../utils/deepCompare'; const bridgeTxsSelectors = { - txEthToFuel: (txId?: HexAddress) => (state: BridgeTxsMachineState) => { - if (!txId) return undefined; + txEthToFuel: (machineId?: string) => (state: BridgeTxsMachineState) => { + if (!machineId) return undefined; - const machine = state.context?.ethToFuelTxRefs?.[txId]?.getSnapshot(); + const machine = state.context?.ethToFuelTxRefs?.[machineId]?.getSnapshot(); return machine; }, @@ -113,17 +113,21 @@ const txEthToFuelSelectors = { }, }; -export function useTxEthToFuel({ id }: { id: string }) { +export function useTxEthToFuel({ + id, + messageSentEventNonce, +}: { id: string; messageSentEventNonce: BigInt }) { const { wallet: fuelWallet } = useFuelAccountConnection(); const txId = id.startsWith('0x') ? (id as HexAddress) : undefined; const { href: explorerLink } = useExplorerLink({ network: 'ethereum', id, }); + const machineId = `${txId}-${messageSentEventNonce}`; const txEthToFuelState = store.useSelector( Services.bridgeTxs, - bridgeTxsSelectors.txEthToFuel(txId), + bridgeTxsSelectors.txEthToFuel(machineId), deepCompare, ); @@ -177,7 +181,7 @@ export function useTxEthToFuel({ id }: { id: string }) { input: { fuelWallet, }, - ethTxId, + machineId, }); } diff --git a/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx b/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx index 9471dd4f2..31eb676ff 100644 --- a/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx +++ b/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx @@ -21,6 +21,8 @@ const FUEL_MESSAGE_GET_INTERVAL = 10000; type MachineContext = { ethTxId?: HexAddress; + inputEthTxNonce?: BigInt; + machineId?: string; ethTxNonce?: BN; fuelAddress?: FuelAddress; fuelProvider?: FuelProvider; @@ -55,7 +57,7 @@ type AnalyzeInputs = TxEthToFuelInputs['getReceiptsInfo'] & export type TxEthToFuelMachineEvents = | { type: 'START_ANALYZE_TX'; - input: Omit; + input: AnalyzeInputs; } | { type: 'RELAY_MESSAGE_ON_FUEL'; @@ -113,6 +115,7 @@ export const txEthToFuelMachine = createMachine( data: { input: (ctx: MachineContext) => ({ ethTxId: ctx.ethTxId, + inputEthTxNonce: ctx.inputEthTxNonce, ethPublicClient: ctx.ethPublicClient, }), }, @@ -330,6 +333,8 @@ export const txEthToFuelMachine = createMachine( actions: { assignAnalyzeTxInput: assign((_, ev) => ({ ethTxId: ev.input.ethTxId, + inputEthTxNonce: ev.input.inputEthTxNonce, + machineId: `${ev.input.ethTxId}-${ev.input.inputEthTxNonce}`, fuelProvider: ev.input.fuelProvider, ethPublicClient: ev.input.ethPublicClient, })), @@ -346,27 +351,27 @@ export const txEthToFuelMachine = createMachine( fuelMessage: (_, ev) => ev.data, }), setEthToFuelTxDone: (ctx) => { - if (ctx.ethTxId) { - EthTxCache.setTxIsDone(ctx.ethTxId); + if (ctx.machineId) { + EthTxCache.setTxIsDone(ctx.machineId); } }, assignFuelMessageStatus: assign({ fuelMessageStatus: (_, ev) => ev.data, }), clearTxCreated: (ctx) => { - if (ctx.ethTxId && EthTxCache.getTxIsCreated(ctx.ethTxId)) { - EthTxCache.removeTxCreated(ctx.ethTxId); + if (ctx.machineId && EthTxCache.getTxIsCreated(ctx.machineId)) { + EthTxCache.removeTxCreated(ctx.machineId); } }, setEthToFuelTxReceiptCached: (ctx) => { if ( - ctx.ethTxId && + ctx.machineId && ctx.ethTxNonce && ctx.amount && ctx.ethDepositBlockHeight && ctx.blockDate ) { - EthTxCache.setTxReceipt(ctx.ethTxId, { + EthTxCache.setTxReceipt(ctx.machineId, { erc20Token: ctx.erc20Token, nonce: ctx.ethTxNonce, amount: ctx.amount, @@ -376,7 +381,7 @@ export const txEthToFuelMachine = createMachine( } }, assignReceiptsInfoFromCache: assign((ctx) => { - const receiptInfo = EthTxCache.getTxReceipt(ctx.ethTxId || ''); + const receiptInfo = EthTxCache.getTxReceipt(ctx.machineId || ''); if (!receiptInfo) { throw new Error('No receipt'); } @@ -395,13 +400,15 @@ export const txEthToFuelMachine = createMachine( hasEthTxNonce: (ctx, ev) => !!ctx.ethTxNonce || !!ev?.data?.nonce, hasAnalyzeTxInput: (ctx) => !!ctx.ethTxId && + !!ctx.inputEthTxNonce && + !!ctx.machineId && !!ctx.fuelAddress && !!ctx.fuelProvider && !!ctx.ethPublicClient, isTxEthToFuelDone: (ctx) => { return ( - EthTxCache.getTxIsDone(ctx.ethTxId || '') && - !!EthTxCache.getTxReceipt(ctx.ethTxId || '') + EthTxCache.getTxIsDone(ctx.machineId || '') && + !!EthTxCache.getTxReceipt(ctx.machineId || '') ); }, isMessageSpent: (ctx) => ctx.fuelMessageStatus?.state === 'SPENT', diff --git a/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts b/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts index db96fc146..b51338cd6 100644 --- a/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts +++ b/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts @@ -13,7 +13,7 @@ import type { TransactionReceipt, WalletClient, } from 'viem'; -import { decodeEventLog } from 'viem'; +import { decodeEventLog, isAddressEqual } from 'viem'; import { erc20Abi } from 'viem'; import { relayCommonMessage } from '../../fuel/utils/relayMessage'; @@ -51,6 +51,7 @@ export type TxEthToFuelInputs = { }; getReceiptsInfo: { ethTxId?: HexAddress; + inputEthTxNonce?: BigInt; ethPublicClient?: PublicClient; }; getFuelMessage: { @@ -77,6 +78,7 @@ export type GetReceiptsInfoReturn = { address: HexAddress; decimals: number; }; + receiptErc20Address?: HexAddress; amount?: BN; sender?: string; recipient?: FuelAddress; @@ -235,7 +237,7 @@ export class TxEthToFuelService { throw new Error('No eth Provider'); } - const { ethTxId, ethPublicClient } = input; + const { ethTxId, ethPublicClient, inputEthTxNonce } = input; let receipt: TransactionReceipt; try { @@ -272,15 +274,21 @@ export class TxEthToFuelService { topics: receipt.logs[i].topics, }) as unknown as { args: FuelMessagePortalArgs['MessageSent'] }; - const { amount, sender, nonce, recipient } = messageSentEvent.args; + const { amount, sender, nonce, recipient, data } = + messageSentEvent.args; - receiptsInfo = { - ...receiptsInfo, - nonce: bn(nonce.toString()), - amount: bn(amount.toString()), - sender, - recipient: FuelAddress.fromB256(recipient), - }; + if (inputEthTxNonce === nonce) { + const { tokenAddress } = decodeMessageSentData.erc20Deposit(data); + + receiptsInfo = { + ...receiptsInfo, + nonce: bn(nonce.toString()), + amount: bn(amount.toString()), + sender, + recipient: FuelAddress.fromB256(recipient), + receiptErc20Address: tokenAddress as HexAddress, + }; + } } catch (_) { /* empty */ } @@ -296,7 +304,15 @@ export class TxEthToFuelService { topics: receipt.logs[i].topics, }) as unknown as { args: FuelERC20GatewayArgs['Deposit'] }; - if (isErc20Address(depositEvent.args.tokenAddress)) { + // search for a deposit log that matches the ERC-20 token address of the messageSent event + if ( + isErc20Address(depositEvent.args.tokenAddress) && + isAddressEqual( + depositEvent.args.tokenAddress, + // we can convert "as HexAddress" safely because we validated if it's not undefined before + receiptsInfo.receiptErc20Address as HexAddress, + ) + ) { const { amount, tokenAddress } = depositEvent.args; const decimals = (await input.ethPublicClient.readContract({ address: tokenAddress, diff --git a/packages/app-portal/src/systems/Overlay/events.tsx b/packages/app-portal/src/systems/Overlay/events.tsx index a05351766..5f3cb23b7 100644 --- a/packages/app-portal/src/systems/Overlay/events.tsx +++ b/packages/app-portal/src/systems/Overlay/events.tsx @@ -11,7 +11,10 @@ export function overlayEvents(store: Store) { closeOverlay() { store.send(Services.overlay, { type: 'CLOSE' }); }, - openTxEthToFuel({ txId }: { txId?: string }) { + openTxEthToFuel({ + txId, + messageSentEventNonce, + }: { txId?: string; messageSentEventNonce?: BigInt }) { if (txId) { store.send(Services.overlay, { type: 'OPEN', @@ -19,6 +22,7 @@ export function overlayEvents(store: Store) { modal: 'tx.fromEth.toFuel', params: { txId, + messageSentEventNonce, }, }, }); From 473b6c54fcd0b542ff9db06217a68013b50a5ea6 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Tue, 24 Sep 2024 17:23:58 -0300 Subject: [PATCH 02/16] feat: simplify get receipts --- .../app-portal/src/systems/Bridge/events.tsx | 5 +- .../Bridge/machines/bridgeTxsMachine.tsx | 16 +++- .../src/systems/Bridge/services/bridge.tsx | 14 ++-- .../eth/machines/txEthToFuelMachine.tsx | 7 +- .../Chains/eth/services/txEthToFuel.ts | 82 +++++++++++++++---- .../src/systems/Chains/eth/utils/index.tsx | 1 + .../systems/Chains/eth/utils/transaction.ts | 29 +++++++ .../Chains/fuel/services/txFuelToEth.ts | 25 ++---- 8 files changed, 131 insertions(+), 48 deletions(-) create mode 100644 packages/app-portal/src/systems/Chains/eth/utils/transaction.ts diff --git a/packages/app-portal/src/systems/Bridge/events.tsx b/packages/app-portal/src/systems/Bridge/events.tsx index 6513f81a9..09a995dde 100644 --- a/packages/app-portal/src/systems/Bridge/events.tsx +++ b/packages/app-portal/src/systems/Bridge/events.tsx @@ -32,7 +32,10 @@ export function bridgeEvents(store: Store) { store.send(Services.bridgeTxs, { type: 'FETCH_NEXT_PAGE' }); }, addTxEthToFuel( - input?: { ethTxId?: HexAddress } & BridgeInputs['fetchTxs'], + input?: { + ethTxId?: HexAddress; + inputEthTxNonce?: BigInt; + } & BridgeInputs['fetchTxs'], ) { if (!input) return; diff --git a/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx b/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx index c6a5f20e1..04ab23efb 100644 --- a/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx +++ b/packages/app-portal/src/systems/Bridge/machines/bridgeTxsMachine.tsx @@ -50,6 +50,7 @@ export type BridgeTxsMachineEvents = type: 'ADD_TX_ETH_TO_FUEL'; input: { ethTxId?: HexAddress; + inputEthTxNonce?: BigInt; } & BridgeInputs['fetchTxs']; } | { @@ -203,16 +204,25 @@ export const bridgeTxsMachine = createMachine( }), assignTxEthToFuel: assign({ ethToFuelTxRefs: (ctx, ev) => { - const { ethTxId, fuelAddress, fuelProvider, ethPublicClient } = - ev.input || {}; + const { + ethTxId, + fuelAddress, + fuelProvider, + ethPublicClient, + inputEthTxNonce, + } = ev.input || {}; if (!ethTxId || ctx.ethToFuelTxRefs?.[ethTxId]) return ctx.ethToFuelTxRefs; + const key = `${ethTxId}-${inputEthTxNonce}`; + console.log(`NEW: creating machine Fuel To Eth: ${ethTxId}`); const newRef = { - [ethTxId]: spawn( + [key]: spawn( txEthToFuelMachine.withContext({ ethTxId: ethTxId as HexAddress, + inputEthTxNonce: inputEthTxNonce, + machineId: key, fuelAddress: fuelAddress, fuelProvider: fuelProvider, ethPublicClient: ethPublicClient, diff --git a/packages/app-portal/src/systems/Bridge/services/bridge.tsx b/packages/app-portal/src/systems/Bridge/services/bridge.tsx index d0594b53b..9341a0a8c 100644 --- a/packages/app-portal/src/systems/Bridge/services/bridge.tsx +++ b/packages/app-portal/src/systems/Bridge/services/bridge.tsx @@ -79,7 +79,7 @@ export class BridgeService { const assetEth = getAssetEth(asset); const amountEthUnits = bn.parseUnits(amountFormatted, assetEth.decimals); - const txId = await TxEthToFuelService.start({ + const startedTxEthToFuel = await TxEthToFuelService.start({ amount: amountEthUnits.toHex(), ethWalletClient, fuelAddress, @@ -87,18 +87,22 @@ export class BridgeService { ethPublicClient, }); - if (txId) { + const { txHash, nonce } = startedTxEthToFuel || {}; + + if (txHash && nonce) { if (fuelWallet) { store.addTxEthToFuel({ - ethTxId: txId, + ethTxId: txHash, + inputEthTxNonce: nonce, fuelProvider, ethPublicClient, fuelAddress, }); store.openTxEthToFuel({ - txId, + txId: txHash, + messageSentEventNonce: nonce, }); - EthTxCache.setTxIsCreated(txId); + EthTxCache.setTxIsCreated(txHash); } } diff --git a/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx b/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx index 31eb676ff..1e32f6b57 100644 --- a/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx +++ b/packages/app-portal/src/systems/Chains/eth/machines/txEthToFuelMachine.tsx @@ -359,8 +359,8 @@ export const txEthToFuelMachine = createMachine( fuelMessageStatus: (_, ev) => ev.data, }), clearTxCreated: (ctx) => { - if (ctx.machineId && EthTxCache.getTxIsCreated(ctx.machineId)) { - EthTxCache.removeTxCreated(ctx.machineId); + if (ctx.ethTxId && EthTxCache.getTxIsCreated(ctx.ethTxId)) { + EthTxCache.removeTxCreated(ctx.ethTxId); } }, setEthToFuelTxReceiptCached: (ctx) => { @@ -400,7 +400,8 @@ export const txEthToFuelMachine = createMachine( hasEthTxNonce: (ctx, ev) => !!ctx.ethTxNonce || !!ev?.data?.nonce, hasAnalyzeTxInput: (ctx) => !!ctx.ethTxId && - !!ctx.inputEthTxNonce && + // inputEthTxNonce can be zero + ctx.inputEthTxNonce != null && !!ctx.machineId && !!ctx.fuelAddress && !!ctx.fuelProvider && diff --git a/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts b/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts index b51338cd6..d5cf7245f 100644 --- a/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts +++ b/packages/app-portal/src/systems/Chains/eth/services/txEthToFuel.ts @@ -24,7 +24,7 @@ import { FUEL_MESSAGE_PORTAL, decodeMessageSentData, } from '../contracts/FuelMessagePortal'; -import { getBlockDate, isErc20Address } from '../utils'; +import { getBlockDate, getTransactionReceipt, isErc20Address } from '../utils'; import { type HexAddress, @@ -126,8 +126,8 @@ export class TxEthToFuelService { TxEthToFuelService.assertStartEth(input); try { - const { ethWalletClient, fuelAddress, amount } = input; - if (fuelAddress && ethWalletClient) { + const { ethWalletClient, fuelAddress, amount, ethPublicClient } = input; + if (fuelAddress && ethWalletClient && ethPublicClient) { const bridgeSolidityContracts = await getBridgeSolidityContracts(); const fuelPortal = EthConnectorService.connectToFuelMessagePortal({ walletClient: ethWalletClient, @@ -142,7 +142,34 @@ export class TxEthToFuelService { }, ); - return txHash; + const receipt = await getTransactionReceipt({ + ethPublicClient, + txHash, + }); + + if (receipt.status !== 'success') { + throw new Error('Failed to deposit ETH'); + } + + const nonce = receipt.logs.map((log) => { + try { + const messageSentEvent = decodeEventLog({ + abi: FUEL_MESSAGE_PORTAL.abi, + data: log.data, + topics: log.topics, + }) as unknown as { args: FuelMessagePortalArgs['MessageSent'] }; + + return messageSentEvent?.args?.nonce; + } catch (_) { + /* empty */ + } + })[0]; + + if (nonce == null) { + throw new Error('Failed to get nonce of ETH deposit'); + } + + return { txHash, nonce }; } } catch (e) { // biome-ignore lint/suspicious/noExplicitAny: @@ -185,19 +212,11 @@ export class TxEthToFuelService { amount, ]); - let approveTxHashReceipt: TransactionReceipt; - try { - approveTxHashReceipt = await ethPublicClient.getTransactionReceipt({ - hash: approveTxHash, - }); - } catch (_err: unknown) { - // workaround in place because waitForTransactionReceipt stop working after first time using it - approveTxHashReceipt = - await ethPublicClient.waitForTransactionReceipt({ - hash: approveTxHash, - confirmations: 2, - }); - } + const approveTxHashReceipt = await getTransactionReceipt({ + ethPublicClient, + txHash: approveTxHash, + waitOptions: { confirmations: 2 }, + }); if (approveTxHashReceipt.status !== 'success') { throw new Error('Failed to approve Token for transfer'); @@ -213,7 +232,34 @@ export class TxEthToFuelService { amount, ]); - return depositTxHash; + const receipt = await getTransactionReceipt({ + ethPublicClient, + txHash: depositTxHash, + }); + + if (receipt.status !== 'success') { + throw new Error('Failed to deposit ETH'); + } + + const nonce = receipt.logs.map((log) => { + try { + const messageSentEvent = decodeEventLog({ + abi: FUEL_MESSAGE_PORTAL.abi, + data: log.data, + topics: log.topics, + }) as unknown as { args: FuelMessagePortalArgs['MessageSent'] }; + + return messageSentEvent?.args?.nonce; + } catch (_) { + /* empty */ + } + })[0]; + + if (!nonce) { + throw new Error('Failed to get nonce of ETH deposit'); + } + + return { txHash: depositTxHash, nonce }; } } catch (e) { // biome-ignore lint/suspicious/noExplicitAny: diff --git a/packages/app-portal/src/systems/Chains/eth/utils/index.tsx b/packages/app-portal/src/systems/Chains/eth/utils/index.tsx index 8ccb1f237..b2bfd3a8a 100644 --- a/packages/app-portal/src/systems/Chains/eth/utils/index.tsx +++ b/packages/app-portal/src/systems/Chains/eth/utils/index.tsx @@ -2,3 +2,4 @@ export * from './block'; export * from './chain'; export * from './address'; export * from './txCache'; +export * from './transaction'; diff --git a/packages/app-portal/src/systems/Chains/eth/utils/transaction.ts b/packages/app-portal/src/systems/Chains/eth/utils/transaction.ts new file mode 100644 index 000000000..99081b81f --- /dev/null +++ b/packages/app-portal/src/systems/Chains/eth/utils/transaction.ts @@ -0,0 +1,29 @@ +import { + PublicClient, + TransactionReceipt, + WaitForTransactionReceiptParameters, +} from 'viem'; + +export async function getTransactionReceipt({ + ethPublicClient, + txHash, + waitOptions, +}: { + ethPublicClient: PublicClient; + txHash: `0x${string}`; + waitOptions?: Omit; +}): Promise { + let receipt: TransactionReceipt; + try { + receipt = await ethPublicClient.getTransactionReceipt({ + hash: txHash, + }); + } catch (_err: unknown) { + // workaround in place because waitForTransactionReceipt stop working after first time using it + receipt = await ethPublicClient.waitForTransactionReceipt({ + ...(waitOptions ? waitOptions : {}), + hash: txHash, + }); + } + return receipt; +} diff --git a/packages/app-portal/src/systems/Chains/fuel/services/txFuelToEth.ts b/packages/app-portal/src/systems/Chains/fuel/services/txFuelToEth.ts index 76e366b70..312a21ed0 100644 --- a/packages/app-portal/src/systems/Chains/fuel/services/txFuelToEth.ts +++ b/packages/app-portal/src/systems/Chains/fuel/services/txFuelToEth.ts @@ -26,6 +26,7 @@ import { FUEL_MESSAGE_PORTAL } from '../../eth/contracts/FuelMessagePortal'; import { EthConnectorService } from '../../eth/services'; import { parseEthAddressToFuel } from '../../eth/utils/address'; import { createRelayMessageParams } from '../../eth/utils/relayMessage'; +import { getTransactionReceipt } from '../../eth/utils/transaction'; import { getBlock } from '../utils'; export type TxFuelToEthInputs = { @@ -439,28 +440,16 @@ export class TxFuelToEthService { const { ethPublicClient, txHash } = input; - let txReceipts: Awaited< - ReturnType< - | typeof ethPublicClient.getTransactionReceipt - | typeof ethPublicClient.waitForTransactionReceipt - > - >; - try { - txReceipts = await ethPublicClient.getTransactionReceipt({ - hash: txHash, - }); - } catch (_err: unknown) { - // workaround in place because waitForTransactionReceipt stop working after first time using it - txReceipts = await ethPublicClient.waitForTransactionReceipt({ - hash: txHash, - }); - } + const txReceipt = await getTransactionReceipt({ + ethPublicClient, + txHash, + }); - if (txReceipts.status !== 'success') { + if (txReceipt.status !== 'success') { throw new Error('Failed to relay message (transaction reverted)'); } - return !!txReceipts; + return !!txReceipt; } static async fetchTxs(input: TxFuelToEthInputs['fetchTxs']) { From 2127518efb26b60e57a71940a53c04250e73ade3 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Tue, 24 Sep 2024 19:06:52 -0300 Subject: [PATCH 03/16] fix: flaky --- packages/e2e-tests/playwright.config.ts | 4 ++-- packages/e2e-tests/tests/hard/bridge/Bridge.test.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/e2e-tests/playwright.config.ts b/packages/e2e-tests/playwright.config.ts index b1c103084..f53b4503f 100644 --- a/packages/e2e-tests/playwright.config.ts +++ b/packages/e2e-tests/playwright.config.ts @@ -20,13 +20,13 @@ const config: PlaywrightTestConfig = defineConfig({ forbidOnly: !!process.env.CI, retries: 0, webServer: { - command: 'pnpm dev', + command: 'pnpm dev:explorer', port: Number(PORT), reuseExistingServer: true, cwd: join(__dirname, '../../'), }, use: { - baseURL: `http://127.0.0.1:${PORT}/`, + baseURL: `http://localhost:${PORT}/`, permissions: ['clipboard-read', 'clipboard-write'], headless: false, trace: 'on-first-retry', diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 75a358079..0b3b906e1 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -55,6 +55,7 @@ test.describe('Bridge', () => { transport: http(), }); + await page.bringToFront(); await page.goto('/bridge'); }); test('e2e', async ({ page, context }) => { From 1b133f5f163638c15945bd8992ba07b9031c57f9 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Tue, 24 Sep 2024 19:56:51 -0300 Subject: [PATCH 04/16] chore --- .github/workflows/pr-tests.yml | 3 -- packages/e2e-tests/playwright.config.ts | 1 + pnpm-lock.yaml | 70 ++++++++++++++++--------- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index 3860d5b8e..291ee56d5 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -21,9 +21,6 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Create .env file graphql - run: cp packages/graphql/.env.example packages/graphql/.env - - name: Create .env file explorer run: cp packages/app-explorer/.env.example packages/app-explorer/.env diff --git a/packages/e2e-tests/playwright.config.ts b/packages/e2e-tests/playwright.config.ts index f53b4503f..199432113 100644 --- a/packages/e2e-tests/playwright.config.ts +++ b/packages/e2e-tests/playwright.config.ts @@ -24,6 +24,7 @@ const config: PlaywrightTestConfig = defineConfig({ port: Number(PORT), reuseExistingServer: true, cwd: join(__dirname, '../../'), + stdout: 'pipe', }, use: { baseURL: `http://localhost:${PORT}/`, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abed6c342..9d41a9fb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3834,6 +3834,10 @@ packages: resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} + '@metamask/utils@8.4.0': + resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} + engines: {node: '>=16.0.0'} + '@metamask/utils@8.5.0': resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} engines: {node: '>=16.0.0'} @@ -18312,7 +18316,7 @@ snapshots: '@graphql-tools/utils': 10.5.4(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 - tslib: 2.7.0 + tslib: 2.6.3 value-or-promise: 1.0.12 '@graphql-tools/batch-execute@9.0.4(graphql@16.8.1)': @@ -18983,7 +18987,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.15 + '@types/node': 18.19.14 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -19052,8 +19056,8 @@ snapshots: '@jridgewell/source-map@0.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 '@jridgewell/source-map@0.3.6': dependencies: @@ -19164,7 +19168,7 @@ snapshots: '@metamask/object-multiplex': 2.0.0 '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.4.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 fast-deep-equal: 3.1.3 @@ -19262,6 +19266,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@metamask/utils@8.4.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.8 + '@types/debug': 4.1.12 + debug: 4.3.7(supports-color@8.1.1) + pony-cause: 2.1.10 + semver: 7.6.3 + superstruct: 1.0.4 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + '@metamask/utils@8.5.0': dependencies: '@ethereumjs/tx': 4.2.0 @@ -19295,7 +19313,7 @@ snapshots: '@motionone/easing': 10.17.0 '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 - tslib: 2.7.0 + tslib: 2.6.3 '@motionone/dom@10.12.0': dependencies: @@ -19324,7 +19342,7 @@ snapshots: dependencies: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 - tslib: 2.7.0 + tslib: 2.6.3 '@motionone/svelte@10.16.4': dependencies: @@ -19337,7 +19355,7 @@ snapshots: dependencies: '@motionone/types': 10.17.0 hey-listen: 1.0.8 - tslib: 2.7.0 + tslib: 2.6.3 '@motionone/vue@10.16.4': dependencies: @@ -19575,11 +19593,11 @@ snapshots: dependencies: asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.7.0 + tslib: 2.6.3 '@peculiar/json-schema@1.1.12': dependencies: - tslib: 2.7.0 + tslib: 2.6.3 '@peculiar/webcrypto@1.4.5': dependencies: @@ -23264,11 +23282,11 @@ snapshots: '@swc/helpers@0.4.36': dependencies: legacy-swc-helpers: '@swc/helpers@0.4.14' - tslib: 2.7.0 + tslib: 2.6.3 '@swc/helpers@0.5.12': dependencies: - tslib: 2.7.0 + tslib: 2.6.3 '@swc/helpers@0.5.5': dependencies: @@ -23645,7 +23663,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.14.15 + '@types/node': 18.19.14 '@types/istanbul-lib-coverage@2.0.6': {} @@ -23706,7 +23724,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.15 + '@types/node': 18.19.14 '@types/node@10.12.18': {} @@ -23736,7 +23754,7 @@ snapshots: '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 20.14.15 + '@types/node': 18.19.14 '@types/pg@8.11.6': dependencies: @@ -23776,7 +23794,7 @@ snapshots: '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.14.15 + '@types/node': 18.19.14 '@types/semver@7.5.6': {} @@ -26240,7 +26258,7 @@ snapshots: capital-case@1.0.4: dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.6.3 upper-case-first: 2.0.2 case-sensitive-paths-webpack-plugin@2.4.0: {} @@ -26609,7 +26627,7 @@ snapshots: constant-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.6.3 upper-case: 2.0.2 constants-browserify@1.0.0: {} @@ -29041,7 +29059,7 @@ snapshots: header-case@2.0.4: dependencies: capital-case: 1.0.4 - tslib: 2.7.0 + tslib: 2.6.3 help-me@5.0.0: {} @@ -29364,7 +29382,7 @@ snapshots: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.6 - tslib: 2.7.0 + tslib: 2.6.3 into-stream@3.1.0: dependencies: @@ -29671,7 +29689,7 @@ snapshots: '@babel/core': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -29691,7 +29709,7 @@ snapshots: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -30786,7 +30804,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.6.0 make-error@1.3.6: {} @@ -31467,7 +31485,7 @@ snapshots: path-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.6.3 path-exists@3.0.0: {} @@ -32150,7 +32168,7 @@ snapshots: pvtsutils@1.3.5: dependencies: - tslib: 2.7.0 + tslib: 2.6.3 pvutils@1.1.3: {} @@ -35065,7 +35083,7 @@ snapshots: '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.7.0 + tslib: 2.6.3 webextension-polyfill@0.10.0: {} From fc1e4017a4ab30c0f75612c1e6a868e5ed479869 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 00:03:58 -0300 Subject: [PATCH 05/16] chore --- packages/app-explorer/.env.example | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/app-explorer/.env.example b/packages/app-explorer/.env.example index b7d137e24..72353dfe9 100644 --- a/packages/app-explorer/.env.example +++ b/packages/app-explorer/.env.example @@ -1,7 +1,7 @@ # Portal NEXT_PUBLIC_ALCHEMY_ID= NEXT_PUBLIC_INFURA_ID= -NEXT_PUBLIC_WALLETCONNECT_ID= +NEXT_PUBLIC_WALLETCONNECT_ID=8f52b9703df1ef5af54336c4fba85476 NEXT_PUBLIC_ETH_CHAIN_NAME=foundry # options: foundry, sepolia NEXT_PUBLIC_FUEL_CHAIN_NAME=fuelLocal # options: fuelLocal, fuelTestnet, fuelDevnet NEXT_PUBLIC_FUEL_VERSION=0.35.0 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d41a9fb1..b69ad50dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19139,7 +19139,7 @@ snapshots: dependencies: '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.4.0 transitivePeerDependencies: - supports-color @@ -19147,7 +19147,7 @@ snapshots: dependencies: '@metamask/json-rpc-engine': 8.0.2 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.4.0 readable-stream: 3.6.2 transitivePeerDependencies: - supports-color @@ -19180,7 +19180,7 @@ snapshots: '@metamask/rpc-errors@6.2.1': dependencies: - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.4.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color @@ -19284,11 +19284,11 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 - '@noble/hashes': 1.4.0 + '@noble/hashes': 1.5.0 '@scure/base': 1.1.8 '@types/debug': 4.1.12 debug: 4.3.7(supports-color@8.1.1) - pony-cause: 2.1.10 + pony-cause: 2.1.11 semver: 7.6.3 uuid: 9.0.1 transitivePeerDependencies: From 415d134f91ab5743e0d25b727c8e4f58982a9e68 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 00:18:33 -0300 Subject: [PATCH 06/16] chore --- packages/e2e-tests/playwright.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/playwright.config.ts b/packages/e2e-tests/playwright.config.ts index 199432113..d2dae8e75 100644 --- a/packages/e2e-tests/playwright.config.ts +++ b/packages/e2e-tests/playwright.config.ts @@ -27,7 +27,7 @@ const config: PlaywrightTestConfig = defineConfig({ stdout: 'pipe', }, use: { - baseURL: `http://localhost:${PORT}/`, + baseURL: `http://127.0.0.1:${PORT}/`, permissions: ['clipboard-read', 'clipboard-write'], headless: false, trace: 'on-first-retry', From 3f6d249f91ab093df831bad57a97098e0cba907d Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 00:50:09 -0300 Subject: [PATCH 07/16] feat: update playwright utils --- packages/e2e-tests/package.json | 4 +- pnpm-lock.yaml | 615 +++++++++++++++++++++++++++++++- 2 files changed, 603 insertions(+), 16 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 2f812683b..f0223f845 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -2,9 +2,9 @@ "name": "e2e-tests", "private": true, "devDependencies": { - "@fuels/playwright-utils": "0.20.0", + "@fuels/playwright-utils": "0.30.0", "@synthetixio/synpress": "https://github.com/LuizAsFight/synpress", - "fuels": "0.94.4", + "fuels": "0.94.6", "app-commons": "workspace:*", "viem": "2.20.1", "wagmi": "2.12.7" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b69ad50dc..e5ac692d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -346,7 +346,7 @@ importers: version: 7.6.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/nextjs': specifier: ^8.0.8 - version: 8.0.8(@swc/core@1.4.1(@swc/helpers@0.5.12))(@types/webpack@4.41.39)(next@14.2.3(@babel/core@7.23.9)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.26.0)(typescript@5.4.5)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))) + version: 8.0.8(@swc/core@1.4.1(@swc/helpers@0.5.12))(@types/webpack@4.41.39)(next@14.2.3(@babel/core@7.23.9)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.26.1)(typescript@5.4.5)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))) '@storybook/react': specifier: ^8.0.8 version: 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.5) @@ -553,8 +553,8 @@ importers: packages/e2e-tests: devDependencies: '@fuels/playwright-utils': - specifier: 0.20.0 - version: 0.20.0(@playwright/test@1.41.2)(fuels@0.94.4) + specifier: 0.30.0 + version: 0.30.0(@playwright/test@1.41.2)(fuels@0.94.6) '@synthetixio/synpress': specifier: https://github.com/LuizAsFight/synpress version: https://codeload.github.com/LuizAsFight/synpress/tar.gz/edb6468a237b341a0014d2944cb43a33f22d2ff1(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.4)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)))(zod@3.23.8) @@ -562,8 +562,8 @@ importers: specifier: workspace:* version: link:../app-commons fuels: - specifier: 0.94.4 - version: 0.94.4 + specifier: 0.94.6 + version: 0.94.6 viem: specifier: 2.20.1 version: 2.20.1(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8) @@ -1980,6 +1980,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2016,6 +2022,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2052,6 +2064,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2088,6 +2106,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2124,6 +2148,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2160,6 +2190,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2196,6 +2232,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2232,6 +2274,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2268,6 +2316,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2304,6 +2358,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2340,6 +2400,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2376,6 +2442,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2412,6 +2484,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2448,6 +2526,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2484,6 +2568,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2520,6 +2610,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2556,6 +2652,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2592,12 +2694,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.22.0': resolution: {integrity: sha512-Ezlhu/YyITmXwKSB+Zu/QqD7cxrjrpiw85cc0Rbd3AWr2wsgp+dWbWOE8MqHaLW9NKMZvuL0DhbJbvzR7F6Zvg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2634,6 +2748,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2670,6 +2790,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2706,6 +2832,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2742,6 +2874,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2778,6 +2916,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} @@ -2965,11 +3109,20 @@ packages: resolution: {integrity: sha512-JvOWCa0/iMOlo+TOCE9vMjqMEyh/R9I3tgdlSj6TJ2Ik6O4ECyFAR0Idm5llvPolTWTQ80ObPYD793pphMpaBw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/abi-coder@0.94.6': + resolution: {integrity: sha512-d0mb93Z3oWBV/EFbGERAwfzxi2J8Kj8M91pEJYWenbarpMJubgpIOebYEvhh8juanIt6ULUJVnJLQvDL08Clng==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/abi-typegen@0.94.4': resolution: {integrity: sha512-AkI8fIctMqkpXqorluhH4bNTq0z+wkrMLH3IzLrfELZkBntg5pjy9EGxqyHrlEK7LFT0sNV0tJm2+RKUs2J/zQ==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true + '@fuel-ts/abi-typegen@0.94.6': + resolution: {integrity: sha512-SZhcohvDb7bhAt1EYZUVQsNrQChxy2/BD210slH7qSwGiIoLw1OLBqYnvG9CpPjNw2+EcAXplNYrqPrLqNLgCA==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + hasBin: true + '@fuel-ts/account@0.90.0': resolution: {integrity: sha512-TsGJhRnvVAaSMrTlq+bljzEHNssfiRUrO3JGleCjIsgQIf3PugwMgvFqlJpDYUQnWuFG0nDcf1FCG4mjG+KKuA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -2982,6 +3135,10 @@ packages: resolution: {integrity: sha512-MMOS3EDxcoGaX/00A/w/CcGYaRl1r8oNhZneQVv7FifBeSluPEubnXReZLtXebP4zz0Ahp5um9e0rUv5fMUDKQ==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/account@0.94.6': + resolution: {integrity: sha512-caCTmXJ5UvcAU1qBZLcmTsfvqA8shbZAxMwEqDbpXGx1q1smKZpnw1Jwp5R3FRF8faT2p0Nzs/VlLaZ3nuG0Wg==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/address@0.76.0': resolution: {integrity: sha512-J6vhEvfs0EcAW/V7V2eMsKa3/6h3fiAtMkaRPPwX+SybEbnI+3e17JXXD1yGt1UqaS9OWQuaDtnXlXU3UklSZQ==} engines: {node: ^18.18.2 || ^20.0.0} @@ -2998,10 +3155,18 @@ packages: resolution: {integrity: sha512-nLvNiFmroEmp/Lu/MFLa3za1iRXeW3XG/wGa75Hn/BU5GnN2MSh62cwQ1sqIuWRnaYaMNkqhlmBZrIm0/zX5bQ==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/address@0.94.6': + resolution: {integrity: sha512-4P5vAHBX+aYbKdvKQtpI+irkA2OmZrSC4Kqu023KiEzMX1SwSEoXDVb97utDXVIGWOxZm4sSyCGMUhJkZYPLcg==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/contract@0.94.4': resolution: {integrity: sha512-bR7MDkZSt0XW5Kacw5Le+TgVBCyMnHdu4LnRWnftEM0H98BRqYiQmi+7nbnSpJHHNKGdBiYI71igmdumdeBxqw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/contract@0.94.6': + resolution: {integrity: sha512-5E9nDrV2adlhS+bfk2giG6/8aWeFa7OAcsZM/DhkB1phhg7eD9QimwHz1y/s6wiq6oiF42KStKG+N7/mcJ93ZQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/crypto@0.76.0': resolution: {integrity: sha512-CsZxuyCE0qVt3SATYBXwYQUgp8lB/h9RvIi4ZWAO1Fx+kVGHDgn7aVEn2QQbKvelYKk1HAgled8hMyqaDRk4cQ==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3018,6 +3183,10 @@ packages: resolution: {integrity: sha512-51nQ+Ln2jlOlwUGEJ8vpOffn5nl+lthWnT7tkEZxsgC76oiXy3eIeLo1JMTYWDrMhOlMHcRYp6JsWN9by08zCA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/crypto@0.94.6': + resolution: {integrity: sha512-QagAhB7O9gV6fDiEsJnvaURNA8OklE9uKuaCcrxNVpzzxgapreZU6b99oAV9zctiojNn3JcF3UYqVCE9SIgZEw==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/errors@0.76.0': resolution: {integrity: sha512-X67pOvTtTqf1TB1EnsH1UDNULgEAxDvSJ6KRHoNKchS5xwSwNM/VeDqzFlNYaNJDq/5HYaGY91Bnjep10zXmSA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3034,6 +3203,10 @@ packages: resolution: {integrity: sha512-mLlgmh0vxTY7PDZdsgYHCLNXZnIULbKs6LBWrRVxNGbyvqVS6xzDJkOVd1EASEYSlLQ/9CjWrLkibFt/mJ3vLQ==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/errors@0.94.6': + resolution: {integrity: sha512-qMYI9acCZm1ISDPgTLtW21UwypL6g+X8OGxOgmeQajM8SvT3Zj6cot3q6YM+ZCmo9ZB3IWOOtam7hXTK7MKawQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/hasher@0.90.0': resolution: {integrity: sha512-GmDziNupy+KuuIq8Wz42WOC1h/z4q/0ml7+5LeeqwhRiJ+Ekzud5py605AZbKFy5S5L3VH0TkLTkhbsJycd0lA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3046,6 +3219,10 @@ packages: resolution: {integrity: sha512-6EQY/OwM4GE0/a7UZ9ISbz8N9bh0Jz1qufSPKSi5ZgGIzZxbQPeqJnYrf+xgJQjPiv+WP9uxzp72mpr71w7/xg==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/hasher@0.94.6': + resolution: {integrity: sha512-hg2judiu3Ci1wCbi5DMIMeWcf3jOZK1dmNiPEJu19BV32uw44QmlnV89uXIxDwLOSxlmiI+dxJOi4vF+domfeg==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/interfaces@0.76.0': resolution: {integrity: sha512-ysdQUUU2UP1/f1YzrkVOqhVqBOPrEd8kyTMPbNV0x0hqs7t3z6UqZYtNNHdTYNMOPyYYxxVzREKSaNN42j8FBA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3062,6 +3239,10 @@ packages: resolution: {integrity: sha512-LaKgnNF07/90Z6qhzdzJ7ldNAKoHC+mR0VcooKmElzSUZMnu6LpOGP9gNYlvykJ+sr24nKxp48eky9SukI3CNA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/interfaces@0.94.6': + resolution: {integrity: sha512-wR+ZGUT1Jjj7LifmvHfBIAIZRwjXUYddwT6SDptBglDQkJGlMwEHv8xh76FU0W764NwWGRqoX2TeZKIdu4fD/w==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/math@0.76.0': resolution: {integrity: sha512-WjxErOHpPQZAJel4kCys1MCIQo0HUfv7z4Vy1Dy3P4/iG4jGa1s4zOghX5QRJMEyZwMyu5Do7BVfa2fT/2insA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3078,6 +3259,10 @@ packages: resolution: {integrity: sha512-Vxb/5iwEEJJKaLvIxrit8KEfSaiTS9ttXimzK7KtWnDVcMwGiqMeTXe7+c5oGfbbrFNQOMEN+owBkl0FgUACMw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/math@0.94.6': + resolution: {integrity: sha512-VIgVv3Qdy4wjuR7ehlvOz+fo6WZPuoWLnACBu4xeMEwUrSZRJrDGBSG3FKBcJOBwIX9olbWseCNTccRWcLinMQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/merkle@0.90.0': resolution: {integrity: sha512-tE91M+gJtZ2N8Z7aE/pUS7xN/3wGQGuyOI63AGVz9mHlJu/Fkkt6f1BWgMK1GIGHk+5zmFJYxwlrFCiZhv8ahw==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3090,14 +3275,26 @@ packages: resolution: {integrity: sha512-8xfmjLwj/peWFNsGzW4NiJtpspPoLSrLiTXUpgyvkzIMAVfIpMnFPp0U1YU4tPNXCywRwKKYl9OYEkzLXM2MPw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/merkle@0.94.6': + resolution: {integrity: sha512-Fh+WYEo+XbuErueWhP0Y9telf4LJPQNqIS46TqPL6r95cfLVgawATTc8LjbaJPaEjxl2ET7WGlAVWIK1kdeIjQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/program@0.94.4': resolution: {integrity: sha512-T2JqQyX3kXK8IhLws/tZjqYNtjWpurMNyMeScDwPd54QNs/LCseEKFWQMKuPq1Y3PQqf+FJ3oRc7AWBqKk7gHw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/program@0.94.6': + resolution: {integrity: sha512-nEOyYT1V+i4FftN/lyvX9ZxqoZjMXgA26nUzDb/x438dXPra+IbBzOZel+6oFaUyrdBC5kvISdATl6CKEL0LaQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/script@0.94.4': resolution: {integrity: sha512-dtoTAfiisb+HeCUo9c6pmc1kfmBWoMm64z2Xnfj6yhyNRGRL81mEOeNlpT/Ee57xprww9eMUlRqU9ulPYEeJXg==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/script@0.94.6': + resolution: {integrity: sha512-5zbpc2tUD7F4/kQysve2bRGA90UHZqxt9WsuxFw4AZ56jFXQ6K2nQR5WUNeuExxONwl5vml80+7Km503vwF4Qw==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/transactions@0.90.0': resolution: {integrity: sha512-uxXVhvepO6KLwQ2FHUly+2RHOuy7ny0VWyC1EIccV4MPsTqH0U96JQsOpr2U9eMMXXQDorQG6bAZXP3VvlaTOw==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3110,6 +3307,10 @@ packages: resolution: {integrity: sha512-vDBnopMIaJTv6Q8EMayaC/FTB5BwLYVoySHCjgPCo6mafvBZNDzR5gRP1T03IDFdtJm8wefQGd6tGYjncinvEw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/transactions@0.94.6': + resolution: {integrity: sha512-AcaZIs+kAzYRIL/wikxHbn+NXz9J1xIJFYSLIcwEXU4Lxnjz9n+GaTblbAWs+MSEdXaGzPvMDLU09c8SysU5Xw==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/utils@0.76.0': resolution: {integrity: sha512-KFohp5afWNFVilG9aJIVadDmVJOOtaz5c5L2E7EZa1sSiDvsxJT/Qp+SdWGU5/rFrDTkYRsRJUqkOn8539OSyA==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3126,6 +3327,10 @@ packages: resolution: {integrity: sha512-aRzXZ7QTbD8bdmLcrj7FJiqS4wMQCsTVnMATu9UXDRKWFSUBc8wTkH+X9w9W2VZXsfn2GoW80ZJpVs54PzGMvA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/utils@0.94.6': + resolution: {integrity: sha512-v/eHwuVZCeiSF4ywZ7mmrMMzOBWU9mcsG5Iu4F598UDWqL6CLSuf3DbATGAE8Dt23JNPzqtSSn7TT+LVdfT8tQ==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + '@fuel-ts/versions@0.76.0': resolution: {integrity: sha512-Y8+RXEEd3Nj+fLmGclb04l8lFmWgPrxrJ7WUYmA+pr0YoWmUn2C9y8NPIfDakaER4wx8DDcxiIShZ8xnrz8AxQ==} engines: {node: ^18.18.2 || ^20.0.0} @@ -3146,6 +3351,11 @@ packages: engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true + '@fuel-ts/versions@0.94.6': + resolution: {integrity: sha512-R/KcgrGe64IhFQkNDQmUnILrMKtKXhaxB+WoDtYho25a79wxq1M+D9Be7kcg+ku2hPjfvk89OaIzD1cZhUx7xg==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + hasBin: true + '@fuels/assets@0.20.0': resolution: {integrity: sha512-pIVzHCEXkIIKXlIvvrISrFyaRRjbxEMnypjV/UZOI9dr99woUgXV1MZnMsq44uhQ/T3VXiTu2cXo4/SSE5ny2g==} @@ -3162,11 +3372,11 @@ packages: '@fuels/local-storage@0.23.0': resolution: {integrity: sha512-/5kj3ww+AETRqtDM4IYZ0L525dd0ZXrSIVBVEuHQU16112EBZYBYnrGAq2fgJAE7MzLowEhBx2aa8iWvq+m/0g==} - '@fuels/playwright-utils@0.20.0': - resolution: {integrity: sha512-26vikCWdvyrVM/tME9zpd0K61MD9kYxVPQWlwX4FSZXHV3WPgueaESMfzTUos0ehrJv552q7nnJ/iwF96gZkMA==} + '@fuels/playwright-utils@0.30.0': + resolution: {integrity: sha512-AVmKgdEE/N7x2v3uordY4o+FoENGgjfkBAuoepUIT6aG7v0OfS+ufZy67Xo2kBqWKtTawTLL8rr9VdGwEAueWw==} peerDependencies: '@playwright/test': ^1.39.0 - fuels: '>=0.86.0' + fuels: '>=0.94.6' '@fuels/react-xstore@0.23.0': resolution: {integrity: sha512-MJdHDiGL1/X9mjSUhRWpO1IvHK+0K1DATEBtmKyY0zW75zZx5v2t46uYlbG4DwqCJsFHuwMkswe2M/2NaMwrcg==} @@ -3943,6 +4153,10 @@ packages: '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -9512,6 +9726,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -10066,6 +10285,11 @@ packages: engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true + fuels@0.94.6: + resolution: {integrity: sha512-mQVvFiLaRHALi7vHQWkn3ZYynYsbQT4rFDZrPhMrJ7shH7OmWTXEX64SBh4nVEqPh5B3IyH+EWG/EzW5Wd+MwA==} + engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + hasBin: true + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -10224,6 +10448,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -11052,6 +11280,9 @@ packages: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jayson@4.1.1: resolution: {integrity: sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w==} engines: {node: '>=8'} @@ -11849,6 +12080,10 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -11876,6 +12111,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} @@ -12295,6 +12535,9 @@ packages: resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} engines: {node: '>=8'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.2.0: resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} @@ -12389,6 +12632,10 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@0.1.10: resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} @@ -14645,6 +14892,10 @@ packages: resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==} engines: {node: '>=16'} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -16757,6 +17008,9 @@ snapshots: '@esbuild/aix-ppc64@0.22.0': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -16775,6 +17029,9 @@ snapshots: '@esbuild/android-arm64@0.22.0': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -16793,6 +17050,9 @@ snapshots: '@esbuild/android-arm@0.22.0': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -16811,6 +17071,9 @@ snapshots: '@esbuild/android-x64@0.22.0': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -16829,6 +17092,9 @@ snapshots: '@esbuild/darwin-arm64@0.22.0': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -16847,6 +17113,9 @@ snapshots: '@esbuild/darwin-x64@0.22.0': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -16865,6 +17134,9 @@ snapshots: '@esbuild/freebsd-arm64@0.22.0': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -16883,6 +17155,9 @@ snapshots: '@esbuild/freebsd-x64@0.22.0': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -16901,6 +17176,9 @@ snapshots: '@esbuild/linux-arm64@0.22.0': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -16919,6 +17197,9 @@ snapshots: '@esbuild/linux-arm@0.22.0': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -16937,6 +17218,9 @@ snapshots: '@esbuild/linux-ia32@0.22.0': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -16955,6 +17239,9 @@ snapshots: '@esbuild/linux-loong64@0.22.0': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -16973,6 +17260,9 @@ snapshots: '@esbuild/linux-mips64el@0.22.0': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -16991,6 +17281,9 @@ snapshots: '@esbuild/linux-ppc64@0.22.0': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -17009,6 +17302,9 @@ snapshots: '@esbuild/linux-riscv64@0.22.0': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -17027,6 +17323,9 @@ snapshots: '@esbuild/linux-s390x@0.22.0': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -17045,6 +17344,9 @@ snapshots: '@esbuild/linux-x64@0.22.0': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -17063,9 +17365,15 @@ snapshots: '@esbuild/netbsd-x64@0.22.0': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + '@esbuild/openbsd-arm64@0.22.0': optional: true + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -17084,6 +17392,9 @@ snapshots: '@esbuild/openbsd-x64@0.22.0': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -17102,6 +17413,9 @@ snapshots: '@esbuild/sunos-x64@0.22.0': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -17120,6 +17434,9 @@ snapshots: '@esbuild/win32-arm64@0.22.0': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -17138,6 +17455,9 @@ snapshots: '@esbuild/win32-ia32@0.22.0': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -17156,6 +17476,9 @@ snapshots: '@esbuild/win32-x64@0.22.0': optional: true + '@esbuild/win32-x64@0.23.1': + optional: true + '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 @@ -17531,6 +17854,16 @@ snapshots: '@fuel-ts/utils': 0.94.4 type-fest: 4.26.0 + '@fuel-ts/abi-coder@0.94.6': + dependencies: + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/utils': 0.94.6 + type-fest: 4.26.1 + '@fuel-ts/abi-typegen@0.94.4': dependencies: '@fuel-ts/errors': 0.94.4 @@ -17544,6 +17877,19 @@ snapshots: ramda: 0.30.1 rimraf: 5.0.9 + '@fuel-ts/abi-typegen@0.94.6': + dependencies: + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuel-ts/versions': 0.94.6 + commander: 12.1.0 + glob: 10.4.5 + handlebars: 4.7.8 + mkdirp: 3.0.1 + ramda: 0.30.1 + rimraf: 5.0.9 + '@fuel-ts/account@0.90.0': dependencies: '@fuel-ts/abi-coder': 0.90.0 @@ -17621,6 +17967,31 @@ snapshots: - encoding - supports-color + '@fuel-ts/account@0.94.6': + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/address': 0.94.6 + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/merkle': 0.94.6 + '@fuel-ts/transactions': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuel-ts/versions': 0.94.6 + '@fuels/vm-asm': 0.56.0 + '@noble/curves': 1.6.0 + events: 3.3.0 + graphql: 16.8.1 + graphql-request: 5.0.0(graphql@16.8.1) + graphql-tag: 2.12.6(graphql@16.8.1) + portfinder: 1.0.32 + ramda: 0.30.1 + transitivePeerDependencies: + - encoding + - supports-color + '@fuel-ts/address@0.76.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@fuel-ts/crypto': 0.76.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -17661,6 +18032,15 @@ snapshots: '@noble/hashes': 1.4.0 bech32: 2.0.0 + '@fuel-ts/address@0.94.6': + dependencies: + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@noble/hashes': 1.5.0 + bech32: 2.0.0 + '@fuel-ts/contract@0.94.4': dependencies: '@fuel-ts/abi-coder': 0.94.4 @@ -17681,6 +18061,26 @@ snapshots: - encoding - supports-color + '@fuel-ts/contract@0.94.6': + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/account': 0.94.6 + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/merkle': 0.94.6 + '@fuel-ts/program': 0.94.6 + '@fuel-ts/transactions': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuel-ts/versions': 0.94.6 + '@fuels/vm-asm': 0.56.0 + ramda: 0.30.1 + transitivePeerDependencies: + - encoding + - supports-color + '@fuel-ts/crypto@0.76.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@fuel-ts/errors': 0.76.0 @@ -17715,6 +18115,14 @@ snapshots: '@fuel-ts/utils': 0.94.4 '@noble/hashes': 1.4.0 + '@fuel-ts/crypto@0.94.6': + dependencies: + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@noble/hashes': 1.5.0 + '@fuel-ts/errors@0.76.0': dependencies: '@fuel-ts/versions': 0.76.0 @@ -17731,6 +18139,10 @@ snapshots: dependencies: '@fuel-ts/versions': 0.94.4 + '@fuel-ts/errors@0.94.6': + dependencies: + '@fuel-ts/versions': 0.94.6 + '@fuel-ts/hasher@0.90.0': dependencies: '@fuel-ts/crypto': 0.90.0 @@ -17752,6 +18164,13 @@ snapshots: '@fuel-ts/utils': 0.94.4 '@noble/hashes': 1.4.0 + '@fuel-ts/hasher@0.94.6': + dependencies: + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@noble/hashes': 1.5.0 + '@fuel-ts/interfaces@0.76.0': {} '@fuel-ts/interfaces@0.90.0': {} @@ -17760,6 +18179,8 @@ snapshots: '@fuel-ts/interfaces@0.94.4': {} + '@fuel-ts/interfaces@0.94.6': {} + '@fuel-ts/math@0.76.0': dependencies: '@fuel-ts/errors': 0.76.0 @@ -17784,6 +18205,12 @@ snapshots: '@types/bn.js': 5.1.5 bn.js: 5.2.1 + '@fuel-ts/math@0.94.6': + dependencies: + '@fuel-ts/errors': 0.94.6 + '@types/bn.js': 5.1.5 + bn.js: 5.2.1 + '@fuel-ts/merkle@0.90.0': dependencies: '@fuel-ts/hasher': 0.90.0 @@ -17799,6 +18226,11 @@ snapshots: '@fuel-ts/hasher': 0.94.4 '@fuel-ts/math': 0.94.4 + '@fuel-ts/merkle@0.94.6': + dependencies: + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/program@0.94.4': dependencies: '@fuel-ts/abi-coder': 0.94.4 @@ -17815,6 +18247,22 @@ snapshots: - encoding - supports-color + '@fuel-ts/program@0.94.6': + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/account': 0.94.6 + '@fuel-ts/address': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/transactions': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuels/vm-asm': 0.56.0 + ramda: 0.30.1 + transitivePeerDependencies: + - encoding + - supports-color + '@fuel-ts/script@0.94.4': dependencies: '@fuel-ts/abi-coder': 0.94.4 @@ -17830,6 +18278,21 @@ snapshots: - encoding - supports-color + '@fuel-ts/script@0.94.6': + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/account': 0.94.6 + '@fuel-ts/address': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/program': 0.94.6 + '@fuel-ts/transactions': 0.94.6 + '@fuel-ts/utils': 0.94.6 + transitivePeerDependencies: + - encoding + - supports-color + '@fuel-ts/transactions@0.90.0': dependencies: '@fuel-ts/abi-coder': 0.90.0 @@ -17860,6 +18323,16 @@ snapshots: '@fuel-ts/math': 0.94.4 '@fuel-ts/utils': 0.94.4 + '@fuel-ts/transactions@0.94.6': + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/address': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuel-ts/utils@0.76.0': dependencies: '@fuel-ts/errors': 0.76.0 @@ -17890,6 +18363,14 @@ snapshots: '@fuel-ts/versions': 0.94.4 fflate: 0.8.2 + '@fuel-ts/utils@0.94.6': + dependencies: + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/versions': 0.94.6 + fflate: 0.8.2 + '@fuel-ts/versions@0.76.0': dependencies: chalk: 4.1.2 @@ -17910,6 +18391,11 @@ snapshots: chalk: 4.1.2 cli-table: 0.3.11 + '@fuel-ts/versions@0.94.6': + dependencies: + chalk: 4.1.2 + cli-table: 0.3.11 + '@fuels/assets@0.20.0': {} '@fuels/connectors@0.27.1(@tanstack/query-core@5.0.5)(@types/react@18.2.54)(@wagmi/connectors@5.1.7(@types/react@18.2.54)(@wagmi/core@2.13.4(@tanstack/query-core@5.0.5)(@types/react@18.2.54)(react@18.2.0)(typescript@5.4.5)(viem@2.20.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.13.1)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.20.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(fuels@0.94.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)': @@ -17986,11 +18472,11 @@ snapshots: '@fuels/local-storage@0.23.0': {} - '@fuels/playwright-utils@0.20.0(@playwright/test@1.41.2)(fuels@0.94.4)': + '@fuels/playwright-utils@0.30.0(@playwright/test@1.41.2)(fuels@0.94.6)': dependencies: '@playwright/test': 1.41.2 adm-zip: 0.5.12 - fuels: 0.94.4 + fuels: 0.94.6 '@fuels/react-xstore@0.23.0(@types/react@18.2.54)(@types/ws@8.5.10)(@xstate/react@3.2.2(@types/react@18.2.54)(react@18.2.0)(xstate@4.38.3))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(xstate@4.38.3)': dependencies: @@ -19407,6 +19893,10 @@ snapshots: dependencies: '@noble/hashes': 1.4.0 + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + '@noble/hashes@1.3.2': {} '@noble/hashes@1.3.3': {} @@ -19665,7 +20155,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.0)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -19680,7 +20170,7 @@ snapshots: webpack: 5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)) optionalDependencies: '@types/webpack': 4.41.39 - type-fest: 4.26.0 + type-fest: 4.26.1 webpack-dev-server: 4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))) webpack-hot-middleware: 2.26.1 @@ -22711,7 +23201,7 @@ snapshots: dependencies: storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@storybook/nextjs@8.0.8(@swc/core@1.4.1(@swc/helpers@0.5.12))(@types/webpack@4.41.39)(next@14.2.3(@babel/core@7.23.9)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.26.0)(typescript@5.4.5)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)))': + '@storybook/nextjs@8.0.8(@swc/core@1.4.1(@swc/helpers@0.5.12))(@types/webpack@4.41.39)(next@14.2.3(@babel/core@7.23.9)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.26.1)(typescript@5.4.5)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12)))': dependencies: '@babel/core': 7.23.9 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) @@ -22726,7 +23216,7 @@ snapshots: '@babel/preset-react': 7.23.3(@babel/core@7.23.9) '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) '@babel/runtime': 7.24.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.0)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(@swc/core@1.4.1(@swc/helpers@0.5.12))) '@storybook/addon-actions': 8.0.8 '@storybook/builder-webpack5': 8.0.8(@swc/core@1.4.1(@swc/helpers@0.5.12))(typescript@5.4.5) '@storybook/core-common': 8.0.8 @@ -26191,6 +26681,11 @@ snapshots: esbuild: 0.22.0 load-tsconfig: 0.2.5 + bundle-require@5.0.0(esbuild@0.23.1): + dependencies: + esbuild: 0.23.1 + load-tsconfig: 0.2.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -27867,6 +28362,33 @@ snapshots: '@esbuild/win32-ia32': 0.22.0 '@esbuild/win32-x64': 0.22.0 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -28645,6 +29167,41 @@ snapshots: - encoding - supports-color + fuels@0.94.6: + dependencies: + '@fuel-ts/abi-coder': 0.94.6 + '@fuel-ts/abi-typegen': 0.94.6 + '@fuel-ts/account': 0.94.6 + '@fuel-ts/address': 0.94.6 + '@fuel-ts/contract': 0.94.6 + '@fuel-ts/crypto': 0.94.6 + '@fuel-ts/errors': 0.94.6 + '@fuel-ts/hasher': 0.94.6 + '@fuel-ts/interfaces': 0.94.6 + '@fuel-ts/math': 0.94.6 + '@fuel-ts/merkle': 0.94.6 + '@fuel-ts/program': 0.94.6 + '@fuel-ts/script': 0.94.6 + '@fuel-ts/transactions': 0.94.6 + '@fuel-ts/utils': 0.94.6 + '@fuel-ts/versions': 0.94.6 + bundle-require: 5.0.0(esbuild@0.23.1) + chalk: 4.1.2 + chokidar: 3.6.0 + commander: 12.1.0 + esbuild: 0.23.1 + glob: 10.4.5 + handlebars: 4.7.8 + joycon: 3.1.1 + lodash.camelcase: 4.3.0 + portfinder: 1.0.32 + toml: 3.0.0 + uglify-js: 3.19.3 + yup: 1.4.0 + transitivePeerDependencies: + - encoding + - supports-color + function-bind@1.1.2: {} function.prototype.name@1.1.6: @@ -28792,6 +29349,15 @@ snapshots: minipass: 7.1.2 path-scurry: 1.10.1 + glob@10.4.5: + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -29752,6 +30318,12 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jayson@4.1.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -30931,6 +31503,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} minipass@7.1.2: {} @@ -30951,6 +31527,8 @@ snapshots: mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + mlly@1.5.0: dependencies: acorn: 8.11.3 @@ -31426,6 +32004,8 @@ snapshots: lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 + package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.0: {} pako@0.2.9: {} @@ -31514,6 +32094,11 @@ snapshots: lru-cache: 10.2.0 minipass: 7.1.2 + path-scurry@1.11.1: + dependencies: + lru-cache: 10.2.0 + minipass: 7.1.2 + path-to-regexp@0.1.10: {} path-to-regexp@8.1.0: {} @@ -34361,6 +34946,8 @@ snapshots: type-fest@4.26.0: {} + type-fest@4.26.1: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 From b9d54ade2c9ffd7fb87127ba0ad7b5751b69ee62 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 00:55:42 -0300 Subject: [PATCH 08/16] chore --- packages/e2e-tests/tests/hard/bridge/fixtures/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/tests/hard/bridge/fixtures/index.ts b/packages/e2e-tests/tests/hard/bridge/fixtures/index.ts index 57c1fde9d..34ea11628 100644 --- a/packages/e2e-tests/tests/hard/bridge/fixtures/index.ts +++ b/packages/e2e-tests/tests/hard/bridge/fixtures/index.ts @@ -10,7 +10,7 @@ import { ETH_MNEMONIC, ETH_WALLET_PASSWORD } from '../mocks'; import { getExtensionsData } from './utils/getExtensionsData'; import { waitForExtensions } from './utils/waitForExtenssions'; -const FUEL_WALLET_VERSION = '0.20.0'; +const FUEL_WALLET_VERSION = '0.30.0'; const META_MASK_VERSION = '11.11.4'; export const test = base.extend<{ From ea6a5e3ea17b67fd43a537cff0e4c829bb4fae91 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 01:35:50 -0300 Subject: [PATCH 09/16] chore: log --- packages/e2e-tests/tests/hard/bridge/Bridge.test.ts | 10 ++++++++++ packages/e2e-tests/tests/hard/bridge/utils/wallets.ts | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 0b3b906e1..86fff408d 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -41,6 +41,7 @@ test.describe('Bridge', () => { let fuelWalletTestHelper: FuelWalletTestHelper; test.beforeEach(async ({ context, extensionId, page }) => { + console.log('asd 1'); const walletSettedUp = await setupFuelWallet({ context, extensionId, @@ -49,6 +50,7 @@ test.describe('Bridge', () => { fuelWallet = walletSettedUp.fuelWallet; fuelWalletTestHelper = walletSettedUp.fuelWalletTestHelper; account = walletSettedUp.account; + console.log('asd 2'); client = createPublicClient({ chain: foundry, @@ -56,17 +58,25 @@ test.describe('Bridge', () => { }); await page.bringToFront(); + console.log('asd 3'); await page.goto('/bridge'); + await page.waitForTimeout(3000); + console.log('asd 4'); + await page.reload(); }); test('e2e', async ({ page, context }) => { + console.log('asd 5'); await test.step('Connect to Fuel', async () => { + console.log('asd 6'); await connectToFuel(page, fuelWalletTestHelper, [ 'Account 2', 'Account 4', ]); + console.log('asd 7'); }); await test.step('Connect to metamask', async () => { + console.log('asd 8'); await connectToMetamask(page); }); diff --git a/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts b/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts index 48b9e1cd0..0b42a9998 100644 --- a/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts +++ b/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts @@ -27,8 +27,10 @@ export const setupFuelWallet = async ({ context, extensionId, }: { page: Page; context: BrowserContext; extensionId: string }) => { + console.log('asd 11'); const fuelProvider = await Provider.create(PROVIDER_URL); const chainName = (await fuelProvider.fetchChain()).name; + console.log('asd 12'); const fuelWalletTestHelper = await FuelWalletTestHelper.walletSetup( context, @@ -36,17 +38,21 @@ export const setupFuelWallet = async ({ PROVIDER_URL, chainName, ); + console.log('asd 13'); await fuelWalletTestHelper.addAccount(); await fuelWalletTestHelper.addAccount(); await fuelWalletTestHelper.addAccount(); + console.log('asd 14'); await fuelWalletTestHelper.switchAccount('Account 1'); const account = mnemonicToAccount(ETH_MNEMONIC); + console.log('asd 15'); const fuelWallet = Wallet.fromMnemonic( FUEL_MNEMONIC, undefined, undefined, fuelProvider, ); + console.log('asd 16'); return { fuelWallet, fuelWalletTestHelper, account }; }; From 6fc5d40383b7938da4336c1e5c0d910c6d9188fa Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 01:46:04 -0300 Subject: [PATCH 10/16] chore: logs --- .../e2e-tests/tests/hard/bridge/Bridge.test.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 86fff408d..8be018e16 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -41,7 +41,6 @@ test.describe('Bridge', () => { let fuelWalletTestHelper: FuelWalletTestHelper; test.beforeEach(async ({ context, extensionId, page }) => { - console.log('asd 1'); const walletSettedUp = await setupFuelWallet({ context, extensionId, @@ -50,7 +49,6 @@ test.describe('Bridge', () => { fuelWallet = walletSettedUp.fuelWallet; fuelWalletTestHelper = walletSettedUp.fuelWalletTestHelper; account = walletSettedUp.account; - console.log('asd 2'); client = createPublicClient({ chain: foundry, @@ -58,25 +56,19 @@ test.describe('Bridge', () => { }); await page.bringToFront(); - console.log('asd 3'); await page.goto('/bridge'); await page.waitForTimeout(3000); - console.log('asd 4'); await page.reload(); }); test('e2e', async ({ page, context }) => { - console.log('asd 5'); await test.step('Connect to Fuel', async () => { - console.log('asd 6'); await connectToFuel(page, fuelWalletTestHelper, [ 'Account 2', 'Account 4', ]); - console.log('asd 7'); }); await test.step('Connect to metamask', async () => { - console.log('asd 8'); await connectToMetamask(page); }); @@ -101,6 +93,7 @@ test.describe('Bridge', () => { const baseAssetId = fuelWallet.provider.getBaseAssetId(); await test.step('Fuel wallet should be connected after refresh', async () => { + console.log('asd 1'); await goToBridgePage(page); const connectedWallet = getByAriaLabel( @@ -108,11 +101,14 @@ test.describe('Bridge', () => { 'Fuel Local: Connected Wallet', ); const address = await connectedWallet.innerText(); + console.log('asd 2'); const balance = getByAriaLabel(page, 'Balance'); const balanceText = await balance.innerText(); + console.log('asd 3'); // refresh the page await page.goto('/bridge'); + console.log('asd 4'); const connectedWalletAferRefresh = getByAriaLabel( page, @@ -122,8 +118,12 @@ test.describe('Bridge', () => { const balanceAfterRefresh = getByAriaLabel(page, 'Balance'); const balanceTextAfterRefresh = await balanceAfterRefresh.innerText(); + console.log('asd 5'); + expect(addressAfterRefresh).toEqual(address); expect(balanceTextAfterRefresh).toEqual(balanceText); + + console.log('asd 6'); }); await test.step('Deposit ETH to Fuel', async () => { From 18ae0605b63a9623ffa9986e450657d7e71fdb3e Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 01:58:35 -0300 Subject: [PATCH 11/16] chore: e2e --- .github/workflows/pr-tests.yml | 2 ++ packages/e2e-tests/playwright.config.ts | 1 + packages/e2e-tests/tests/hard/bridge/utils/wallets.ts | 6 ------ 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index 291ee56d5..5b1373e5c 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -92,6 +92,8 @@ jobs: - name: Run E2E Tests run: xvfb-run --auto-servernum -- pnpm test:e2e-soft + env: + PLAYWRIGHT_JSON_OUTPUT_NAME: playwright-report/results.json - uses: actions/upload-artifact@v4 if: always() diff --git a/packages/e2e-tests/playwright.config.ts b/packages/e2e-tests/playwright.config.ts index d2dae8e75..1f4c96706 100644 --- a/packages/e2e-tests/playwright.config.ts +++ b/packages/e2e-tests/playwright.config.ts @@ -15,6 +15,7 @@ const config: PlaywrightTestConfig = defineConfig({ reporter: [ ['list', { printSteps: true }], ['html', { outputFolder: join(__dirname, './playwright-html/hard/') }], + ['github'], ], // Fail the build on CI if left test.only in the source code forbidOnly: !!process.env.CI, diff --git a/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts b/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts index 0b42a9998..48b9e1cd0 100644 --- a/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts +++ b/packages/e2e-tests/tests/hard/bridge/utils/wallets.ts @@ -27,10 +27,8 @@ export const setupFuelWallet = async ({ context, extensionId, }: { page: Page; context: BrowserContext; extensionId: string }) => { - console.log('asd 11'); const fuelProvider = await Provider.create(PROVIDER_URL); const chainName = (await fuelProvider.fetchChain()).name; - console.log('asd 12'); const fuelWalletTestHelper = await FuelWalletTestHelper.walletSetup( context, @@ -38,21 +36,17 @@ export const setupFuelWallet = async ({ PROVIDER_URL, chainName, ); - console.log('asd 13'); await fuelWalletTestHelper.addAccount(); await fuelWalletTestHelper.addAccount(); await fuelWalletTestHelper.addAccount(); - console.log('asd 14'); await fuelWalletTestHelper.switchAccount('Account 1'); const account = mnemonicToAccount(ETH_MNEMONIC); - console.log('asd 15'); const fuelWallet = Wallet.fromMnemonic( FUEL_MNEMONIC, undefined, undefined, fuelProvider, ); - console.log('asd 16'); return { fuelWallet, fuelWalletTestHelper, account }; }; From 0955c3f262bc90097d70d3c7541b84d0c837c277 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 02:09:39 -0300 Subject: [PATCH 12/16] chore --- packages/e2e-tests/tests/hard/bridge/Bridge.test.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 8be018e16..926cebc3b 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -61,6 +61,11 @@ test.describe('Bridge', () => { await page.reload(); }); test('e2e', async ({ page, context }) => { + function log(message: string) { + test.info().annotations.push({ type: 'info', description: message }); + } + + log('Starting the test'); await test.step('Connect to Fuel', async () => { await connectToFuel(page, fuelWalletTestHelper, [ 'Account 2', @@ -68,6 +73,7 @@ test.describe('Bridge', () => { ]); }); + log('Connect to metamask'); await test.step('Connect to metamask', async () => { await connectToMetamask(page); }); @@ -92,6 +98,7 @@ test.describe('Bridge', () => { }); const baseAssetId = fuelWallet.provider.getBaseAssetId(); + log('Fuel wallet should be connected after refresh'); await test.step('Fuel wallet should be connected after refresh', async () => { console.log('asd 1'); await goToBridgePage(page); @@ -126,6 +133,7 @@ test.describe('Bridge', () => { console.log('asd 6'); }); + log('Deposit ETH to Fuel'); await test.step('Deposit ETH to Fuel', async () => { const preDepositBalanceFuel = await fuelWallet.getBalance(baseAssetId); const prevDepositBalanceEth = await client.getBalance({ @@ -201,6 +209,7 @@ test.describe('Bridge', () => { }); }); + log('Withdraw ETH from Fuel'); await test.step('Withdraw ETH from Fuel', async () => { const preWithdrawBalanceFuel = await fuelWallet.getBalance(baseAssetId); const prevWithdrawBalanceEth = await client.getBalance({ @@ -312,6 +321,7 @@ test.describe('Bridge', () => { }); }); + log('Faucet TKN'); await test.step('Faucet TKN', async () => { const preFaucetBalance = (await erc20Contract.read.balanceOf([ account.address, @@ -359,6 +369,7 @@ test.describe('Bridge', () => { ); }); + log('Deposit TKN to Fuel'); await test.step('Deposit TKN to Fuel', async () => { await clickDepositTab(page); const preDepositBalanceFuel = @@ -470,6 +481,7 @@ test.describe('Bridge', () => { }); }); + log('Withdraw TKN from Fuel to ETH'); await test.step('Withdraw TKN from Fuel to ETH', async () => { const preWithdrawBalanceFuel = await fuelWallet.getBalance(FUEL_TokenAsset); @@ -586,6 +598,7 @@ test.describe('Bridge', () => { }); }); + log('Transaction list should show correct after refresh the page'); await test.step('Transaction list should show correct after refresh the page', async () => { await page.goto('/bridge'); await goToTransactionsPage(page); From 6503ea1fa862e9746e2c6e34f54ce9ef42969a67 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 02:26:44 -0300 Subject: [PATCH 13/16] chore --- .github/workflows/pr-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index 5b1373e5c..b709a8d0f 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -94,6 +94,8 @@ jobs: run: xvfb-run --auto-servernum -- pnpm test:e2e-soft env: PLAYWRIGHT_JSON_OUTPUT_NAME: playwright-report/results.json + PLAYWRIGHT_FORCE_TTY: true + PLAYWRIGHT_FORCE_COLOR: true - uses: actions/upload-artifact@v4 if: always() From 16a26928e5cc7b0711a4d4752a56ed3a4c1c0896 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 02:29:12 -0300 Subject: [PATCH 14/16] chore --- packages/e2e-tests/tests/hard/bridge/Bridge.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 926cebc3b..50dd918e0 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -135,6 +135,7 @@ test.describe('Bridge', () => { log('Deposit ETH to Fuel'); await test.step('Deposit ETH to Fuel', async () => { + console.log('asd 7'); const preDepositBalanceFuel = await fuelWallet.getBalance(baseAssetId); const prevDepositBalanceEth = await client.getBalance({ address: account.address, @@ -211,6 +212,7 @@ test.describe('Bridge', () => { log('Withdraw ETH from Fuel'); await test.step('Withdraw ETH from Fuel', async () => { + console.log('asd 8'); const preWithdrawBalanceFuel = await fuelWallet.getBalance(baseAssetId); const prevWithdrawBalanceEth = await client.getBalance({ address: account.address, @@ -323,6 +325,7 @@ test.describe('Bridge', () => { log('Faucet TKN'); await test.step('Faucet TKN', async () => { + console.log('asd 9'); const preFaucetBalance = (await erc20Contract.read.balanceOf([ account.address, ])) as BigNumberish; @@ -371,6 +374,7 @@ test.describe('Bridge', () => { log('Deposit TKN to Fuel'); await test.step('Deposit TKN to Fuel', async () => { + console.log('asd 10'); await clickDepositTab(page); const preDepositBalanceFuel = await fuelWallet.getBalance(FUEL_TokenAsset); @@ -483,6 +487,7 @@ test.describe('Bridge', () => { log('Withdraw TKN from Fuel to ETH'); await test.step('Withdraw TKN from Fuel to ETH', async () => { + console.log('asd 11'); const preWithdrawBalanceFuel = await fuelWallet.getBalance(FUEL_TokenAsset); const preWithdrawBalanceEth = await erc20Contract.read.balanceOf([ @@ -600,6 +605,7 @@ test.describe('Bridge', () => { log('Transaction list should show correct after refresh the page'); await test.step('Transaction list should show correct after refresh the page', async () => { + console.log('asd 12'); await page.goto('/bridge'); await goToTransactionsPage(page); @@ -610,6 +616,7 @@ test.describe('Bridge', () => { }); await test.step('Check if transaction list reacts correctly to fuel wallet changes', async () => { + console.log('asd 13'); await goToTransactionsPage(page); await test.step('Change to account 2 should show empty feedback', async () => { @@ -645,6 +652,7 @@ test.describe('Bridge', () => { }); await test.step('Deposit TKN before Fuel wallet has ETH', async () => { + console.log('asd 14'); await fuelWalletTestHelper.switchAccount('Account 4'); await goToBridgePage(page); await clickDepositTab(page); From a2db8c9039dd54dc370a8759058097e532e766ec Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 02:48:16 -0300 Subject: [PATCH 15/16] chore --- packages/e2e-tests/playwright.config.ts | 12 +++++++----- packages/e2e-tests/tests/hard/bridge/Bridge.test.ts | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/e2e-tests/playwright.config.ts b/packages/e2e-tests/playwright.config.ts index 1f4c96706..2ac8169d5 100644 --- a/packages/e2e-tests/playwright.config.ts +++ b/packages/e2e-tests/playwright.config.ts @@ -12,11 +12,13 @@ const config: PlaywrightTestConfig = defineConfig({ expect: { timeout: 5000, }, - reporter: [ - ['list', { printSteps: true }], - ['html', { outputFolder: join(__dirname, './playwright-html/hard/') }], - ['github'], - ], + reporter: process.env.CI + ? [['list', { printSteps: true }]] + : [ + ['list', { printSteps: true }], + ['html', { outputFolder: join(__dirname, './playwright-html/hard/') }], + ['github'], + ], // Fail the build on CI if left test.only in the source code forbidOnly: !!process.env.CI, retries: 0, diff --git a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts index 50dd918e0..e05afa1ea 100644 --- a/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts +++ b/packages/e2e-tests/tests/hard/bridge/Bridge.test.ts @@ -142,6 +142,7 @@ test.describe('Bridge', () => { }); await test.step('Fill data and click on deposit', async () => { + console.log('asd 71'); await hasDropdownSymbol(page, 'ETH'); const depositInput = page.locator('.fuel-InputAmountField input'); await depositInput.fill(DEPOSIT_AMOUNT); @@ -150,12 +151,14 @@ test.describe('Bridge', () => { }); await test.step('Approve transaction on Metamask', async () => { + console.log('asd 72'); // Timeout needed until https://github.com/Synthetixio/synpress/issues/795 is fixed await page.waitForTimeout(2000); await metamask.confirmTransaction(); }); await test.step('Check if deposit is completed', async () => { + console.log('asd 73'); await page.locator(':nth-match(:text("Done"), 1)').waitFor(); await page.locator(':nth-match(:text("Done"), 3)').waitFor(); @@ -180,6 +183,7 @@ test.describe('Bridge', () => { }); await test.step('Check deposit tx in the Tx list', async () => { + console.log('asd 74'); await closeTransactionPopup(page); const postDepositBalanceFuel = await fuelWallet.getBalance(baseAssetId); From 4fe752abc50aff2cdb0e7495889d2f3d68394105 Mon Sep 17 00:00:00 2001 From: LuizAsFight Date: Wed, 25 Sep 2024 03:22:10 -0300 Subject: [PATCH 16/16] chore: dockerfile --- docker/fuel-core/Dockerfile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docker/fuel-core/Dockerfile b/docker/fuel-core/Dockerfile index 2116c5571..1323360a7 100644 --- a/docker/fuel-core/Dockerfile +++ b/docker/fuel-core/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/fuellabs/fuel-core:v0.35.0 +FROM ghcr.io/fuellabs/fuel-core:v0.36.0 ARG FUEL_IP=0.0.0.0 ARG FUEL_PORT=4001 @@ -17,17 +17,15 @@ COPY ./genesis_coins.json . # Fuel Core 0.35.0, needs to be changed when core version is updated RUN git clone \ https://github.com/FuelLabs/chain-configuration.git \ - /chain-configuration && \ - cd /chain-configuration && \ - git checkout 6cea45da59bb105a02fb0b115c7ef03f3a690ba1 + /chain-configuration # Copy the base local configuration RUN cp -R /chain-configuration/local/* ./ # Copy the testnet consensus parameters and state transition bytecode -RUN cp /chain-configuration/upgradelog/ignition-devnet/consensus_parameters/6.json \ +RUN cp /chain-configuration/upgradelog/ignition-testnet/consensus_parameters/9.json \ ./latest_consensus_parameters.json -RUN cp /chain-configuration/upgradelog/ignition-devnet/state_transition_function/9.wasm \ +RUN cp /chain-configuration/upgradelog/ignition-testnet/state_transition_function/11.wasm \ ./state_transition_bytecode.wasm # update local state_config with custom genesis coins config