1 | import {
|
2 | HARDHAT_NETWORK_RESET_EVENT,
|
3 | HARDHAT_NETWORK_REVERT_SNAPSHOT_EVENT,
|
4 | } from "hardhat/internal/constants";
|
5 | import { EthereumProvider } from "hardhat/types";
|
6 |
|
7 | import { EthersProviderWrapper } from "./ethers-provider-wrapper";
|
8 | import { createUpdatableTargetProxy } from "./updatable-target-proxy";
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | export function createProviderProxy(
|
18 | hardhatProvider: EthereumProvider
|
19 | ): EthersProviderWrapper {
|
20 | const initialProvider = new EthersProviderWrapper(hardhatProvider);
|
21 |
|
22 | const { proxy: providerProxy, setTarget } =
|
23 | createUpdatableTargetProxy(initialProvider);
|
24 |
|
25 | hardhatProvider.on(HARDHAT_NETWORK_RESET_EVENT, () => {
|
26 | setTarget(new EthersProviderWrapper(hardhatProvider));
|
27 | });
|
28 | hardhatProvider.on(HARDHAT_NETWORK_REVERT_SNAPSHOT_EVENT, () => {
|
29 | setTarget(new EthersProviderWrapper(hardhatProvider));
|
30 | });
|
31 |
|
32 | return providerProxy;
|
33 | }
|