@hyperlane-xyz/cli 4.0.0-alpha.2 → 4.0.0-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/src/avs/config.d.ts.map +1 -1
  2. package/dist/src/avs/config.js +6 -0
  3. package/dist/src/avs/config.js.map +1 -1
  4. package/dist/src/avs/stakeRegistry.d.ts +2 -2
  5. package/dist/src/avs/stakeRegistry.d.ts.map +1 -1
  6. package/dist/src/avs/stakeRegistry.js +3 -3
  7. package/dist/src/avs/stakeRegistry.js.map +1 -1
  8. package/dist/src/commands/avs.js +3 -3
  9. package/dist/src/commands/avs.js.map +1 -1
  10. package/dist/src/commands/config.d.ts.map +1 -1
  11. package/dist/src/commands/config.js +2 -23
  12. package/dist/src/commands/config.js.map +1 -1
  13. package/dist/src/commands/core.d.ts +1 -1
  14. package/dist/src/commands/core.d.ts.map +1 -1
  15. package/dist/src/commands/core.js +4 -4
  16. package/dist/src/commands/core.js.map +1 -1
  17. package/dist/src/commands/hook.d.ts +12 -0
  18. package/dist/src/commands/hook.d.ts.map +1 -0
  19. package/dist/src/commands/hook.js +36 -0
  20. package/dist/src/commands/hook.js.map +1 -0
  21. package/dist/src/commands/ism.d.ts +12 -0
  22. package/dist/src/commands/ism.d.ts.map +1 -0
  23. package/dist/src/commands/ism.js +38 -0
  24. package/dist/src/commands/ism.js.map +1 -0
  25. package/dist/src/commands/options.d.ts +4 -0
  26. package/dist/src/commands/options.d.ts.map +1 -1
  27. package/dist/src/commands/options.js +19 -2
  28. package/dist/src/commands/options.js.map +1 -1
  29. package/dist/src/commands/registry.d.ts.map +1 -1
  30. package/dist/src/commands/registry.js +41 -4
  31. package/dist/src/commands/registry.js.map +1 -1
  32. package/dist/src/commands/types.d.ts +3 -0
  33. package/dist/src/commands/types.d.ts.map +1 -0
  34. package/dist/src/commands/types.js +2 -0
  35. package/dist/src/commands/types.js.map +1 -0
  36. package/dist/src/commands/validator.d.ts.map +1 -1
  37. package/dist/src/commands/validator.js +47 -3
  38. package/dist/src/commands/validator.js.map +1 -1
  39. package/dist/src/commands/warp.d.ts +5 -4
  40. package/dist/src/commands/warp.d.ts.map +1 -1
  41. package/dist/src/commands/warp.js +58 -21
  42. package/dist/src/commands/warp.js.map +1 -1
  43. package/dist/src/config/agent.d.ts +7 -0
  44. package/dist/src/config/agent.d.ts.map +1 -0
  45. package/dist/src/config/agent.js +40 -0
  46. package/dist/src/config/agent.js.map +1 -0
  47. package/dist/src/config/chain.d.ts.map +1 -1
  48. package/dist/src/config/chain.js +98 -57
  49. package/dist/src/config/chain.js.map +1 -1
  50. package/dist/src/config/core.js +1 -1
  51. package/dist/src/config/core.js.map +1 -1
  52. package/dist/src/config/hooks.d.ts.map +1 -1
  53. package/dist/src/config/hooks.js +9 -6
  54. package/dist/src/config/hooks.js.map +1 -1
  55. package/dist/src/config/ism.d.ts.map +1 -1
  56. package/dist/src/config/ism.js +2 -1
  57. package/dist/src/config/ism.js.map +1 -1
  58. package/dist/src/config/warp.d.ts +1 -1
  59. package/dist/src/config/warp.d.ts.map +1 -1
  60. package/dist/src/config/warp.js +3 -2
  61. package/dist/src/config/warp.js.map +1 -1
  62. package/dist/src/deploy/core.d.ts.map +1 -1
  63. package/dist/src/deploy/core.js +5 -2
  64. package/dist/src/deploy/core.js.map +1 -1
  65. package/dist/src/deploy/utils.js +1 -1
  66. package/dist/src/deploy/utils.js.map +1 -1
  67. package/dist/src/deploy/warp.d.ts.map +1 -1
  68. package/dist/src/deploy/warp.js +5 -7
  69. package/dist/src/deploy/warp.js.map +1 -1
  70. package/dist/src/send/message.d.ts.map +1 -1
  71. package/dist/src/send/message.js +4 -2
  72. package/dist/src/send/message.js.map +1 -1
  73. package/dist/src/send/transfer.d.ts +4 -4
  74. package/dist/src/send/transfer.d.ts.map +1 -1
  75. package/dist/src/send/transfer.js +6 -8
  76. package/dist/src/send/transfer.js.map +1 -1
  77. package/dist/src/status/message.js +1 -1
  78. package/dist/src/status/message.js.map +1 -1
  79. package/dist/src/utils/chains.d.ts +0 -1
  80. package/dist/src/utils/chains.d.ts.map +1 -1
  81. package/dist/src/utils/chains.js +4 -20
  82. package/dist/src/utils/chains.js.map +1 -1
  83. package/dist/src/utils/cli-options.d.ts +9 -0
  84. package/dist/src/utils/cli-options.d.ts.map +1 -0
  85. package/dist/src/utils/cli-options.js +14 -0
  86. package/dist/src/utils/cli-options.js.map +1 -0
  87. package/dist/src/utils/input.d.ts +7 -0
  88. package/dist/src/utils/input.d.ts.map +1 -0
  89. package/dist/src/utils/input.js +37 -0
  90. package/dist/src/utils/input.js.map +1 -0
  91. package/dist/src/utils/tokens.d.ts +3 -1
  92. package/dist/src/utils/tokens.d.ts.map +1 -1
  93. package/dist/src/utils/tokens.js +26 -0
  94. package/dist/src/utils/tokens.js.map +1 -1
  95. package/dist/src/validator/address.d.ts.map +1 -1
  96. package/dist/src/validator/address.js.map +1 -1
  97. package/dist/src/validator/preFlightCheck.d.ts +4 -0
  98. package/dist/src/validator/preFlightCheck.d.ts.map +1 -0
  99. package/dist/src/validator/preFlightCheck.js +74 -0
  100. package/dist/src/validator/preFlightCheck.js.map +1 -0
  101. package/dist/src/version.d.ts +1 -1
  102. package/dist/src/version.d.ts.map +1 -1
  103. package/dist/src/version.js +1 -1
  104. package/dist/src/version.js.map +1 -1
  105. package/package.json +8 -5
