UNPKG

cosmic-interchain-cli

Version:

A command-line utility for Cosmic Wire's interchain messaging protocol

52 lines 2.19 kB
import { stringify as yamlStringify } from 'yaml'; import { CoreConfigSchema } from '@hyperlane-xyz/sdk'; import { errorRed, log, logBlue, logGreen } from '../logger.js'; import { indentYamlOrJson, readYamlOrJson, writeYamlOrJson, } from '../utils/files.js'; import { detectAndConfirmOrPrompt } from '../utils/input.js'; import { createHookConfig, createMerkleTreeConfig, createProtocolFeeConfig, } from './hooks.js'; import { createAdvancedIsmConfig, createTrustedRelayerConfig } from './ism.js'; export async function createCoreDeployConfig({ context, configFilePath, advanced = false, }) { logBlue('Creating a new core deployment config...'); const owner = await detectAndConfirmOrPrompt(async () => context.signer?.getAddress(), 'Enter the desired', 'owner address', 'signer'); const defaultIsm = advanced ? await createAdvancedIsmConfig(context) : await createTrustedRelayerConfig(context, advanced); let defaultHook, requiredHook; if (advanced) { defaultHook = await createHookConfig({ context, selectMessage: 'Select default hook type', advanced, }); requiredHook = await createHookConfig({ context, selectMessage: 'Select required hook type', advanced, }); } else { defaultHook = await createMerkleTreeConfig(); requiredHook = await createProtocolFeeConfig(context, advanced); } try { const coreConfig = CoreConfigSchema.parse({ owner, defaultIsm, defaultHook, requiredHook, }); logBlue(`Core config is valid, writing to file ${configFilePath}:\n`); log(indentYamlOrJson(yamlStringify(coreConfig, null, 2), 4)); writeYamlOrJson(configFilePath, coreConfig, 'yaml'); logGreen('✅ Successfully created new core deployment config.'); } catch (e) { errorRed(`Core deployment config is invalid.`); throw e; } } export async function readCoreDeployConfigs(filePath) { const config = readYamlOrJson(filePath); return CoreConfigSchema.parse(config); } //# sourceMappingURL=core.js.map