tenderly-wizard-v6
Version:
A tool for managing virtual testnets using Tenderly
88 lines (85 loc) • 3.18 kB
text/typescript
import { ChainId } from "zodiac-roles-sdk";
import {
ROLES_V2_MASTER_COPY_ADDR,
SAFE_MODULE_PROXY_FACTORY_ADDR,
MULTISEND_ADDR,
DEFAULT_FALLBACK_HANDLER_ADDRESS,
DEFAULT_UNWRAPPER_ADDR,
MULTISEND_SELECTOR,
SAFE_MASTER_COPY_V1_ADDR,
SAFE_PROXY_FACTORY_ADDR,
BASE_ROLES_V2_MASTER_COPY_ADDR,
BASE_SAFE_MODULE_PROXY_FACTORY_ADDR,
BASE_MULTISEND_ADDR,
BASE_DEFAULT_FALLBACK_HANDLER_ADDRESS,
BASE_DEFAULT_UNWRAPPER_ADDR,
BASE_MULTISEND_SELECTOR,
BASE_SAFE_MASTER_COPY_ADDR,
BASE_SAFE_PROXY_FACTORY_ADDR,
SAFE_MODULE_PROXY_FACTORY_V1_ADDR,
DEFAULT_FALLBACK_HANDLER_V1_ADDR,
MULTISEND_V1_ADDR,
ROLES_V1_MASTER_COPY_ADDR,
SAFE_MASTER_COPY_ADDR,
SAFE_PROXY_FACTORY_V1_ADDR,
} from "./constants";
import { ChainConfig, RolesVersion } from "./types";
const chainConfigs: Partial<Record<ChainId, ChainConfig>> = {
[1]: {
v1: {
ROLES_MASTER_COPY_ADDR: ROLES_V1_MASTER_COPY_ADDR,
SAFE_MODULE_PROXY_FACTORY_ADDR: SAFE_MODULE_PROXY_FACTORY_V1_ADDR,
MULTISEND_ADDR: MULTISEND_V1_ADDR,
DEFAULT_FALLBACK_HANDLER_ADDRESS: DEFAULT_FALLBACK_HANDLER_V1_ADDR,
DEFAULT_UNWRAPPER_ADDR: DEFAULT_UNWRAPPER_ADDR,
MULTISEND_SELECTOR: MULTISEND_SELECTOR,
SAFE_MASTER_COPY_ADDR: SAFE_MASTER_COPY_V1_ADDR,
SAFE_PROXY_FACTORY_ADDR: SAFE_PROXY_FACTORY_V1_ADDR,
},
v2: {
ROLES_MASTER_COPY_ADDR: ROLES_V2_MASTER_COPY_ADDR,
SAFE_MODULE_PROXY_FACTORY_ADDR: SAFE_MODULE_PROXY_FACTORY_ADDR,
MULTISEND_ADDR: MULTISEND_ADDR,
DEFAULT_FALLBACK_HANDLER_ADDRESS: DEFAULT_FALLBACK_HANDLER_ADDRESS,
DEFAULT_UNWRAPPER_ADDR: DEFAULT_UNWRAPPER_ADDR,
MULTISEND_SELECTOR: MULTISEND_SELECTOR,
SAFE_MASTER_COPY_ADDR: SAFE_MASTER_COPY_ADDR,
SAFE_PROXY_FACTORY_ADDR: SAFE_PROXY_FACTORY_ADDR,
},
},
[8453]: {
v1: {
ROLES_MASTER_COPY_ADDR: ROLES_V1_MASTER_COPY_ADDR,
SAFE_MODULE_PROXY_FACTORY_ADDR: SAFE_MODULE_PROXY_FACTORY_V1_ADDR,
MULTISEND_ADDR: MULTISEND_V1_ADDR,
DEFAULT_FALLBACK_HANDLER_ADDRESS: DEFAULT_FALLBACK_HANDLER_V1_ADDR,
DEFAULT_UNWRAPPER_ADDR: DEFAULT_UNWRAPPER_ADDR,
MULTISEND_SELECTOR: MULTISEND_SELECTOR,
SAFE_MASTER_COPY_ADDR: SAFE_MASTER_COPY_V1_ADDR,
SAFE_PROXY_FACTORY_ADDR: SAFE_PROXY_FACTORY_V1_ADDR,
},
v2: {
ROLES_MASTER_COPY_ADDR: BASE_ROLES_V2_MASTER_COPY_ADDR,
SAFE_MODULE_PROXY_FACTORY_ADDR: BASE_SAFE_MODULE_PROXY_FACTORY_ADDR,
MULTISEND_ADDR: BASE_MULTISEND_ADDR,
DEFAULT_FALLBACK_HANDLER_ADDRESS: BASE_DEFAULT_FALLBACK_HANDLER_ADDRESS,
DEFAULT_UNWRAPPER_ADDR: BASE_DEFAULT_UNWRAPPER_ADDR,
MULTISEND_SELECTOR: BASE_MULTISEND_SELECTOR,
SAFE_MASTER_COPY_ADDR: BASE_SAFE_MASTER_COPY_ADDR,
SAFE_PROXY_FACTORY_ADDR: BASE_SAFE_PROXY_FACTORY_ADDR,
},
},
// @note Add configurations for other chains here
};
export function getChainConfig(
chainId: ChainId,
rolesVersion: RolesVersion
): ChainConfig[RolesVersion] {
const config = chainConfigs[chainId]?.[rolesVersion];
if (!config) {
throw new Error(
`No configuration found for chain ID ${chainId} and roles version ${rolesVersion}`
);
}
return config;
}