@@ -1,11 +1,16 @@
1
- import { log } from '../logger.js';
1
+ import { ProtocolType, isValidAddressEvm, normalizeAddressEvm, } from '@hyperlane-xyz/utils';
2
+ import { errorRed, log } from '../logger.js';
2
3
  import { getValidatorAddress } from '../validator/address.js';
3
- import { awsAccessKeyCommandOption, awsBucketCommandOption, awsKeyIdCommandOption, awsRegionCommandOption, awsSecretKeyCommandOption, } from './options.js';
4
+ import { checkValidatorSetup } from '../validator/preFlightCheck.js';
5
+ import { awsAccessKeyCommandOption, awsBucketCommandOption, awsKeyIdCommandOption, awsRegionCommandOption, awsSecretKeyCommandOption, chainCommandOption, demandOption, validatorCommandOption, } from './options.js';
4
6
  // Parent command to help configure and set up Hyperlane validators
5
7
  export const validatorCommand = {
6
8
  command: 'validator',
7
9
  describe: 'Configure and manage Hyperlane validators',
8
- builder: (yargs) => yargs.command(addressCommand).demandCommand(),
10
+ builder: (yargs) => yargs
11
+ .command(addressCommand)
12
+ .command(preFlightCheckCommand)
13
+ .demandCommand(),
9
14
  handler: () => log('Command required'),
10
15
  };
11
16
  // If AWS access key needed for future validator commands, move to context
@@ -31,4 +36,43 @@ const addressCommand = {
31
36
  process.exit(0);
32
37
  },
33
38
  };
