diff --git a/src/setup.ts b/src/setup.ts index 027e358..439d05c 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -1,11 +1,12 @@ import { JsonFragment } from "@ethersproject/abi"; import { MetaMaskProvider } from "./metamask"; +import { WalletConnectProvider } from "./wallet-connect"; import { Provider } from "./provider"; import { MockManager } from "./mock-manager"; import { ContractUtils } from "./contract-utils"; type SetupOptions = { - providerType: "MetaMask" | "default"; + providerType: "MetaMask" | "WalletConnect" | "default"; }; const defaultSetupOptions: SetupOptions = { @@ -16,11 +17,13 @@ export function setupEthTesting(options: SetupOptions = defaultSetupOptions) { const provider = options.providerType === "MetaMask" ? new MetaMaskProvider() + : options.providerType === "WalletConnect" + ? new WalletConnectProvider() : new Provider(); const mockManager = new MockManager(provider); - const mockChainId = (chainId: string) => { + const mockChainId = (chainId: string | number) => { mockManager.mockRequest("eth_chainId", chainId, { persistent: true }); }; const mockAccounts = (accounts: string[]) => { diff --git a/src/wallet-connect.ts b/src/wallet-connect.ts new file mode 100644 index 0000000..b4c897e --- /dev/null +++ b/src/wallet-connect.ts @@ -0,0 +1,15 @@ +import { Provider } from "./provider"; + +export class WalletConnectProvider extends Provider { + + async disconnect() { + return; + } + + async enable(): Promise { + return this.request({ + method: "eth_accounts", + params: [] + }) as Promise; + } +}