cosmic-interchain-cli
Version:
A command-line utility for Cosmic Wire's interchain messaging protocol
52 lines • 2.19 kB
JavaScript
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