diff --git a/.changeset/poor-ravens-smell.md b/.changeset/poor-ravens-smell.md new file mode 100644 index 00000000..19077da4 --- /dev/null +++ b/.changeset/poor-ravens-smell.md @@ -0,0 +1,17 @@ +--- +"@fuel-connectors/burner-wallet-connector": patch +"@fuel-connectors/fuel-development-wallet": patch +"@fuel-connectors/walletconnect-connector": patch +"@fuel-connectors/solana-connector": patch +"@fuel-connectors/evm-predicates": patch +"@fuel-connectors/evm-connector": patch +"@fuel-connectors/fuelet-wallet": patch +"@fuel-connectors/fuel-wallet": patch +"@fuels/connectors": patch +"@fuel-connectors/bako-safe": patch +"@fuel-connectors/common": patch +"@fuels/react": patch +"docs": patch +--- + +Updated Fuel SDK diff --git a/.changeset/strange-horses-sleep.md b/.changeset/strange-horses-sleep.md new file mode 100644 index 00000000..b5e0020f --- /dev/null +++ b/.changeset/strange-horses-sleep.md @@ -0,0 +1,5 @@ +--- +"@fuel-connectors/walletconnect-connector": minor +--- + +Request message signature to validate access before connecting to applications diff --git a/.changeset/swift-socks-raise.md b/.changeset/swift-socks-raise.md new file mode 100644 index 00000000..01a7e494 --- /dev/null +++ b/.changeset/swift-socks-raise.md @@ -0,0 +1,6 @@ +--- +"@fuel-connectors/fuel-development-wallet": patch +"@fuel-connectors/fuel-wallet": patch +--- + +Restart JSONRPC client before ping when not installed diff --git a/.changeset/tender-dolphins-trade.md b/.changeset/tender-dolphins-trade.md new file mode 100644 index 00000000..888aa556 --- /dev/null +++ b/.changeset/tender-dolphins-trade.md @@ -0,0 +1,5 @@ +--- +"@fuels/react": minor +--- + +Connection modal improvements diff --git a/biome.json b/biome.json index c14a7ee5..27f26ba8 100644 --- a/biome.json +++ b/biome.json @@ -19,6 +19,9 @@ }, "complexity": { "noForEach": "off" + }, + "suspicious": { + "noAsyncPromiseExecutor": "off" } } }, diff --git a/e2e-tests/package.json b/e2e-tests/package.json index 345c1144..4d6d5c10 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -16,7 +16,7 @@ "@playwright/test": "1.46.1", "@types/node": "20.12.11", "dotenv": "16.4.5", - "fuels": "0.93.0" + "fuels": "pr-3201" }, "engines": { "node": ">=18", diff --git a/examples/react-app/package.json b/examples/react-app/package.json index 6159ab6a..e8a9291b 100644 --- a/examples/react-app/package.json +++ b/examples/react-app/package.json @@ -17,7 +17,7 @@ "@wagmi/connectors": "5.1.7", "@wagmi/core": "2.13.4", "clsx": "2.1.1", - "fuels": "0.94.6", + "fuels": "pr-3201", "react": "18.3.1", "react-dom": "18.3.1" }, diff --git a/examples/react-app/src/components/balance.tsx b/examples/react-app/src/components/balance.tsx index 79c96fa7..62378e89 100644 --- a/examples/react-app/src/components/balance.tsx +++ b/examples/react-app/src/components/balance.tsx @@ -16,12 +16,12 @@ const BalanceSkeleton = () => ( ); export default function Balance({ isSigning }: Props) { - const { refetchWallet, balance, address } = useWallet(); + const { refetchBalance, balance, address } = useWallet(); useEffect(() => { - const interval = setInterval(() => refetchWallet(), 5000); + const interval = setInterval(() => refetchBalance(), 5000); return () => clearInterval(interval); - }, [refetchWallet]); + }, [refetchBalance]); return ( diff --git a/examples/react-app/src/main.tsx b/examples/react-app/src/main.tsx index 3f6aaf9c..b28898f4 100644 --- a/examples/react-app/src/main.tsx +++ b/examples/react-app/src/main.tsx @@ -56,6 +56,7 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( =0.94.6", + "fuels": ">=pr-3201", "socket.io-client": "4.7.2" }, "devDependencies": { - "fuels": "0.94.6", + "fuels": "pr-3201", "tsup": "8.0.2", "typescript": "5.4.2", "undici": "6.9.0" diff --git a/packages/bako-safe/src/BakoSafeConnector.ts b/packages/bako-safe/src/BakoSafeConnector.ts index 16e10e11..28a189e0 100644 --- a/packages/bako-safe/src/BakoSafeConnector.ts +++ b/packages/bako-safe/src/BakoSafeConnector.ts @@ -49,6 +49,7 @@ export class BakoSafeConnector extends FuelConnector { }; installed = true; connected = false; + external = false; events = { ...BakoSafeConnectorEvents, diff --git a/packages/burner-wallet-connector/package.json b/packages/burner-wallet-connector/package.json index 029ac73c..ad4fa77d 100644 --- a/packages/burner-wallet-connector/package.json +++ b/packages/burner-wallet-connector/package.json @@ -14,10 +14,10 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "devDependencies": { - "fuels": "0.94.6", + "fuels": "pr-3201", "jsdom": "24.0.0", "tsup": "8.0.2", "typescript": "5.4.5", diff --git a/packages/burner-wallet-connector/src/BurnerWalletConnector.ts b/packages/burner-wallet-connector/src/BurnerWalletConnector.ts index 70a7a9a1..1f77555c 100644 --- a/packages/burner-wallet-connector/src/BurnerWalletConnector.ts +++ b/packages/burner-wallet-connector/src/BurnerWalletConnector.ts @@ -29,6 +29,7 @@ export class BurnerWalletConnector extends FuelConnector { connected = false; installed = true; + external = false; events = FuelConnectorEventTypes; diff --git a/packages/common/package.json b/packages/common/package.json index f0104e0f..9bd5ebc8 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -25,7 +25,7 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "@ethersproject/bytes": "5.7.0", @@ -37,7 +37,7 @@ }, "devDependencies": { "@types/memoizee": "0.4.11", - "fuels": "0.94.6", + "fuels": "pr-3201", "terser": "5.31.0", "tsup": "8.0.2", "typescript": "5.4.5", diff --git a/packages/common/src/PredicateConnector.ts b/packages/common/src/PredicateConnector.ts index fb8ad3e8..72632d20 100644 --- a/packages/common/src/PredicateConnector.ts +++ b/packages/common/src/PredicateConnector.ts @@ -8,10 +8,8 @@ import { FuelConnectorEventTypes, type JsonAbi, type Network, - OutputType, type SelectNetworkArguments, type TransactionRequestLike, - TransactionResponse, type Version, ZeroBytes32, bn, @@ -35,6 +33,7 @@ import type { export abstract class PredicateConnector extends FuelConnector { public connected = false; public installed = false; + external = true; public events = FuelConnectorEventTypes; protected predicateAddress!: string; protected customPredicate: Maybe; diff --git a/packages/connectors/package.json b/packages/connectors/package.json index acc0afb2..a9586a37 100644 --- a/packages/connectors/package.json +++ b/packages/connectors/package.json @@ -18,7 +18,7 @@ "ts:check": "tsc --noEmit" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "@ethereumjs/util": "9.0.3", @@ -42,7 +42,7 @@ "@fuel-connectors/fuelet-wallet": "workspace:*", "@fuel-connectors/solana-connector": "workspace:*", "@fuel-connectors/walletconnect-connector": "workspace:*", - "fuels": "0.94.6", + "fuels": "pr-3201", "terser": "5.31.0", "tsup": "8.0.2", "typescript": "5.4.5" diff --git a/packages/docs/package.json b/packages/docs/package.json index bcb4bf42..87c9198b 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -16,7 +16,7 @@ "dependencies": { "@fuel-ts/errors": "0.93.0", "@fuel-ts/versions": "0.93.0", - "fuels": "0.94.6", + "fuels": "pr-3201", "typedoc-plugin-markdown": "^3.15.3" }, "devDependencies": { diff --git a/packages/evm-connector/package.json b/packages/evm-connector/package.json index 9f70217c..a858b262 100644 --- a/packages/evm-connector/package.json +++ b/packages/evm-connector/package.json @@ -20,7 +20,7 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "@ethereumjs/util": "9.0.3", @@ -31,7 +31,7 @@ "@fuel-connectors/common": "workspace:*", "@fuel-connectors/evm-predicates": "workspace:*", "@types/memoizee": "0.4.11", - "fuels": "0.94.6", + "fuels": "pr-3201", "jsdom": "24.0.0", "ts-loader": "9.5.1", "ts-node": "10.9.2", diff --git a/packages/evm-connector/src/types.ts b/packages/evm-connector/src/types.ts index bc5cfdef..6be86814 100644 --- a/packages/evm-connector/src/types.ts +++ b/packages/evm-connector/src/types.ts @@ -23,3 +23,8 @@ export interface EIP1193Provider extends EventEmitter { params?: unknown[]; }): Promise; } + +export interface SignatureData { + message: string; + signature: string; +} diff --git a/packages/evm-predicates/package.json b/packages/evm-predicates/package.json index 70410582..84bcb95f 100644 --- a/packages/evm-predicates/package.json +++ b/packages/evm-predicates/package.json @@ -12,11 +12,11 @@ "ts:check": "tsc --noEmit" }, "peerDependencies": { - "fuels": ">=0.94.0" + "fuels": ">=pr-3201" }, "devDependencies": { "@fuel-connectors/common": "workspace:*", - "fuels": "0.94.4", + "fuels": "pr-3201", "tsx": "4.9.3", "typescript": "5.4.5" } diff --git a/packages/fuel-development-wallet/package.json b/packages/fuel-development-wallet/package.json index 49c35ba7..51f52f82 100644 --- a/packages/fuel-development-wallet/package.json +++ b/packages/fuel-development-wallet/package.json @@ -13,11 +13,11 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "devDependencies": { "@fuel-connectors/fuel-wallet": "workspace:*", - "fuels": "0.94.6", + "fuels": "pr-3201", "tsup": "8.0.2", "typescript": "5.4.5", "undici": "6.16.0", diff --git a/packages/fuel-wallet/package.json b/packages/fuel-wallet/package.json index 5a096a5f..ef4275b3 100644 --- a/packages/fuel-wallet/package.json +++ b/packages/fuel-wallet/package.json @@ -13,14 +13,14 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "json-rpc-2.0": "1.7.0" }, "devDependencies": { "events": "3.3.0", - "fuels": "0.94.6", + "fuels": "pr-3201", "tsup": "8.0.2", "typescript": "5.4.5", "undici": "6.16.0", diff --git a/packages/fuel-wallet/src/FuelWalletConnector.ts b/packages/fuel-wallet/src/FuelWalletConnector.ts index 79b6a10f..b1930f9a 100644 --- a/packages/fuel-wallet/src/FuelWalletConnector.ts +++ b/packages/fuel-wallet/src/FuelWalletConnector.ts @@ -33,6 +33,7 @@ export class FuelWalletConnector extends FuelConnector { name = ''; connected = false; installed = false; + external = false; events = FuelConnectorEventTypes; metadata: ConnectorMetadata = { image: '/connectors/fuel-wallet.svg', diff --git a/packages/fuelet-wallet/package.json b/packages/fuelet-wallet/package.json index 11aad384..e42cef97 100644 --- a/packages/fuelet-wallet/package.json +++ b/packages/fuelet-wallet/package.json @@ -13,11 +13,11 @@ "test": "vitest" }, "peerDependencies": { - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "devDependencies": { "@fuel-connectors/fuel-wallet": "workspace:*", - "fuels": "0.94.6", + "fuels": "pr-3201", "tsup": "8.0.2", "typescript": "5.4.5", "undici": "6.16.0", diff --git a/packages/react/package.json b/packages/react/package.json index 49517f3f..14a4f8f2 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -27,7 +27,7 @@ }, "peerDependencies": { "@tanstack/react-query": ">=5.0.0", - "fuels": ">=0.94.6", + "fuels": ">=pr-3201", "react": ">=18.0.0" }, "dependencies": { @@ -38,7 +38,7 @@ "@tanstack/react-query": "5.35.1", "@types/react": "18.3.1", "compare-versions": "6.1.0", - "fuels": "0.94.6", + "fuels": "pr-3201", "react": "18.3.1", "styled-components": "6.1.12", "tsup": "7.3.0", diff --git a/packages/react/src/providers/FuelUIProvider.tsx b/packages/react/src/providers/FuelUIProvider.tsx index e971a5f1..885c56d9 100644 --- a/packages/react/src/providers/FuelUIProvider.tsx +++ b/packages/react/src/providers/FuelUIProvider.tsx @@ -13,7 +13,6 @@ import { useConnect } from '../hooks/useConnect'; import { useConnectors } from '../hooks/useConnectors'; import { BADGE_BLACKLIST } from '../ui/Connect/components/Connectors/ConnectorBadge'; -import { useFuel } from './FuelHooksProvider'; export type FuelUIProviderProps = { children?: ReactNode; @@ -21,6 +20,13 @@ export type FuelUIProviderProps = { theme?: string; }; +export enum DialogState { + INSTALL = 'install', + CONNECTING = 'connecting', + INSTALLED = 'installed', + ERROR = 'error', +} + export type FuelUIContextType = { fuelConfig: FuelConfig; theme: string; @@ -34,12 +40,17 @@ export type FuelUIContextType = { error: Error | null; dialog: { connector: FuelConnector | null; + state: DialogState; isOpen: boolean; back: () => void; connect: (connector: FuelConnector) => void; + action: (connector: FuelConnector | null) => Promise; + retryConnect: () => Promise; }; }; +const DIALOG_DEFAULT_STATE = DialogState.INSTALL; + export const FuelConnectContext = createContext(null); export const useHasFuelConnectProvider = () => { @@ -79,51 +90,147 @@ export function FuelUIProvider({ children, theme, }: FuelUIProviderProps) { - const { fuel } = useFuel(); - const { isPending: isConnecting, isError, connect } = useConnect(); + const { + isPending: isConnecting, + data: isConnected, + isError, + connect, + connectAsync, + } = useConnect(); const { connectors, isLoading: isLoadingConnectors } = useConnectors({ query: { select: sortConnectors }, }); const [connector, setConnector] = useState(null); + const [dialogState, setDialogState] = + useState(DIALOG_DEFAULT_STATE); const [isOpen, setOpen] = useState(false); const [error, setError] = useState(null); - const handleCancel = () => { - setOpen(false); + const resetStates = useCallback(() => { + setDialogState(DIALOG_DEFAULT_STATE); setConnector(null); - }; + setError(null); + }, []); + + const handleCancel = useCallback(() => { + setOpen(false); + resetStates(); + }, [resetStates]); const handleConnect = () => { setOpen(true); }; - const handleBack = () => { - setConnector(null); - }; - useEffect(() => { - if (connector?.installed) { - handleBack(); + if (!isConnected) return; + handleCancel(); + }, [isConnected, handleCancel]); + + const handleRetryConnect = useCallback(async () => { + if (!connector) return; + try { + setError(null); + await connectAsync(connector.name); + } catch (err) { + onError(err as Error); } - }, [connector?.installed, handleBack]); + }, [connectAsync, connector]); + + const onError = useCallback((err: Error) => { + setDialogState(DialogState.ERROR); + setError(err); + }, []); + + const handleDialogAction = useCallback( + async (_connector: FuelConnector | null = connector) => { + if (!_connector) return; + + setDialogState((prev) => { + if (prev === DialogState.ERROR || prev === DialogState.INSTALLED) + return DialogState.CONNECTING; + if (prev === DialogState.CONNECTING && _connector?.installed) + return DialogState.INSTALLED; + if (prev === DialogState.INSTALL) return DialogState.CONNECTING; + + return prev; + }); + }, + [connector], + ); const handleSelectConnector = useCallback( - async (connector: FuelConnector) => { - if (!fuel) return setConnector(connector); + async (_connector: FuelConnector) => { + setError(null); + setConnector(_connector); + if (_connector.external) { + setOpen(false); + return; + } + if (_connector.installed) { + handleDialogAction(_connector); + } + }, + [handleDialogAction], + ); - if (connector.installed) { - handleCancel(); + // Handle connection + useEffect(() => { + if ( + (dialogState === DialogState.INSTALL || + dialogState === DialogState.CONNECTING) && + connector?.installed + ) { + connect(connector.name, { + onError, + onSuccess: (res) => { + if (res) { + setOpen(false); + return; + } + onError(new Error('Failed to connect')); + }, + }); + } + }, [connect, connector, dialogState, onError]); + + // Handle install + useEffect(() => { + let timeout: NodeJS.Timeout; + let depth = 0; + const shouldRetry = () => + dialogState === DialogState.CONNECTING && !connector?.installed; + if (shouldRetry()) { + waitForConnection(); + } + + async function waitForConnection() { + depth++; + timeout = setTimeout(async () => { + if (!connector || connector.connected) { + clearTimeout(timeout); + return; + } try { - await connect(connector.name); + await connector?.ping().catch(() => false); + + if (connector?.installed) { + handleDialogAction(connector); + } } catch (err) { - setError(err as Error); + onError(err as Error); + } finally { + if (depth > 60) { + onError(new Error('Failed to connect')); + } else if (shouldRetry()) { + clearTimeout(timeout); + timeout = setTimeout(waitForConnection, 1000); + } } - } else { - setConnector(connector); - } - }, - [fuel, connect, handleCancel], - ); + }, 1000); + } + + return () => clearTimeout(timeout); + }, [dialogState, connector, handleDialogAction, onError]); const isLoading = useMemo(() => { const hasLoadedConnectors = @@ -145,10 +252,13 @@ export function FuelUIProvider({ connect: handleConnect, cancel: handleCancel, dialog: { + state: dialogState, connector, isOpen, + action: handleDialogAction, connect: handleSelectConnector, - back: handleBack, + retryConnect: handleRetryConnect, + back: resetStates, }, }} > diff --git a/packages/react/src/ui/Connect/components/Connector/Connector.tsx b/packages/react/src/ui/Connect/components/Connector/Connector.tsx index 0e3e32a2..299ca32e 100644 --- a/packages/react/src/ui/Connect/components/Connector/Connector.tsx +++ b/packages/react/src/ui/Connect/components/Connector/Connector.tsx @@ -1,16 +1,22 @@ import type { FuelConnector } from 'fuels'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; -import { useConnectUI } from '../../../../providers/FuelUIProvider'; +import { + DialogState, + useConnectUI, +} from '../../../../providers/FuelUIProvider'; import { ConnectorIcon } from '../ConnectorIcon'; +import { Spinner } from '../Spinner/Spinner'; import { - ConnectorButton, ConnectorContent, ConnectorDescription, + ConnectorHelper, ConnectorImage, + ConnectorLinkButton, ConnectorTitle, } from './styles'; +import { getDialogLabels } from './utils'; type ConnectorProps = { theme?: string; @@ -20,29 +26,26 @@ type ConnectorProps = { export function Connector({ className, connector, theme }: ConnectorProps) { const { - install: { action, link, description }, + install: { action: actionText, link, description: _description }, } = connector.metadata; - const { - setError, - dialog: { connect }, + dialog: { state: dialogState, action }, + error, } = useConnectUI(); - const [isLoading, setLoading] = useState(!connector.installed); - - useEffect(() => { - const ping = async () => { - try { - await connector.ping(); - connector.installed = true; - connect(connector); - } catch (error) { - setLoading(false); - setError(error as Error); - } - }; + const actionTimeout = useRef(null); + const dialogLabels = useMemo( + () => getDialogLabels(dialogState, connector, error), + [dialogState, connector, error], + ); + const loading = dialogState === DialogState.CONNECTING; - ping(); - }, [connector, connect, setError]); + const handleClick = () => { + // This exist so that `href` doesn't get invalidated too soon + if (!loading) { + actionTimeout.current && clearTimeout(actionTimeout.current); + actionTimeout.current = setTimeout(() => action(connector)); + } + }; return (
@@ -55,15 +58,25 @@ export function Connector({ className, connector, theme }: ConnectorProps) { /> - {connector.name} - - {isLoading ? 'Loading...' : description} + {dialogLabels.title} + + {dialogLabels.description || _description} - {!isLoading && ( - - {action || 'Install'} - + + {loading && } + {!loading && (dialogLabels.buttonLabel || actionText)} + + {dialogState === DialogState.CONNECTING && !connector.installed && ( + + If you have installed and is not detected
try refreshing the + page. +
)}
); diff --git a/packages/react/src/ui/Connect/components/Connector/styles.tsx b/packages/react/src/ui/Connect/components/Connector/styles.tsx index 667f61e6..e85baa3a 100644 --- a/packages/react/src/ui/Connect/components/Connector/styles.tsx +++ b/packages/react/src/ui/Connect/components/Connector/styles.tsx @@ -8,10 +8,18 @@ export const ConnectorTitle = styled.h2` margin: 0 0 0.8em 0; `; -export const ConnectorDescription = styled.p` +export const ConnectorDescription = styled.p<{ isError: boolean }>` + font-weight: 400; text-align: center; margin: 0 1.2em; line-height: 1.2em; + padding: 0 2em; + opacity: ${({ isError }) => (isError ? 0.8 : 1)}; + color: ${({ isError }) => (isError ? 'var(--fuel-color-error)' : 'inherit')}; +`; + +export const ConnectorDescriptionError = styled(ConnectorDescription)` + color: var(--fuel-color-error); `; export const ConnectorImage = styled.div` @@ -19,14 +27,15 @@ export const ConnectorImage = styled.div` justify-content: center; height: 6.2em; width: 100%; - margin-top: 1.4em; + margin-top: 1.6em; margin-bottom: 1.2em; `; -export const ConnectorButton = styled.a` +export const ConnectorLinkButton = styled.a` display: flex; box-sizing: border-box; text-decoration: none; + cursor: pointer; justify-content: center; align-items: center; margin: 1.4em 1em 0; @@ -49,3 +58,13 @@ export const ConnectorContent = styled.div` display: flex; flex-direction: column; `; + +export const ConnectorHelper = styled.p` + font-size: 0.8em; + font-weight: 400; + text-align: center; + margin: 0.6em 1.2em; + line-height: 1.2em; + padding: 0 2em; + opacity: 0.5; +`; diff --git a/packages/react/src/ui/Connect/components/Connector/utils.ts b/packages/react/src/ui/Connect/components/Connector/utils.ts new file mode 100644 index 00000000..58ee4188 --- /dev/null +++ b/packages/react/src/ui/Connect/components/Connector/utils.ts @@ -0,0 +1,64 @@ +import type { FuelConnector } from 'fuels'; +import { DialogState } from '../../../../providers/FuelUIProvider'; + +interface DialogLabelData { + title: string; + description?: string; + buttonLabel?: string; +} + +function getButtonLabel(dialogState: DialogState) { + switch (dialogState) { + case DialogState.INSTALL: + return 'Install'; + case DialogState.INSTALLED: + return 'Connect'; + case DialogState.ERROR: + return 'Retry'; + default: + return undefined; + } +} + +function getTitle(dialogState: DialogState, connector: FuelConnector) { + switch (dialogState) { + case DialogState.ERROR: + case DialogState.CONNECTING: + return connector.name; + case DialogState.INSTALLED: + return `${connector.name} is Installed!`; + case DialogState.INSTALL: + return `Don't have ${connector.name}?`; + default: + return connector.name; + } +} + +function getDescription( + dialogState: DialogState, + connector: FuelConnector, + error: Error | null, +) { + switch (dialogState) { + case DialogState.CONNECTING: + return `Connecting to ${connector.name}`; + case DialogState.INSTALL: + return 'Install now by clicking the link bellow and return here to connect it!'; + case DialogState.INSTALLED: + return `Click on the button bellow to connect your wallet to ${window.location.origin}`; + case DialogState.ERROR: + return error?.message || 'Connection failed.'; + default: + return undefined; + } +} + +export const getDialogLabels: ( + state: DialogState, + connector: FuelConnector, + error: Error | null, +) => DialogLabelData = (state, connector, error) => ({ + title: getTitle(state, connector), + description: getDescription(state, connector, error), + buttonLabel: getButtonLabel(state), +}); diff --git a/packages/react/src/ui/Connect/components/Connectors/Connectors.tsx b/packages/react/src/ui/Connect/components/Connectors/Connectors.tsx index 9f41c3ac..af82ce61 100644 --- a/packages/react/src/ui/Connect/components/Connectors/Connectors.tsx +++ b/packages/react/src/ui/Connect/components/Connectors/Connectors.tsx @@ -11,7 +11,7 @@ export function Connectors() { connectors, isLoading, theme, - dialog: { connect }, + dialog: { connect: selectConnector }, } = useConnectUI(); return ( @@ -25,7 +25,7 @@ export function Connectors() { data-connected={connector.connected} onClick={(e) => { e.preventDefault(); - connect(connector); + selectConnector(connector); }} > ` + height: ${({ size }) => size}px; + width: ${({ size }) => size}px; + border: 4px solid rgba(0, 0, 0, 0.1); + border-top-color: ${({ color }) => color}; + border-radius: 50%; + animation: ${spinAnimation} 1s infinite linear; +`; diff --git a/packages/react/src/ui/Connect/index.tsx b/packages/react/src/ui/Connect/index.tsx index c487c4b9..29f821cf 100644 --- a/packages/react/src/ui/Connect/index.tsx +++ b/packages/react/src/ui/Connect/index.tsx @@ -18,6 +18,15 @@ import { import { getThemeVariables } from './themes'; import './index.css'; +import type { FuelConnector } from 'fuels'; + +const ConnectRoutes = ({ + connector, + theme, +}: { connector?: FuelConnector | null; theme: string }) => { + if (!connector) return ; + return ; +}; export function Connect() { // Fix hydration problem between nextjs render and frontend render @@ -60,11 +69,7 @@ export function Connect() { - {connector ? ( - - ) : ( - - )} + diff --git a/packages/react/src/ui/Connect/styles.tsx b/packages/react/src/ui/Connect/styles.tsx index d262a0ba..fc9ab19e 100644 --- a/packages/react/src/ui/Connect/styles.tsx +++ b/packages/react/src/ui/Connect/styles.tsx @@ -157,7 +157,7 @@ export const FuelRoot = styled.div` width: 100%; margin: 0; padding: 0; - z-index: 9999; + z-index: 99; font-size: var(--fuel-font-size); & * { diff --git a/packages/react/src/ui/Connect/themes.tsx b/packages/react/src/ui/Connect/themes.tsx index fe71f527..984ab428 100644 --- a/packages/react/src/ui/Connect/themes.tsx +++ b/packages/react/src/ui/Connect/themes.tsx @@ -10,6 +10,7 @@ const commonTheme = { '--fuel-items-gap': '8px', /* Border */ '--fuel-border': '1px solid var(--fuel-border-color)', + '--fuel-color-error': '#f25a68', }; const lightTheme = { diff --git a/packages/solana-connector/package.json b/packages/solana-connector/package.json index dd3c57ef..9783abd9 100644 --- a/packages/solana-connector/package.json +++ b/packages/solana-connector/package.json @@ -24,7 +24,7 @@ "peerDependencies": { "@web3modal/core": ">=5.0.0", "@web3modal/scaffold": ">=5.0.0", - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "@ethereumjs/util": "9.0.3", @@ -39,7 +39,7 @@ "@fuel-connectors/common": "workspace:*", "@types/memoizee": "0.4.11", "@web3modal/core": "5.0.0", - "fuels": "0.94.6", + "fuels": "pr-3201", "jsdom": "24.0.0", "ts-loader": "9.5.1", "ts-node": "10.9.2", diff --git a/packages/walletconnect-connector/package.json b/packages/walletconnect-connector/package.json index c9c2b2a3..086dd61d 100644 --- a/packages/walletconnect-connector/package.json +++ b/packages/walletconnect-connector/package.json @@ -22,7 +22,7 @@ "peerDependencies": { "@web3modal/core": ">=5.0.0", "@web3modal/scaffold": ">=5.0.0", - "fuels": ">=0.94.6" + "fuels": ">=pr-3201" }, "dependencies": { "@ethereumjs/util": "9.0.3", @@ -37,7 +37,7 @@ "@fuel-connectors/evm-predicates": "workspace:*", "@types/memoizee": "0.4.11", "@web3modal/core": "5.0.0", - "fuels": "0.94.6", + "fuels": "pr-3201", "jsdom": "24.0.0", "ts-loader": "9.5.1", "ts-node": "10.9.2", diff --git a/packages/walletconnect-connector/src/WalletConnectConnector.ts b/packages/walletconnect-connector/src/WalletConnectConnector.ts index 914aaec1..8d9b339f 100644 --- a/packages/walletconnect-connector/src/WalletConnectConnector.ts +++ b/packages/walletconnect-connector/src/WalletConnectConnector.ts @@ -1,4 +1,10 @@ -import { hexToBytes } from '@ethereumjs/util'; +import { + ecrecover, + fromRpcSig, + hashPersonalMessage, + hexToBytes, + pubToAddress, +} from '@ethereumjs/util'; import { hexlify, splitSignature } from '@ethersproject/bytes'; import { type Config, @@ -13,6 +19,8 @@ import { type ConnectorMetadata, FuelConnectorEventTypes, Provider as FuelProvider, + LocalStorage, + type StorageAbstract, type TransactionRequestLike, } from 'fuels'; @@ -29,7 +37,12 @@ import { } from '@fuel-connectors/common'; import { PREDICATE_VERSIONS } from '@fuel-connectors/evm-predicates'; import { ApiController } from '@web3modal/core'; -import { ETHEREUM_ICON, TESTNET_URL } from './constants'; +import { + ETHEREUM_ICON, + SINGATURE_VALIDATION_TIMEOUT, + TESTNET_URL, + WINDOW, +} from './constants'; import type { WalletConnectConfig } from './types'; import { createWagmiConfig, createWeb3ModalInstance } from './web3Modal'; @@ -48,11 +61,13 @@ export class WalletConnectConnector extends PredicateConnector { private fuelProvider!: FuelProvider; private web3Modal!: Web3Modal; + private storage: StorageAbstract; private config: WalletConnectConfig = {} as WalletConnectConfig; constructor(config: WalletConnectConfig) { super(); - + this.storage = + config.storage || new LocalStorage(WINDOW?.localStorage as Storage); const wagmiConfig = config?.wagmiConfig ?? createWagmiConfig(); this.customPredicate = config.predicateConfig || null; this.configProviders({ ...config, wagmiConfig }); @@ -65,7 +80,10 @@ export class WalletConnectConnector extends PredicateConnector { await this.config?.fuelProvider; await this.requireConnection(); - await this.handleConnect(getAccount(wagmiConfig)); + await this.handleConnect( + getAccount(wagmiConfig), + await this.getAccountAddress(), + ); } // createModal re-instanciates the modal to update singletons from web3modal @@ -85,15 +103,16 @@ export class WalletConnectConnector extends PredicateConnector { private async handleConnect( account: NonNullable>, + defaultAccount: string | null = null, ) { - if (!account?.address) { - return; - } + const address = defaultAccount ?? (account?.address as string); + if (!(await this.accountHasValidation(address))) return; + if (!address) return; await this.setupPredicate(); this.emit(this.events.connection, true); this.emit( this.events.currentAccount, - this.predicateAccount?.getPredicateAddress(account.address), + this.predicateAccount?.getPredicateAddress(address), ); this.emit( this.events.accounts, @@ -143,24 +162,29 @@ export class WalletConnectConnector extends PredicateConnector { }); } - protected walletAccounts(): Promise> { - return new Promise((resolve) => { - resolve(this.getAccountAddresses() as Array); - }); + protected async walletAccounts(): Promise> { + return Promise.resolve((await this.getAccountAddresses()) as Array); } - protected getAccountAddress(): Maybe { + protected async getAccountAddress(): Promise> { const wagmiConfig = this.getWagmiConfig(); if (!wagmiConfig) return null; - - return getAccount(wagmiConfig).address; + const addresses = await this.getAccountAddresses(); + if (!addresses) return null; + const address = addresses[0]; + if (!address) return null; + if (!(await this.accountHasValidation(address))) return null; + return address; } - protected getAccountAddresses(): Maybe { + protected async getAccountAddresses(): Promise> { const wagmiConfig = this.getWagmiConfig(); if (!wagmiConfig) return null; - - return getAccount(wagmiConfig).addresses; + const addresses = getAccount(wagmiConfig).addresses || []; + const accountsValidations = await this.getAccountValidations( + addresses as `0x${string}`[], + ); + return addresses.filter((_, i) => accountsValidations[i]); } protected async requireConnection() { @@ -197,18 +221,25 @@ export class WalletConnectConnector extends PredicateConnector { public async connect(): Promise { this.createModal(); - return new Promise((resolve) => { + const result = await new Promise((resolve, reject) => { this.web3Modal.open(); const wagmiConfig = this.getWagmiConfig(); const unsub = this.web3Modal.subscribeEvents(async (event) => { + const requestValidations = () => { + this.requestValidations() + .then(() => resolve(true)) + .catch((err) => reject(err)) + .finally(() => unsub()); + }; + switch (event.data.event) { case 'MODAL_OPEN': if (wagmiConfig) { const account = getAccount(wagmiConfig); if (account?.isConnected) { - this.web3Modal.close(); - resolve(true); unsub(); + this.web3Modal.close(); + requestValidations(); break; } } @@ -216,12 +247,18 @@ export class WalletConnectConnector extends PredicateConnector { this.createModal(); break; case 'CONNECT_SUCCESS': { - resolve(true); - unsub(); + requestValidations(); break; } case 'MODAL_CLOSE': case 'CONNECT_ERROR': { + if (wagmiConfig) { + const account = getAccount(wagmiConfig); + if (account) { + requestValidations(); + break; + } + } resolve(false); unsub(); break; @@ -229,17 +266,83 @@ export class WalletConnectConnector extends PredicateConnector { } }); }); + return result; + } + + private async getAccountValidations( + accounts: `0x${string}`[] | string[], + ): Promise { + return Promise.all( + accounts.map(async (a) => { + const isValidated = await this.storage.getItem( + `SIGNATURE_VALIDATION_${a}`, + ); + return isValidated === 'true'; + }), + ); + } + + private async accountHasValidation( + account: `0x${string}` | string | undefined, + ) { + if (!account) return false; + const [hasValidate] = await this.getAccountValidations([account]); + return hasValidate; + } + + async requestValidations() { + const wagmiConfig = this.getWagmiConfig(); + if (!wagmiConfig) { + throw new Error('Wagmi config not found'); + } + const account = getAccount(wagmiConfig); + const { addresses } = account; + for (const address of addresses || []) { + await this.requestValidation(address) + .then(() => { + this.handleConnect(account); + }) + .catch((err) => { + this.disconnect(); + throw err; + }); + } + } + + async requestValidation(address?: string) { + return new Promise(async (resolve, reject) => { + // Disconnect if user dosen't provide signature in time + const validationTimeout = setTimeout(() => { + reject( + new Error("User didn't provide signature in less than 1 minute"), + ); + }, SINGATURE_VALIDATION_TIMEOUT); + const { ethProvider } = await this.getProviders(); + + if (!ethProvider) return; + + this.signAndValidate(ethProvider, address) + .then(() => { + clearTimeout(validationTimeout); + this.storage.setItem(`SIGNATURE_VALIDATION_${address}`, 'true'); + resolve(true); + }) + .catch((err) => { + clearTimeout(validationTimeout); + reject(err); + }); + }); } public async disconnect(): Promise { const wagmiConfig = this.getWagmiConfig(); if (!wagmiConfig) throw new Error('Wagmi config not found'); - const { connector, isConnected } = getAccount(wagmiConfig); + const { addresses, connector, isConnected } = getAccount(wagmiConfig); await disconnect(wagmiConfig, { connector, }); - + addresses?.map((a) => this.storage.removeItem(`SIGNATURE_VALIDATION_${a}`)); return isConnected || false; } @@ -275,4 +378,59 @@ export class WalletConnectConnector extends PredicateConnector { return response.submit.id; } + + private validateSignature( + account: string, + message: string, + signature: string, + ) { + const msgBuffer = Uint8Array.from(Buffer.from(message)); + const msgHash = hashPersonalMessage(msgBuffer); + const { v, r, s } = fromRpcSig(signature); + const pubKey = ecrecover(msgHash, v, r, s); + const recoveredAddress = Buffer.from(pubToAddress(pubKey)).toString('hex'); + + // The recovered address doesn't have the 0x prefix + return recoveredAddress.toLowerCase() === account.toLowerCase().slice(2); + } + + private async signAndValidate( + ethProvider: EIP1193Provider | undefined, + account?: string, + ) { + try { + if (!ethProvider) { + throw new Error('No Ethereum provider found'); + } + if (account && !account.startsWith('0x')) { + throw new Error('Invalid account address'); + } + const currentAccount = + account || + ( + (await ethProvider.request({ + method: 'eth_requestAccounts', + })) as string[] + )[0]; + + if (!currentAccount) { + throw new Error('No Ethereum account selected'); + } + + const message = `Sign this message to verify the connected account: ${currentAccount}`; + const signature = (await ethProvider.request({ + method: 'personal_sign', + params: [message, currentAccount], + })) as string; + + if (!this.validateSignature(currentAccount, message, signature)) { + throw new Error('Signature address validation failed'); + } + + return true; + } catch (error) { + this.disconnect(); + throw error; + } + } } diff --git a/packages/walletconnect-connector/src/constants.ts b/packages/walletconnect-connector/src/constants.ts index 5ba5b0fe..db25b66b 100644 --- a/packages/walletconnect-connector/src/constants.ts +++ b/packages/walletconnect-connector/src/constants.ts @@ -2,3 +2,9 @@ export const DEFAULT_PROJECT_ID = '00000000000000000000000000000000'; export const ETHEREUM_ICON = 'data:image/svg+xml;utf8;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yNTMgMzM1LjEyMkwyNTUuODg2IDMzOEwzODggMjU5Ljk4N0wyNTUuODg2IDQxTDI1MyA1MC43OTgzVjMzNS4xMjJaIiBmaWxsPSIjMzQzNDM0Ii8+CjxwYXRoIGQ9Ik0yNTYgMzM4VjQxTDEyNCAyNTkuOTg2TDI1NiAzMzhaIiBmaWxsPSIjOEM4QzhDIi8+CjxwYXRoIGQ9Ik0yNTQgNDY1LjI4MUwyNTUuNjI4IDQ3MEwzODggMjg1TDI1NS42MjkgMzYyLjU2M0wyNTQuMDAxIDM2NC41MzJMMjU0IDQ2NS4yODFaIiBmaWxsPSIjM0MzQzNCIi8+CjxwYXRoIGQ9Ik0xMjQgMjg1TDI1NiA0NzBWMzYyLjU2MkwxMjQgMjg1WiIgZmlsbD0iIzhDOEM4QyIvPgo8cGF0aCBkPSJNMjU2IDIwMFYzMzhMMzg4IDI1OS45ODhMMjU2IDIwMFoiIGZpbGw9IiMxNDE0MTQiLz4KPHBhdGggZD0iTTI1NiAyMDBMMTI0IDI1OS45ODhMMjU2IDMzOFYyMDBaIiBmaWxsPSIjMzkzOTM5Ii8+Cjwvc3ZnPgo='; export const TESTNET_URL = 'https://testnet.fuel.network/v1/graphql'; + +// 1 minute timeout for request signature +export const SINGATURE_VALIDATION_TIMEOUT = 1000 * 60; + +const HAS_WINDOW = typeof window !== 'undefined'; +export const WINDOW = HAS_WINDOW ? window : null; diff --git a/packages/walletconnect-connector/src/types.ts b/packages/walletconnect-connector/src/types.ts index 335e1909..f149a3a0 100644 --- a/packages/walletconnect-connector/src/types.ts +++ b/packages/walletconnect-connector/src/types.ts @@ -1,10 +1,11 @@ import type { PredicateConfig } from '@fuel-connectors/common'; import type { Config as WagmiConfig } from '@wagmi/core'; -import type { Provider as FuelProvider } from 'fuels'; +import type { Provider as FuelProvider, StorageAbstract } from 'fuels'; export type WalletConnectConfig = { fuelProvider?: FuelProvider | Promise; projectId?: string; wagmiConfig?: WagmiConfig; predicateConfig?: PredicateConfig; + storage?: StorageAbstract; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcd219fa..4e027e5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: version: 0.20.0(tsup@8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.11))(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5))(typescript@5.4.5)) '@vitest/coverage-v8': specifier: 2.0.2 - version: 2.0.2(vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0)) + version: 2.0.2(vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0)) compare-versions: specifier: 6.1.0 version: 6.1.0 @@ -50,7 +50,7 @@ importers: version: 2.0.11 vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) examples/react-app: dependencies: @@ -76,8 +76,8 @@ importers: specifier: 2.1.1 version: 2.1.1 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 react: specifier: 18.3.1 version: 18.3.1 @@ -128,8 +128,8 @@ importers: specifier: 5.1.7 version: 5.1.7(@types/react@18.3.1)(@wagmi/core@2.13.4(@tanstack/query-core@5.35.1)(@types/react@18.3.1)(react@18.3.1)(typescript@5.4.5)(viem@2.20.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.8)(react-dom@18.3.1(react@18.3.1))(react-native@0.75.0(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.1)(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@5.0.10))(react@18.3.1)(rollup@4.20.0)(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.22.4))(zod@3.22.4) fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 next: specifier: 14.2.3 version: 14.2.3(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -166,8 +166,8 @@ importers: version: 4.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) devDependencies: fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 tsup: specifier: 8.0.2 version: 8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.11))(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.2))(typescript@5.4.2) @@ -181,8 +181,8 @@ importers: packages/burner-wallet-connector: devDependencies: fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 jsdom: specifier: 24.0.0 version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -200,7 +200,7 @@ importers: version: 3.9.1(@types/node@20.12.11)(rollup@4.20.0)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) packages/common: dependencies: @@ -227,8 +227,8 @@ importers: specifier: 0.4.11 version: 0.4.11 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 terser: specifier: 5.31.0 version: 5.31.0 @@ -240,7 +240,7 @@ importers: version: 5.4.5 vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) packages/connectors: dependencies: @@ -303,8 +303,8 @@ importers: specifier: workspace:* version: link:../walletconnect-connector fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 terser: specifier: 5.31.0 version: 5.31.0 @@ -324,8 +324,8 @@ importers: specifier: 0.93.0 version: 0.93.0 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 typedoc-plugin-markdown: specifier: ^3.15.3 version: 3.17.1(typedoc@0.25.13(typescript@5.4.5)) @@ -386,8 +386,8 @@ importers: specifier: 0.4.11 version: 0.4.11 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 jsdom: specifier: 24.0.0 version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -420,7 +420,7 @@ importers: version: 4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) packages/evm-predicates: devDependencies: @@ -428,8 +428,8 @@ importers: specifier: workspace:* version: link:../common fuels: - specifier: 0.94.4 - version: 0.94.4 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 tsx: specifier: 4.9.3 version: 4.9.3 @@ -443,8 +443,8 @@ importers: specifier: workspace:* version: link:../fuel-wallet fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 tsup: specifier: 8.0.2 version: 8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.11))(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5))(typescript@5.4.5) @@ -468,8 +468,8 @@ importers: specifier: 3.3.0 version: 3.3.0 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 tsup: specifier: 8.0.2 version: 8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.11))(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5))(typescript@5.4.5) @@ -489,8 +489,8 @@ importers: specifier: workspace:* version: link:../fuel-wallet fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 tsup: specifier: 8.0.2 version: 8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.11))(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5))(typescript@5.4.5) @@ -523,8 +523,8 @@ importers: specifier: 6.1.0 version: 6.1.0 fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 react: specifier: 18.3.1 version: 18.3.1 @@ -578,8 +578,8 @@ importers: specifier: 5.0.0 version: 5.0.0(@types/react@18.3.1)(react@18.3.1) fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 jsdom: specifier: 24.0.0 version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -606,7 +606,7 @@ importers: version: 3.9.1(@types/node@20.12.11)(rollup@4.20.0)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) packages/walletconnect-connector: dependencies: @@ -645,8 +645,8 @@ importers: specifier: 5.0.0 version: 5.0.0(@types/react@18.3.1)(react@18.3.1) fuels: - specifier: 0.94.6 - version: 0.94.6 + specifier: pr-3201 + version: 0.0.0-pr-3201-20240922225832 jsdom: specifier: 24.0.0 version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -673,7 +673,7 @@ importers: version: 3.9.1(@types/node@20.12.11)(rollup@4.20.0)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: 2.0.2 - version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + version: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) packages: @@ -1629,12 +1629,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.22.0': - resolution: {integrity: sha512-uvQR2crZ/zgzSHDvdygHyNI+ze9zwS8mqz0YtGXotSqvEE0UkYE9s+FZKQNTt1VtT719mfP3vHrUdCpxBNQZhQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.23.0': resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} engines: {node: '>=18'} @@ -1665,12 +1659,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.22.0': - resolution: {integrity: sha512-UKhPb3o2gAB/bfXcl58ZXTn1q2oVu1rEu/bKrCtmm+Nj5MKUbrOwR5WAixE2v+lk0amWuwPvhnPpBRLIGiq7ig==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.23.0': resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} engines: {node: '>=18'} @@ -1701,12 +1689,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.22.0': - resolution: {integrity: sha512-PBnyP+r8vJE4ifxsWys9l+Mc2UY/yYZOpX82eoyGISXXb3dRr0M21v+s4fgRKWMFPMSf/iyowqPW/u7ScSUkjQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.23.0': resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} engines: {node: '>=18'} @@ -1737,12 +1719,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.22.0': - resolution: {integrity: sha512-IjTYtvIrjhR41Ijy2dDPgYjQHWG/x/A4KXYbs1fiU3efpRdoxMChK3oEZV6GPzVEzJqxFgcuBaiX1kwEvWUxSw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.23.0': resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} engines: {node: '>=18'} @@ -1773,12 +1749,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.22.0': - resolution: {integrity: sha512-mqt+Go4y9wRvEz81bhKd9RpHsQR1LwU8Xm6jZRUV/xpM7cIQFbFH6wBCLPTNsdELBvfoHeumud7X78jQQJv2TA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.23.0': resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} engines: {node: '>=18'} @@ -1809,12 +1779,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.22.0': - resolution: {integrity: sha512-vTaTQ9OgYc3VTaWtOE5pSuDT6H3d/qSRFRfSBbnxFfzAvYoB3pqKXA0LEbi/oT8GUOEAutspfRMqPj2ezdFaMw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.23.0': resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} engines: {node: '>=18'} @@ -1845,12 +1809,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.22.0': - resolution: {integrity: sha512-0e1ZgoobJzaGnR4reD7I9rYZ7ttqdh1KPvJWnquUoDJhL0rYwdneeLailBzd2/4g/U5p4e5TIHEWa68NF2hFpQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.23.0': resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} engines: {node: '>=18'} @@ -1881,12 +1839,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.22.0': - resolution: {integrity: sha512-BFgyYwlCwRWyPQJtkzqq2p6pJbiiWgp0P9PNf7a5FQ1itKY4czPuOMAlFVItirSmEpRPCeImuwePNScZS0pL5Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.23.0': resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} engines: {node: '>=18'} @@ -1917,12 +1869,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.22.0': - resolution: {integrity: sha512-V/K2rctCUgC0PCXpN7AqT4hoazXKgIYugFGu/myk2+pfe6jTW2guz/TBwq4cZ7ESqusR/IzkcQaBkcjquuBWsw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.23.0': resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} engines: {node: '>=18'} @@ -1953,12 +1899,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.22.0': - resolution: {integrity: sha512-KEMWiA9aGuPUD4BH5yjlhElLgaRXe+Eri6gKBoDazoPBTo1BXc/e6IW5FcJO9DoL19FBeCxgONyh95hLDNepIg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.23.0': resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} engines: {node: '>=18'} @@ -1989,12 +1929,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.22.0': - resolution: {integrity: sha512-r2ZZqkOMOrpUhzNwxI7uLAHIDwkfeqmTnrv1cjpL/rjllPWszgqmprd/om9oviKXUBpMqHbXmppvjAYgISb26Q==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.23.0': resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} engines: {node: '>=18'} @@ -2025,12 +1959,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.22.0': - resolution: {integrity: sha512-qaowLrV/YOMAL2RfKQ4C/VaDzAuLDuylM2sd/LH+4OFirMl6CuDpRlCq4u49ZBaVV8pkI/Y+hTdiibvQRhojCA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.23.0': resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} engines: {node: '>=18'} @@ -2061,12 +1989,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.22.0': - resolution: {integrity: sha512-hgrezzjQTRxjkQ5k08J6rtZN5PNnkWx/Rz6Kmj9gnsdCAX1I4Dn4ZPqvFRkXo55Q3pnVQJBwbdtrTO7tMGtyVA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.23.0': resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} engines: {node: '>=18'} @@ -2097,12 +2019,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.22.0': - resolution: {integrity: sha512-ewxg6FLLUio883XgSjfULEmDl3VPv/TYNnRprVAS3QeGFLdCYdx1tIudBcd7n9jIdk82v1Ajov4jx87qW7h9+g==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.23.0': resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} engines: {node: '>=18'} @@ -2133,12 +2049,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.22.0': - resolution: {integrity: sha512-Az5XbgSJC2lE8XK8pdcutsf9RgdafWdTpUK/+6uaDdfkviw/B4JCwAfh1qVeRWwOohwdsl4ywZrWBNWxwrPLFg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.23.0': resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} engines: {node: '>=18'} @@ -2169,12 +2079,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.22.0': - resolution: {integrity: sha512-8j4a2ChT9+V34NNNY9c/gMldutaJFmfMacTPq4KfNKwv2fitBCLYjee7c+Vxaha2nUhPK7cXcZpJtJ3+Y7ZdVQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.23.0': resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} engines: {node: '>=18'} @@ -2205,12 +2109,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.22.0': - resolution: {integrity: sha512-JUQyOnpbAkkRFOk/AhsEemz5TfWN4FJZxVObUlnlNCbe7QBl61ZNfM4cwBXayQA6laMJMUcqLHaYQHAB6YQ95Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.23.0': resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} engines: {node: '>=18'} @@ -2241,12 +2139,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.22.0': - resolution: {integrity: sha512-11PoCoHXo4HFNbLsXuMB6bpMPWGDiw7xETji6COdJss4SQZLvcgNoeSqWtATRm10Jj1uEHiaIk4N0PiN6x4Fcg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} engines: {node: '>=18'} @@ -2259,12 +2151,6 @@ packages: 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.0': resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} engines: {node: '>=18'} @@ -2295,12 +2181,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.22.0': - resolution: {integrity: sha512-ufjdW5tFJGUjlH9j/5cCE9lrwRffyZh+T4vYvoDKoYsC6IXbwaFeV/ENxeNXcxotF0P8CDzoICXVSbJaGBhkrw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.23.0': resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} engines: {node: '>=18'} @@ -2331,12 +2211,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.22.0': - resolution: {integrity: sha512-zY6ly/AoSmKnmNTowDJsK5ehra153/5ZhqxNLfq9NRsTTltetr+yHHcQ4RW7QDqw4JC8A1uC1YmeSfK9NRcK1w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.23.0': resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} engines: {node: '>=18'} @@ -2367,12 +2241,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.22.0': - resolution: {integrity: sha512-Kml5F7tv/1Maam0pbbCrvkk9vj046dPej30kFzlhXnhuCtYYBP6FGy/cLbc5yUT1lkZznGLf2OvuvmLjscO5rw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.23.0': resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} engines: {node: '>=18'} @@ -2403,12 +2271,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.22.0': - resolution: {integrity: sha512-IOgwn+mYTM3RrcydP4Og5IpXh+ftN8oF+HELTXSmbWBlujuci4Qa3DTeO+LEErceisI7KUSfEIiX+WOUlpELkw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.23.0': resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} engines: {node: '>=18'} @@ -2439,12 +2301,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.22.0': - resolution: {integrity: sha512-4bDHJrk2WHBXJPhy1y80X7/5b5iZTZP3LGcKIlAP1J+KqZ4zQAPMLEzftGyjjfcKbA4JDlPt/+2R/F1ZTeRgrw==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.23.0': resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} engines: {node: '>=18'} @@ -2491,147 +2347,81 @@ packages: '@ethersproject/sha2@5.7.0': resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - '@fuel-ts/abi-coder@0.94.4': - resolution: {integrity: sha512-JvOWCa0/iMOlo+TOCE9vMjqMEyh/R9I3tgdlSj6TJ2Ik6O4ECyFAR0Idm5llvPolTWTQ80ObPYD793pphMpaBw==} + '@fuel-ts/abi-coder@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-6V9WCB1hTeOCCz5LZtv13aX0gnAGq19kJbqYKebxTwMx9FbAMKLBFcQ53WyZS8br8S+zLW9n6h4FLKvJfGfXkw==} 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==} + '@fuel-ts/abi-typegen@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-OyXXH2G15iZROIdnTGBeAwJkjRBSSBpvNi+8T+Oppty4cuK2ufn2tIWVvyZQ6Kum5hTNlJbnnSif3DsvHQqn5Q==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true - '@fuel-ts/account@0.94.4': - 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==} + '@fuel-ts/account@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-rTO1ibq4NqyfiNGCf6kOpJxGZ4K68sBVzzbIAgQxZ0SWxjVmT5Hxxt8UjPrEs8dZkpVC5OwEl3NcfJA9l/ahvw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/address@0.94.4': - resolution: {integrity: sha512-nLvNiFmroEmp/Lu/MFLa3za1iRXeW3XG/wGa75Hn/BU5GnN2MSh62cwQ1sqIuWRnaYaMNkqhlmBZrIm0/zX5bQ==} + '@fuel-ts/address@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-DZBVpozWeshm8fsOU+NDVaiRxje8wLiN9uXjt5VV94eTuU36O4D+U/H4wIbjJj3lE+0cwIMuGrfMvZ4cocEaWA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/address@0.94.6': - resolution: {integrity: sha512-4P5vAHBX+aYbKdvKQtpI+irkA2OmZrSC4Kqu023KiEzMX1SwSEoXDVb97utDXVIGWOxZm4sSyCGMUhJkZYPLcg==} + '@fuel-ts/contract@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-daA2dt10EzMLuS7jawR/+UF0iEMOD0oZK41oKP54ruA6i2pFZ8MS+bnY1Cy0C+LJACw/5LRarf3mWLVYkJqexg==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/contract@0.94.4': - resolution: {integrity: sha512-bR7MDkZSt0XW5Kacw5Le+TgVBCyMnHdu4LnRWnftEM0H98BRqYiQmi+7nbnSpJHHNKGdBiYI71igmdumdeBxqw==} + '@fuel-ts/crypto@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-nbjEkUhdrcA+z7k7WB98yhqpH6cTaVb02mbWpakj5W6UaWFqqA6I873UuGmgvcPvwOItk4xTqvauSvKWow26GA==} 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.94.4': - 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==} + '@fuel-ts/errors@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-XZkwlYrW51LFrfKCkP52AgU0BhxCGVgsnWIynx1LlaAQdfe7pr8AbrgAL9B96ErueW4O3I49n2H0IOc1wYMPpA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} '@fuel-ts/errors@0.93.0': resolution: {integrity: sha512-izR2qVKA1XlB3FDmpFZFF5CSCknC3InouuulF/dbX1mEsGMkYAcCykDezBc32JgyiVM0vXfs5bTHpICoeg3dQg==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/errors@0.94.4': - 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.94.4': - 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.94.4': - 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.94.4': - 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==} + '@fuel-ts/hasher@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-LK1VpdzGlke2wUDRaxqnNVwPARYZAIjRCRnB0wTBq7xV+mvZ4Of8VBuBr6xZlVjJ5KXVbS91rWgU62Xz7grSLw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/merkle@0.94.4': - resolution: {integrity: sha512-8xfmjLwj/peWFNsGzW4NiJtpspPoLSrLiTXUpgyvkzIMAVfIpMnFPp0U1YU4tPNXCywRwKKYl9OYEkzLXM2MPw==} + '@fuel-ts/interfaces@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-tSBk/RXHADgFc6ZS5fH8O7hR2Bb2g3+yn41gLMY8hUZ7Vh5uzGsmYc2sY458XrLp4JcP2rCB+Q+RhKDM8dRDMA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/merkle@0.94.6': - resolution: {integrity: sha512-Fh+WYEo+XbuErueWhP0Y9telf4LJPQNqIS46TqPL6r95cfLVgawATTc8LjbaJPaEjxl2ET7WGlAVWIK1kdeIjQ==} + '@fuel-ts/math@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-ibD1GBbYg4tish1mqgCI/ertVznc6oK2S6hISYFh558X9ykTxspQDtc/AOBEi+WTzywnzK2E9QIwNXm+OfAR5Q==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/program@0.94.4': - resolution: {integrity: sha512-T2JqQyX3kXK8IhLws/tZjqYNtjWpurMNyMeScDwPd54QNs/LCseEKFWQMKuPq1Y3PQqf+FJ3oRc7AWBqKk7gHw==} + '@fuel-ts/merkle@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-oJ9N0akwYKl4GKx+SJ7lpbOWE6j4MJao2If6BFhZbXlYrl3wssteHmPMpOJG659eS9JL6RUjUwQqHeut9D7jRA==} 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==} + '@fuel-ts/program@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-jIX+guY8FLvkbbjv4QqkFu26wkkHMXf6TPcjSp7+1h825WWBA7QtWjPAjsExA+8Js6NBvMUgP6GeIi7gc5JQDA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/script@0.94.4': - resolution: {integrity: sha512-dtoTAfiisb+HeCUo9c6pmc1kfmBWoMm64z2Xnfj6yhyNRGRL81mEOeNlpT/Ee57xprww9eMUlRqU9ulPYEeJXg==} + '@fuel-ts/script@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-a7CvIIen8It5HaauMlixgKmU92BhdHS1LT/JjMz773jZoSwmTiBafEEn/Msz9CLls2gtKWTxQRDmpE7I6Td4nA==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/script@0.94.6': - resolution: {integrity: sha512-5zbpc2tUD7F4/kQysve2bRGA90UHZqxt9WsuxFw4AZ56jFXQ6K2nQR5WUNeuExxONwl5vml80+7Km503vwF4Qw==} + '@fuel-ts/transactions@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-uoxYZ1tPpHIUaNkbF6cfjBcjgw5JU2gDfEh6zf8QHzyIUzcuMo9jTnKBYnAwNHTA7nNAIdxxxxTYnAj6IkVa7w==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - '@fuel-ts/transactions@0.94.4': - resolution: {integrity: sha512-vDBnopMIaJTv6Q8EMayaC/FTB5BwLYVoySHCjgPCo6mafvBZNDzR5gRP1T03IDFdtJm8wefQGd6tGYjncinvEw==} + '@fuel-ts/utils@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-h/ArS0CMatJPHmV26Ln1WHvXXKhVEhnKcRf33i429H2B8A5lLb2cf6plqrDzNjdDTEJvcZ3qLoRh4Nxj1rlr/w==} 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.94.4': - 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==} + '@fuel-ts/versions@0.0.0-pr-3201-20240922225832': + resolution: {integrity: sha512-zQMLcXN6FN5zu0no4C+10jbI7s6u50RCPV2WaJdciVTYb08KDSZ+MGcbW73lAL+1T/sCwETY95TN9mvWD8FtKw==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} + hasBin: true '@fuel-ts/versions@0.93.0': resolution: {integrity: sha512-3215zKyFxe2yPT25noagYBdfqLdYRNuCyH0+1waL87TDLcTIywdaNRLZ9G4CZMuTGv40CBKN5kv+tymXzs4o6g==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true - '@fuel-ts/versions@0.94.4': - resolution: {integrity: sha512-k/e33mqWbPYdKa3lUBi9p5maFHwjkVvMBzrqfi1L4/8hmE++xSDhr+Fp9RyerILNWM03GAb7cOM7Ke6GabhaPA==} - 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/ts-config@0.20.0': resolution: {integrity: sha512-wFPifVVz2z/YXuYJ/qLFRKIAVq98ZtrrX9TlcKuL5E4ar32VGLRFTtoujEwFVcWRWmdkxA9ulcCiV3fEojdqlQ==} peerDependencies: @@ -3794,8 +3584,8 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/bn.js@5.1.5': - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + '@types/bn.js@5.1.6': + resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -5381,11 +5171,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.22.0: - resolution: {integrity: sha512-zNYA6bFZsVnsU481FnGAQjLDW0Pl/8BGG7EvAp15RzUvGC+ME7hf1q7LvIfStEQBz/iEHuBJCYcOwPmNCf1Tlw==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.23.0: resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} engines: {node: '>=18'} @@ -5642,13 +5427,8 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - fuels@0.94.4: - resolution: {integrity: sha512-g+pfrTKiuS1jWg7jDN2DxTAwcnZmiIuCdct0CjK9n/16XCz4TUsEczvU9VOn/5m7lx712RHP1FXYHpaLPj6ivQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - hasBin: true - - fuels@0.94.6: - resolution: {integrity: sha512-mQVvFiLaRHALi7vHQWkn3ZYynYsbQT4rFDZrPhMrJ7shH7OmWTXEX64SBh4nVEqPh5B3IyH+EWG/EzW5Wd+MwA==} + fuels@0.0.0-pr-3201-20240922225832: + resolution: {integrity: sha512-pwqZiHXOhESx1ua7OBHNi4urkldnOUQ5Egvt37BRjnEQEG/9EGmqk7ZQxprnqf3slv9RoIa+x39DJdDqIlOwIQ==} engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} hasBin: true @@ -10245,9 +10025,6 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.22.0': - optional: true - '@esbuild/aix-ppc64@0.23.0': optional: true @@ -10263,9 +10040,6 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.22.0': - optional: true - '@esbuild/android-arm64@0.23.0': optional: true @@ -10281,9 +10055,6 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.22.0': - optional: true - '@esbuild/android-arm@0.23.0': optional: true @@ -10299,9 +10070,6 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.22.0': - optional: true - '@esbuild/android-x64@0.23.0': optional: true @@ -10317,9 +10085,6 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.22.0': - optional: true - '@esbuild/darwin-arm64@0.23.0': optional: true @@ -10335,9 +10100,6 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.22.0': - optional: true - '@esbuild/darwin-x64@0.23.0': optional: true @@ -10353,9 +10115,6 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.22.0': - optional: true - '@esbuild/freebsd-arm64@0.23.0': optional: true @@ -10371,9 +10130,6 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.22.0': - optional: true - '@esbuild/freebsd-x64@0.23.0': optional: true @@ -10389,9 +10145,6 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.22.0': - optional: true - '@esbuild/linux-arm64@0.23.0': optional: true @@ -10407,9 +10160,6 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.22.0': - optional: true - '@esbuild/linux-arm@0.23.0': optional: true @@ -10425,9 +10175,6 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.22.0': - optional: true - '@esbuild/linux-ia32@0.23.0': optional: true @@ -10443,9 +10190,6 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.22.0': - optional: true - '@esbuild/linux-loong64@0.23.0': optional: true @@ -10461,9 +10205,6 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.22.0': - optional: true - '@esbuild/linux-mips64el@0.23.0': optional: true @@ -10479,9 +10220,6 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.22.0': - optional: true - '@esbuild/linux-ppc64@0.23.0': optional: true @@ -10497,9 +10235,6 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.22.0': - optional: true - '@esbuild/linux-riscv64@0.23.0': optional: true @@ -10515,9 +10250,6 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.22.0': - optional: true - '@esbuild/linux-s390x@0.23.0': optional: true @@ -10533,9 +10265,6 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.22.0': - optional: true - '@esbuild/linux-x64@0.23.0': optional: true @@ -10551,18 +10280,12 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.22.0': - optional: true - '@esbuild/netbsd-x64@0.23.0': optional: true '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.22.0': - optional: true - '@esbuild/openbsd-arm64@0.23.0': optional: true @@ -10578,9 +10301,6 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.22.0': - optional: true - '@esbuild/openbsd-x64@0.23.0': optional: true @@ -10596,9 +10316,6 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.22.0': - optional: true - '@esbuild/sunos-x64@0.23.0': optional: true @@ -10614,9 +10331,6 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.22.0': - optional: true - '@esbuild/win32-arm64@0.23.0': optional: true @@ -10632,9 +10346,6 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.22.0': - optional: true - '@esbuild/win32-ia32@0.23.0': optional: true @@ -10650,9 +10361,6 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.22.0': - optional: true - '@esbuild/win32-x64@0.23.0': optional: true @@ -10698,45 +10406,22 @@ snapshots: '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - '@fuel-ts/abi-coder@0.94.4': + '@fuel-ts/abi-coder@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/hasher': 0.94.6 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/utils': 0.94.4 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 type-fest: 4.26.1 - '@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 - '@fuel-ts/interfaces': 0.94.6 - '@fuel-ts/utils': 0.94.4 - '@fuel-ts/versions': 0.94.4 - commander: 12.1.0 - glob: 10.4.5 - handlebars: 4.7.8 - mkdirp: 1.0.4 - ramda: 0.30.1 - rimraf: 5.0.10 - - '@fuel-ts/abi-typegen@0.94.6': + '@fuel-ts/abi-typegen@0.0.0-pr-3201-20240922225832': 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 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/versions': 0.0.0-pr-3201-20240922225832 commander: 12.1.0 glob: 10.4.5 handlebars: 4.7.8 @@ -10744,19 +10429,19 @@ snapshots: ramda: 0.30.1 rimraf: 5.0.10 - '@fuel-ts/account@0.94.4': - dependencies: - '@fuel-ts/abi-coder': 0.94.4 - '@fuel-ts/address': 0.94.4 - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/hasher': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/merkle': 0.94.4 - '@fuel-ts/transactions': 0.94.4 - '@fuel-ts/utils': 0.94.4 - '@fuel-ts/versions': 0.94.4 + '@fuel-ts/account@0.0.0-pr-3201-20240922225832': + dependencies: + '@fuel-ts/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/address': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/merkle': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/transactions': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/versions': 0.0.0-pr-3201-20240922225832 '@fuels/vm-asm': 0.56.0 '@noble/curves': 1.6.0 events: 3.3.0 @@ -10769,266 +10454,126 @@ 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.9.0 - graphql-request: 5.0.0(graphql@16.9.0) - graphql-tag: 2.12.6(graphql@16.9.0) - portfinder: 1.0.32 - ramda: 0.30.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@fuel-ts/address@0.94.4': + '@fuel-ts/address@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/utils': 0.94.6 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 '@noble/hashes': 1.5.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 - '@fuel-ts/account': 0.94.4 - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/hasher': 0.94.4 - '@fuel-ts/interfaces': 0.94.6 - '@fuel-ts/math': 0.94.6 - '@fuel-ts/merkle': 0.94.4 - '@fuel-ts/program': 0.94.4 - '@fuel-ts/transactions': 0.94.4 - '@fuel-ts/utils': 0.94.4 - '@fuel-ts/versions': 0.94.4 + '@fuel-ts/contract@0.0.0-pr-3201-20240922225832': + dependencies: + '@fuel-ts/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/account': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/merkle': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/program': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/transactions': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/versions': 0.0.0-pr-3201-20240922225832 '@fuels/vm-asm': 0.56.0 ramda: 0.30.1 transitivePeerDependencies: - 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.94.4': + '@fuel-ts/crypto@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/utils': 0.94.6 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 '@noble/hashes': 1.5.0 - '@fuel-ts/crypto@0.94.6': + '@fuel-ts/errors@0.0.0-pr-3201-20240922225832': 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/versions': 0.0.0-pr-3201-20240922225832 '@fuel-ts/errors@0.93.0': dependencies: '@fuel-ts/versions': 0.93.0 - '@fuel-ts/errors@0.94.4': - dependencies: - '@fuel-ts/versions': 0.94.4 - - '@fuel-ts/errors@0.94.6': - dependencies: - '@fuel-ts/versions': 0.94.6 - - '@fuel-ts/hasher@0.94.4': + '@fuel-ts/hasher@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/interfaces': 0.94.6 - '@fuel-ts/utils': 0.94.4 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 '@noble/hashes': 1.5.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.94.4': {} + '@fuel-ts/interfaces@0.0.0-pr-3201-20240922225832': {} - '@fuel-ts/interfaces@0.94.6': {} - - '@fuel-ts/math@0.94.4': + '@fuel-ts/math@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/errors': 0.94.4 - '@types/bn.js': 5.1.5 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@types/bn.js': 5.1.6 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.94.4': - dependencies: - '@fuel-ts/hasher': 0.94.6 - '@fuel-ts/math': 0.94.4 - - '@fuel-ts/merkle@0.94.6': + '@fuel-ts/merkle@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/hasher': 0.94.6 - '@fuel-ts/math': 0.94.6 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 - '@fuel-ts/program@0.94.4': + '@fuel-ts/program@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/abi-coder': 0.94.4 - '@fuel-ts/account': 0.94.4 - '@fuel-ts/address': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/transactions': 0.94.4 - '@fuel-ts/utils': 0.94.4 + '@fuel-ts/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/account': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/address': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/transactions': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 '@fuels/vm-asm': 0.56.0 ramda: 0.30.1 transitivePeerDependencies: - 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 - '@fuel-ts/account': 0.94.4 - '@fuel-ts/address': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/program': 0.94.4 - '@fuel-ts/transactions': 0.94.4 - '@fuel-ts/utils': 0.94.4 - transitivePeerDependencies: - - 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 + '@fuel-ts/script@0.0.0-pr-3201-20240922225832': + dependencies: + '@fuel-ts/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/account': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/address': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/program': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/transactions': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 transitivePeerDependencies: - encoding - supports-color - '@fuel-ts/transactions@0.94.4': - dependencies: - '@fuel-ts/abi-coder': 0.94.4 - '@fuel-ts/address': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/hasher': 0.94.6 - '@fuel-ts/interfaces': 0.94.6 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/utils': 0.94.4 - - '@fuel-ts/transactions@0.94.6': + '@fuel-ts/transactions@0.0.0-pr-3201-20240922225832': 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/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/address': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 - '@fuel-ts/utils@0.94.4': + '@fuel-ts/utils@0.0.0-pr-3201-20240922225832': dependencies: - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/versions': 0.94.4 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/versions': 0.0.0-pr-3201-20240922225832 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.93.0': + '@fuel-ts/versions@0.0.0-pr-3201-20240922225832': dependencies: chalk: 4.1.2 cli-table: 0.3.11 - '@fuel-ts/versions@0.94.4': - dependencies: - chalk: 4.1.2 - cli-table: 0.3.11 - - '@fuel-ts/versions@0.94.6': + '@fuel-ts/versions@0.93.0': dependencies: chalk: 4.1.2 cli-table: 0.3.11 @@ -12583,7 +12128,7 @@ snapshots: dependencies: '@babel/types': 7.25.2 - '@types/bn.js@5.1.5': + '@types/bn.js@5.1.6': dependencies: '@types/node': 20.12.11 @@ -12722,7 +12267,7 @@ snapshots: vite: 5.4.0(@types/node@20.12.11)(terser@5.31.0) vue: 3.4.37(typescript@5.4.5) - '@vitest/coverage-v8@2.0.2(vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0))': + '@vitest/coverage-v8@2.0.2(vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -12737,7 +12282,7 @@ snapshots: strip-literal: 2.1.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0) + vitest: 2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0) transitivePeerDependencies: - supports-color @@ -14499,11 +14044,6 @@ snapshots: esbuild: 0.19.12 load-tsconfig: 0.2.5 - bundle-require@5.0.0(esbuild@0.22.0): - dependencies: - esbuild: 0.22.0 - load-tsconfig: 0.2.5 - bundle-require@5.0.0(esbuild@0.23.1): dependencies: esbuild: 0.23.1 @@ -15252,33 +14792,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.22.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.22.0 - '@esbuild/android-arm': 0.22.0 - '@esbuild/android-arm64': 0.22.0 - '@esbuild/android-x64': 0.22.0 - '@esbuild/darwin-arm64': 0.22.0 - '@esbuild/darwin-x64': 0.22.0 - '@esbuild/freebsd-arm64': 0.22.0 - '@esbuild/freebsd-x64': 0.22.0 - '@esbuild/linux-arm': 0.22.0 - '@esbuild/linux-arm64': 0.22.0 - '@esbuild/linux-ia32': 0.22.0 - '@esbuild/linux-loong64': 0.22.0 - '@esbuild/linux-mips64el': 0.22.0 - '@esbuild/linux-ppc64': 0.22.0 - '@esbuild/linux-riscv64': 0.22.0 - '@esbuild/linux-s390x': 0.22.0 - '@esbuild/linux-x64': 0.22.0 - '@esbuild/netbsd-x64': 0.22.0 - '@esbuild/openbsd-arm64': 0.22.0 - '@esbuild/openbsd-x64': 0.22.0 - '@esbuild/sunos-x64': 0.22.0 - '@esbuild/win32-arm64': 0.22.0 - '@esbuild/win32-ia32': 0.22.0 - '@esbuild/win32-x64': 0.22.0 - esbuild@0.23.0: optionalDependencies: '@esbuild/aix-ppc64': 0.23.0 @@ -15600,59 +15113,24 @@ snapshots: fsevents@2.3.3: optional: true - fuels@0.94.4: - dependencies: - '@fuel-ts/abi-coder': 0.94.4 - '@fuel-ts/abi-typegen': 0.94.4 - '@fuel-ts/account': 0.94.4 - '@fuel-ts/address': 0.94.4 - '@fuel-ts/contract': 0.94.4 - '@fuel-ts/crypto': 0.94.4 - '@fuel-ts/errors': 0.94.4 - '@fuel-ts/hasher': 0.94.4 - '@fuel-ts/interfaces': 0.94.4 - '@fuel-ts/math': 0.94.4 - '@fuel-ts/merkle': 0.94.4 - '@fuel-ts/program': 0.94.4 - '@fuel-ts/script': 0.94.4 - '@fuel-ts/transactions': 0.94.4 - '@fuel-ts/utils': 0.94.4 - '@fuel-ts/versions': 0.94.4 - bundle-require: 5.0.0(esbuild@0.22.0) - chalk: 4.1.2 - chokidar: 3.6.0 - commander: 12.1.0 - esbuild: 0.22.0 - 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 - - 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 + fuels@0.0.0-pr-3201-20240922225832: + dependencies: + '@fuel-ts/abi-coder': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/abi-typegen': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/account': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/address': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/contract': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/crypto': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/errors': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/hasher': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/interfaces': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/math': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/merkle': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/program': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/script': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/transactions': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/utils': 0.0.0-pr-3201-20240922225832 + '@fuel-ts/versions': 0.0.0-pr-3201-20240922225832 bundle-require: 5.0.0(esbuild@0.23.1) chalk: 4.1.2 chokidar: 3.6.0 @@ -18918,7 +18396,7 @@ snapshots: - typescript - universal-cookie - vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0)(terser@5.31.0): + vitest@2.0.2(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.31.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.2