39
+ const preFlightCheckCommand = {
40
+ command: 'check',
41
+ describe: 'Check the validator has announced correctly for a given chain',
42
+ builder: {
43
+ chain: demandOption(chainCommandOption),
44
+ validators: validatorCommandOption,
45
+ },
46
+ handler: async ({ context, chain, validators }) => {
47
+ const { multiProvider } = context;
48
+ // validate chain
49
+ if (!multiProvider.hasChain(chain)) {
50
+ errorRed(`❌ No metadata found for ${chain}. Ensure it is included in your configured registry.`);
51
+ process.exit(1);
52
+ }
53
+ const chainMetadata = multiProvider.getChainMetadata(chain);
54
+ if (chainMetadata.protocol !== ProtocolType.Ethereum) {
55
+ errorRed(`\n❌ Validator pre flight check only supports EVM chains. Exiting.`);
56
+ process.exit(1);
57
+ }
58
+ // validate validators addresses
59
+ const validatorList = validators.split(',');
60
+ const invalidAddresses = new Set();
61
+ const validAddresses = new Set();
62
+ for (const address of validatorList) {
63
+ if (isValidAddressEvm(address)) {
64
+ validAddresses.add(normalizeAddressEvm(address));
65
+ }
66
+ else {
67
+ invalidAddresses.add(address);
68
+ }
69
+ }
70
+ if (invalidAddresses.size > 0) {
71
+ errorRed(`❌ Invalid addresses: ${Array.from(invalidAddresses).join(', ')}`);
72
+ process.exit(1);
73
+ }
74
+ await checkValidatorSetup(context, chain, validAddresses);
75
+ process.exit(0);
76
+ },
77
+ };
34
78
  //# sourceMappingURL=validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/commands/validator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,2CAA2C;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE;IACjE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;CACvC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,cAAc,GAMf;IACH,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,wDAAwD;IAClE,OAAO,EAAE;QACP,YAAY,EAAE,yBAAyB;QACvC,YAAY,EAAE,yBAAyB;QACvC,MAAM,EAAE,sBAAsB;QAC9B,MAAM,EAAE,sBAAsB;QAC9B,QAAQ,EAAE,qBAAqB;KAChC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1E,MAAM,mBAAmB,CAAC;YACxB,OAAO;YACP,SAAS;YACT,SAAS;YACT,MAAM;YACN,MAAM;YACN,KAAK;SACN,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/commands/validator.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,14 @@ export declare const deploy: CommandModuleWithWriteContext<{
9
9
  'dry-run': string;
10
10
  'from-address': string;
11
11
  }>;
