@swapper-finance/sdk
Version:
JavaScript SDK form Swapper
50 lines (41 loc) • 1.15 kB
text/typescript
import { JsonRpcProvider, JsonRpcSigner } from "@ethersproject/providers";
import { useEffect, useMemo, useState } from "react";
import { useAccount } from "wagmi";
import { useEthersSigner } from "./clientToSigner";
import { DEFAULT_SOURCE_CHAIN_ID } from "@src/constants";
export interface Network {
networkName: string;
chainId: string;
address?: string;
}
export interface EvmNetwork extends Network {
provider?: JsonRpcProvider;
signer?: JsonRpcSigner;
}
export const useNetworks = (): {
networks: {
evm: EvmNetwork;
};
} => {
const [signer, setSigner] = useState<JsonRpcSigner>();
const ethersSigner = useEthersSigner();
useEffect(() => {
ethersSigner.then((signer) => setSigner(signer));
}, [ethersSigner]);
// Evm
const account = useAccount();
const evm = useMemo(
() => ({
networkName: "EVM",
chainId: account.chainId?.toString() || DEFAULT_SOURCE_CHAIN_ID,
address: account.address,
signer: signer,
provider: signer?.provider,
}),
[account.address, account.chainId, signer],
);
return {
networks: { evm },
};
};
export default useNetworks;