diff --git a/src/cmd/deploy.ts b/src/cmd/deploy.ts index 3d668e3..8fc8bd4 100644 --- a/src/cmd/deploy.ts +++ b/src/cmd/deploy.ts @@ -28,6 +28,7 @@ import { getNetworkClient, isDefenderId, removeDefenderIdReferences, + isForkedNetwork, } from '../utils'; import { DefenderAction, @@ -53,6 +54,7 @@ import { DefenderBlockMonitorResponse, Resources, DefenderForkedNetwork, + DefenderBlockWatcher, } from '../types'; import keccak256 from 'keccak256'; import { @@ -808,9 +810,16 @@ export default class DefenderDeploy { monitor.type = match.type; } - const blockwatchersForNetwork = (await client.listBlockwatchers()).filter( - (b) => b.network === monitor.network, - ); + let blockwatchersForNetwork: DefenderBlockWatcher[] = []; + + // Check if network is forked network + if (isForkedNetwork(monitor.network)) { + blockwatchersForNetwork = (await client.listTenantBlockwatchers()).filter( + (b) => b.network === monitor.network, + ); + } else { + blockwatchersForNetwork = (await client.listBlockwatchers()).filter((b) => b.network === monitor.network); + } const newMonitor = constructMonitor( this.serverless, @@ -895,9 +904,17 @@ export default class DefenderDeploy { }, // on create async (monitor: Monitor, stackResourceId: string) => { - const blockwatchersForNetwork = (await client.listBlockwatchers()).filter( - (b) => b.network === monitor.network, - ); + let blockwatchersForNetwork: DefenderBlockWatcher[] = []; + + // Check if network is forked network + if (isForkedNetwork(monitor.network)) { + blockwatchersForNetwork = (await client.listTenantBlockwatchers()).filter( + (b) => b.network === monitor.network, + ); + } else { + blockwatchersForNetwork = (await client.listBlockwatchers()).filter((b) => b.network === monitor.network); + } + const createdMonitor = await client.create( constructMonitor( this.serverless, diff --git a/src/utils/index.ts b/src/utils/index.ts index 548b63a..91ebce2 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -2,6 +2,7 @@ import Serverless from 'serverless'; import _ from 'lodash'; +import { ForkedNetwork, Network, isValidNetwork } from '@openzeppelin/defender-sdk-base-client'; import { ActionClient } from '@openzeppelin/defender-sdk-action-client'; import { MonitorClient } from '@openzeppelin/defender-sdk-monitor-client'; import { RelayClient } from '@openzeppelin/defender-sdk-relay-client'; @@ -534,3 +535,8 @@ export const removeDefenderIdReferences = (resources: { [k: string]: Y | Defe } return resources as { [k: string]: Y } | undefined; }; + +export const isForkedNetwork = (network?: Network): network is ForkedNetwork => { + if (!network) return false; + return !isValidNetwork(network); +};