12
- export declare const configure: CommandModuleWithContext<{
12
+ export declare const init: CommandModuleWithContext<{
13
13
  advanced: boolean;
14
14
  out: string;
15
15
  }>;
16
16
  export declare const read: CommandModuleWithContext<{
17
- chain: string;
18
- address: string;
19
- out: string;
17
+ chain?: string;
18
+ address?: string;
19
+ out?: string;
20
+ symbol?: string;
20
21
  }>;
21
22
  //# sourceMappingURL=warp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/commands/warp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAkB7B;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAazB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,6BAA6B,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,CAuBA,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAsBA,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,wBAAwB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb,CAmCA,CAAC"}
1
+ {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/commands/warp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAatC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAoB7B;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAazB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,6BAA6B,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,CAuBA,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAsBA,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,wBAAwB,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CA2DA,CAAC"}
@@ -1,12 +1,14 @@
1
1
  import { stringify as yamlStringify } from 'yaml';
2
- import { EvmERC20WarpRouteReader } from '@hyperlane-xyz/sdk';
3
- import { createWarpRouteDeployConfig } from '../config/warp.js';
2
+ import { EvmERC20WarpRouteReader, } from '@hyperlane-xyz/sdk';
3
+ import { objMap, promiseObjAll } from '@hyperlane-xyz/utils';
4
+ import { createWarpRouteDeployConfig, readWarpCoreConfig, } from '../config/warp.js';
4
5
  import { evaluateIfDryRunFailure } from '../deploy/dry-run.js';
5
6
  import { runWarpRouteDeploy } from '../deploy/warp.js';
6
- import { log, logGray, logGreen } from '../logger.js';
7
+ import { log, logGray, logGreen, logRed } from '../logger.js';
7
8
  import { sendTestTransfer } from '../send/transfer.js';
8
9
  import { indentYamlOrJson, writeYamlOrJson } from '../utils/files.js';
9
- import { addressCommandOption, chainCommandOption, dryRunCommandOption, fromAddressCommandOption, outputFileCommandOption, warpCoreConfigCommandOption, warpDeploymentConfigCommandOption, } from './options.js';
10
+ import { selectRegistryWarpRoute } from '../utils/tokens.js';
11
+ import { addressCommandOption, chainCommandOption, dryRunCommandOption, fromAddressCommandOption, outputFileCommandOption, symbolCommandOption, warpCoreConfigCommandOption, warpDeploymentConfigCommandOption, } from './options.js';
10
12
  import { messageOptions } from './send.js';
11
13
  /**
12
14
  * Parent command
@@ -15,8 +17,8 @@ export const warpCommand = {
15
17
  command: 'warp',
16
18
  describe: 'Manage Hyperlane warp routes',
17
19
  builder: (yargs) => yargs
18
- .command(configure)
19
20
  .command(deploy)
21
+ .command(init)
20
22
  .command(read)
21
23
  .command(send)
22
24
  .version(false)
@@ -47,8 +49,8 @@ export const deploy = {
47
49
  process.exit(0);
48
50
  },
49
51
  };
50
- export const configure = {
51
- command: 'configure',
52
+ export const init = {
53
+ command: 'init',
52
54
  describe: 'Create a warp route configuration.',
53
55
  builder: {
54
56
  advanced: {
@@ -71,29 +73,46 @@ export const configure = {
71
73
  };
72
74
  export const read = {
73
75
  command: 'read',
74
- describe: 'Reads the warp route config at the given path.',
76
+ describe: 'Derive the warp route config from onchain artifacts',
75
77
  builder: {
78
+ symbol: {
79
+ ...symbolCommandOption,
80
+ demandOption: false,
81
+ },
76
82
  chain: {
77
83
  ...chainCommandOption,
78
- demandOption: true,
84
+ demandOption: false,
79
85
  },
80
- address: addressCommandOption('Address of the router contract to read.', true),
86
+ address: addressCommandOption('Address of the router contract to read.', false),
81
87
  out: outputFileCommandOption(),
82
88
  },
83
- handler: async ({ context, chain, address, out }) => {
89
+ handler: async ({ context, chain, address, out, symbol }) => {
84
90
  logGray('Hyperlane Warp Reader');
85
91
  logGray('---------------------');
86
92
  const { multiProvider } = context;
87
- const evmERC20WarpRouteReader = new EvmERC20WarpRouteReader(multiProvider, chain);
88
- const warpRouteConfig = await evmERC20WarpRouteReader.deriveWarpRouteConfig(address);
93
+ let addresses;
94
+ if (symbol) {
95
+ const warpCoreConfig = await selectRegistryWarpRoute(context.registry, symbol);
96
+ addresses = Object.fromEntries(warpCoreConfig.tokens.map((t) => [t.chainName, t.addressOrDenom]));
97
+ }
98
+ else if (chain && address) {
99
+ addresses = {
100
+ [chain]: address,
101
+ };
102
+ }
103
+ else {
104
+ logGreen(`Please specify either a symbol or chain and address`);
105
+ process.exit(0);
106
+ }
107
+ const config = await promiseObjAll(objMap(addresses, async (chain, address) => new EvmERC20WarpRouteReader(multiProvider, chain).deriveWarpRouteConfig(address)));
89
108
  if (out) {
90
- writeYamlOrJson(out, warpRouteConfig, 'yaml');
109
+ writeYamlOrJson(out, config, 'yaml');
91
110
  logGreen(`✅ Warp route config written successfully to ${out}:\n`);
92
111
  }
93
112
  else {
94
113
  logGreen(`✅ Warp route config read successfully:\n`);
95
114
  }
96
- log(indentYamlOrJson(yamlStringify(warpRouteConfig, null, 2), 4));
115
+ log(indentYamlOrJson(yamlStringify(config, null, 2), 4));
97
116
  process.exit(0);
98
117
  },
99
118
  };
@@ -102,10 +121,17 @@ const send = {
102
121
  describe: 'Send a test token transfer on a warp route',
103
122
  builder: {
104
123
  ...messageOptions,
105
- warp: warpCoreConfigCommandOption,
106
- wei: {
124
+ symbol: {
125
+ ...symbolCommandOption,
126
+ demandOption: false,
127
+ },
128
+ warp: {
129
+ ...warpCoreConfigCommandOption,
130
+ demandOption: false,
131
+ },
132
+ amount: {
107
133
  type: 'string',
108
- description: 'Amount in wei to send',
134
+ description: 'Amount to send (in smallest unit)',
109
135
  default: 1,
110
136
  },
111
137
  recipient: {
@@ -113,13 +139,24 @@ const send = {
113
139
  description: 'Token recipient address (defaults to sender)',
114
140
  },
115
141
  },
116
- handler: async ({ context, origin, destination, timeout, quick, relay, warp, wei, recipient, }) => {
142
+ handler: async ({ context, origin, destination, timeout, quick, relay, symbol, warp, amount, recipient, }) => {
143
+ let warpCoreConfig;
144
+ if (symbol) {
145
+ warpCoreConfig = await selectRegistryWarpRoute(context.registry, symbol);
146
+ }
147
+ else if (warp) {
148
+ warpCoreConfig = readWarpCoreConfig(warp);
149
+ }
150
+ else {
151
+ logRed(`Please specify either a symbol or warp config`);
152
+ process.exit(0);
153
+ }
117
154
  await sendTestTransfer({
118
155
  context,
119
- warpConfigPath: warp,
156
+ warpCoreConfig,
120
157
  origin,
121
158
  destination,
122
- wei,
159
+ amount,
123
160
  recipient,
124
161
  timeoutSec: timeout,
125
162
  skipWaitForDelivery: quick,
@@ -1 +1 @@
1
- {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/commands/warp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/commands/warp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { CommandContext } from '../context/types.js';
2
+ export declare function createAgentConfig({ context, chains, out, }: {
3
+ context: CommandContext;
4
+ chains: string[];
5
+ out: string;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/config/agent.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,MAAM,EACN,GAAG,GACJ,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,iBAmDA"}
@@ -0,0 +1,40 @@
1
+ import { fromError } from 'zod-validation-error';
2
+ import { AgentConfigSchema, HyperlaneCore, buildAgentConfig, } from '@hyperlane-xyz/sdk';
3
+ import { objMap, promiseObjAll } from '@hyperlane-xyz/utils';
4
+ import { errorRed, logBlue, logGreen, logRed } from '../logger.js';
5
+ import { writeYamlOrJson } from '../utils/files.js';
6
+ export async function createAgentConfig({ context, chains, out, }) {
7
+ logBlue('\nCreating agent config...');
8
+ const { registry, multiProvider, chainMetadata } = context;
9
+ const addresses = await registry.getAddresses();
10
+ const core = HyperlaneCore.fromAddressesMap(addresses, multiProvider);
11
+ const startBlocks = await promiseObjAll(objMap(addresses, async (chain, _) => {
12
+ // If the index.from is specified in the chain metadata, use that.
13
+ const indexFrom = chainMetadata[chain].index?.from;
14
+ if (indexFrom !== undefined) {
15
+ return indexFrom;
16
+ }
17
+ const mailbox = core.getContracts(chain).mailbox;
18
+ try {
19
+ const deployedBlock = await mailbox.deployedBlock();
20
+ return deployedBlock.toNumber();
21
+ }
22
+ catch (err) {
23
+ logRed(`Failed to get deployed block to set an index for ${chain}, this is potentially an issue with rpc provider or a misconfiguration`);
24
+ process.exit(1);
25
+ }
26
+ }));
27
+ // @TODO: consider adding additional config used to pass in gas prices for Cosmos chains
28
+ const agentConfig = buildAgentConfig(chains, multiProvider, addresses, startBlocks);
29
+ try {
30
+ AgentConfigSchema.parse(agentConfig);
31
+ }
32
+ catch (e) {
33
+ errorRed(`Agent config is invalid, this is possibly due to required contracts not being deployed. See details below:\n${fromError(e).toString()}`);
34
+ process.exit(1);
35
+ }
36
+ logBlue(`Agent config is valid, writing to file ${out}`);
37
+ writeYamlOrJson(out, agentConfig, 'json');
38
+ logGreen(`✅ Agent config successfully written to ${out}`);
39
+ }
40
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/config/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EACL,iBAAiB,EAEjB,aAAa,EAEb,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,OAAO,EACP,MAAM,EACN,GAAG,GAKJ;IACC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAEtC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAEhD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,MAAM,aAAa,CACrC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,kEAAkE;QAClE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;QACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YACpD,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CACJ,oDAAoD,KAAK,wEAAwE,CAClI,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,wFAAwF;IACxF,MAAM,WAAW,GAAG,gBAAgB,CAClC,MAAM,EACN,aAAa,EACb,SAAmD,EACnD,WAAW,CACZ,CAAC;IAEF,IAAI,CAAC;QACH,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CACN,+GAA+G,SAAS,CACtH,CAAC,CACF,CAAC,QAAQ,EAAE,EAAE,CACf,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;IACzD,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,iBAuBhD;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;CACzB,iBA6GA"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,iBAuBhD;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;CACzB,iBA+DA"}
@@ -1,10 +1,11 @@
1
1
  import { confirm, input } from '@inquirer/prompts';
2
2
  import { ethers } from 'ethers';
3
+ import { stringify as yamlStringify } from 'yaml';
3
4
  import { ChainMetadataSchema, ZChainName, } from '@hyperlane-xyz/sdk';
4
5
  import { ProtocolType } from '@hyperlane-xyz/utils';
5
6
  import { errorRed, log, logBlue, logGreen } from '../logger.js';
6
- import { detectAndConfirmOrPrompt } from '../utils/chains.js';
7
- import { readYamlOrJson } from '../utils/files.js';
7
+ import { indentYamlOrJson, readYamlOrJson } from '../utils/files.js';
8
+ import { detectAndConfirmOrPrompt } from '../utils/input.js';
8
9
  export function readChainConfigs(filePath) {
9
10
  log(`Reading file configs in ${filePath}`);
10
11
  const chainMetadata = readYamlOrJson(filePath);
@@ -34,82 +35,122 @@ export async function createChainConfig({ context, }) {
34
35
  message: 'Enter chain name (one word, lower case)',
35
36
  validate: (chainName) => ZChainName.safeParse(chainName).success,
36
37
  });
38
+ const displayName = await input({
39
+ message: 'Enter chain display name',
40
+ default: name[0].toUpperCase() + name.slice(1),
41
+ });
37
42
  const chainId = parseInt(await detectAndConfirmOrPrompt(async () => {
38
43
  const network = await provider.getNetwork();
39
44
  return network.chainId.toString();
40
45
  }, 'Enter a (number)', 'chain id', 'JSON RPC provider'), 10);
41
46
  const metadata = {
42
47
  name,
48
+ displayName,
43
49
  chainId,
44
50
  domainId: chainId,
45
51
  protocol: ProtocolType.Ethereum,
46
52
  rpcUrls: [{ http: rpcUrl }],
47
53
  };
48
- const wantAdvancedConfig = await confirm({
54
+ await addBlockOrGasConfig(metadata);
55
+ await addNativeTokenConfig(metadata);
56
+ const parseResult = ChainMetadataSchema.safeParse(metadata);
57
+ if (parseResult.success) {
58
+ logGreen(`Chain config is valid, writing to registry:`);
59
+ const metadataYaml = yamlStringify(metadata, null, 2);
60
+ log(indentYamlOrJson(metadataYaml, 4));
61
+ await context.registry.updateChain({ chainName: metadata.name, metadata });
62
+ }
63
+ else {
64
+ errorRed(`Chain config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/chain-config.yaml for an example`);
65
+ errorRed(JSON.stringify(parseResult.error.errors));
66
+ throw new Error('Invalid chain config');
67
+ }
68
+ }
69
+ async function addBlockOrGasConfig(metadata) {
70
+ const wantBlockOrGasConfig = await confirm({
49
71
  default: false,
50
- message: 'Do you want to set block or gas properties for this chain config?',
72
+ message: 'Do you want to set block or gas properties for this chain config',
51
73
  });
52
- if (wantAdvancedConfig) {
53
- const wantBlockConfig = await confirm({
54
- message: 'Do you want to add block config for this chain?',
74
+ if (wantBlockOrGasConfig) {
75
+ await addBlockConfig(metadata);
76
+ await addGasConfig(metadata);
77
+ }
78
+ }
79
+ async function addBlockConfig(metadata) {
80
+ const wantBlockConfig = await confirm({
81
+ message: 'Do you want to add block config for this chain',
82
+ });
83
+ if (wantBlockConfig) {
84
+ const blockConfirmation = await input({
85
+ message: 'Enter no. of blocks to wait before considering a transaction confirmed (0-500):',
86
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
55
87
  });
56
- if (wantBlockConfig) {
57
- const blockConfirmation = await input({
58
- message: 'Enter no. of blocks to wait before considering a transaction confirmed(0-500)',
59
- validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
60
- });
61
- const blockReorgPeriod = await input({
62
- message: 'Enter no. of blocks before a transaction has a near-zero chance of reverting(0-500)',
63
- validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
88
+ const blockReorgPeriod = await input({
89
+ message: 'Enter no. of blocks before a transaction has a near-zero chance of reverting (0-500):',
90
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
91
+ });
92
+ const blockTimeEstimate = await input({
93
+ message: 'Enter the rough estimate of time per block in seconds (0-20):',
94
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 20,
95
+ });
96
+ metadata.blocks = {
97
+ confirmations: parseInt(blockConfirmation, 10),
98
+ reorgPeriod: parseInt(blockReorgPeriod, 10),
99
+ estimateBlockTime: parseInt(blockTimeEstimate, 10),
100
+ };
101
+ }
102
+ }
103
+ async function addGasConfig(metadata) {
104
+ const wantGasConfig = await confirm({
105
+ message: 'Do you want to add gas config for this chain',
106
+ });
107
+ if (wantGasConfig) {
108
+ const isEIP1559 = await confirm({
109
+ message: 'Is your chain an EIP1559 enabled',
110
+ });
111
+ if (isEIP1559) {
112
+ const maxFeePerGas = await input({
113
+ message: 'Enter the max fee per gas (gwei):',
64
114
  });
65
- const blockTimeEstimate = await input({
66
- message: 'Enter the rough estimate of time per block in seconds(0-20)',
67
- validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 20,
115
+ const maxPriorityFeePerGas = await input({
116
+ message: 'Enter the max priority fee per gas (gwei):',
68
117
  });
69
- metadata.blocks = {
70
- confirmations: parseInt(blockConfirmation, 10),
71
- reorgPeriod: parseInt(blockReorgPeriod, 10),
72
- estimateBlockTime: parseInt(blockTimeEstimate, 10),
118
+ metadata.transactionOverrides = {
119
+ maxFeePerGas: BigInt(maxFeePerGas) * BigInt(10 ** 9),
120
+ maxPriorityFeePerGas: BigInt(maxPriorityFeePerGas) * BigInt(10 ** 9),
73
121
  };
74
122
  }
75
- const wantGasConfig = await confirm({
76
- message: 'Do you want to add gas config for this chain?',
77
- });
78
- if (wantGasConfig) {
79
- const isEIP1559 = await confirm({
80
- message: 'Is your chain an EIP1559 enabled?',
123
+ else {
124
+ const gasPrice = await input({
125
+ message: 'Enter the gas price (gwei):',
81
126
  });
82
- if (isEIP1559) {
83
- const maxFeePerGas = await input({
84
- message: 'Enter the max fee per gas in gwei',
85
- });
86
- const maxPriorityFeePerGas = await input({
87
- message: 'Enter the max priority fee per gas in gwei',
88
- });
89
- metadata.transactionOverrides = {
90
- maxFeePerGas: BigInt(maxFeePerGas) * BigInt(10 ** 9),
91
- maxPriorityFeePerGas: BigInt(maxPriorityFeePerGas) * BigInt(10 ** 9),
92
- };
93
- }
94
- else {
95
- const gasPrice = await input({
96
- message: 'Enter the gas price in gwei',
97
- });
98
- metadata.transactionOverrides = {
99
- gasPrice: BigInt(gasPrice) * BigInt(10 ** 9),
100
- };
101
- }
127
+ metadata.transactionOverrides = {
128
+ gasPrice: BigInt(gasPrice) * BigInt(10 ** 9),
129
+ };
102
130
  }
103
131
  }
104
- const parseResult = ChainMetadataSchema.safeParse(metadata);
105
- if (parseResult.success) {
106
- logGreen(`Chain config is valid, writing to registry`);
107
- await context.registry.updateChain({ chainName: metadata.name, metadata });
108
- }
109
- else {
110
- errorRed(`Chain config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/chain-config.yaml for an example`);
111
- errorRed(JSON.stringify(parseResult.error.errors));
112
- throw new Error('Invalid chain config');
132
+ }
133
+ async function addNativeTokenConfig(metadata) {
134
+ const wantNativeConfig = await confirm({
135
+ default: false,
136
+ message: 'Do you want to set native token properties for this chain config (defaults to ETH)',
137
+ });
138
+ let symbol, name, decimals;
139
+ if (wantNativeConfig) {
140
+ symbol = await input({
141
+ message: "Enter the native token's symbol:",
142
+ });
143
+ name = await input({
144
+ message: `Enter the native token's name:`,
145
+ });
146
+ decimals = await input({
147
+ message: "Enter the native token's decimals:",
148
+ });
113
149
  }
150
+ metadata.nativeToken = {
151
+ symbol: symbol ?? 'ETH',
152
+ name: name ?? 'Ether',
153
+ decimals: decimals ? parseInt(decimals, 10) : 18,
154
+ };
114
155
  }
115
156
  //# sourceMappingURL=chain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { stringify as yamlStringify } from 'yaml';
2
2
  import { CoreConfigSchema } from '@hyperlane-xyz/sdk';
3
3
  import { errorRed, log, logBlue, logGreen } from '../logger.js';
4
- import { detectAndConfirmOrPrompt } from '../utils/chains.js';
5
4
  import { indentYamlOrJson, writeYamlOrJson } from '../utils/files.js';
5
+ import { detectAndConfirmOrPrompt } from '../utils/input.js';
6
6
  import { createHookConfig, createMerkleTreeConfig, createProtocolFeeConfig, } from './hooks.js';
7
7
  import { createAdvancedIsmConfig, createTrustedRelayerConfig } from './ism.js';
8
8
  export async function createCoreDeployConfig({ context, configFilePath, advanced = false, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/config/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,cAAc,EACd,QAAQ,GAAG,KAAK,GAKjB;IACC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EACxC,mBAAmB,EACnB,eAAe,EACf,QAAQ,CACT,CAAC;IAEF,MAAM,UAAU,GAAc,QAAQ;QACpC,CAAC,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,MAAM,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,WAAuB,EAAE,YAAwB,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,MAAM,gBAAgB,CAAC;YACnC,OAAO;YACP,aAAa,EAAE,0BAA0B;YACzC,QAAQ;SACT,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,gBAAgB,CAAC;YACpC,OAAO;YACP,aAAa,EAAE,2BAA2B;YAC1C,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAC7C,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACxC,KAAK;YACL,UAAU;YACV,WAAW;YACX,YAAY;SACb,CAAC,CAAC;QACH,OAAO,CAAC,yCAAyC,cAAc,KAAK,CAAC,CAAC;QACtE,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,eAAe,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,QAAQ,CAAC,oDAAoD,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,oCAAoC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/config/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,cAAc,EACd,QAAQ,GAAG,KAAK,GAKjB;IACC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EACxC,mBAAmB,EACnB,eAAe,EACf,QAAQ,CACT,CAAC;IAEF,MAAM,UAAU,GAAc,QAAQ;QACpC,CAAC,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,MAAM,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,WAAuB,EAAE,YAAwB,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,MAAM,gBAAgB,CAAC;YACnC,OAAO;YACP,aAAa,EAAE,0BAA0B;YACzC,QAAQ;SACT,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,gBAAgB,CAAC;YACpC,OAAO;YACP,aAAa,EAAE,2BAA2B;YAC1C,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAC7C,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACxC,KAAK;YACL,UAAU;YACV,WAAW;YACX,YAAY;SACb,CAAC,CAAC;QACH,OAAO,CAAC,yCAAyC,cAAc,KAAK,CAAC,CAAC;QACtE,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,eAAe,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,QAAQ,CAAC,oDAAoD,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,oCAAoC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA8B,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAKlE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAa7D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAalD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,aAAkC,EAClC,QAAgB,GACjB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmCtB;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKAKlC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA2DnC,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA0C3B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA2BnC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA0B/B,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA8B,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAKlE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAa7D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAalD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,aAAkC,EAClC,QAAgB,GACjB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmCtB;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKAKlC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA6DnC,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA0C3B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA2BnC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uKA0B/B,CAAC"}