@@ -52,6 +52,12 @@ export const HookType = {
5252 ARB_L2_TO_L1 : 'arbL2ToL1Hook' ,
5353 MAILBOX_DEFAULT : 'defaultHook' ,
5454 CCIP : 'ccipHook' ,
55+ /**
56+ * References a pre-deployed CCTP hook by address. Excluded from
57+ * `DeployableHookType` — not deployed via `HyperlaneHookDeployer`; the
58+ * `EvmHookModule.deploy` path just connects to `config.address`.
59+ */
60+ CCTP : 'cctpHook' ,
5561 UNKNOWN : 'unknownHook' ,
5662 PREDICATE : 'predicateHook' ,
5763} as const ;
@@ -60,7 +66,10 @@ export type HookType = (typeof HookType)[keyof typeof HookType];
6066
6167export type DeployableHookType = Exclude <
6268 HookType ,
63- typeof HookType . CUSTOM | typeof HookType . PREDICATE | typeof HookType . UNKNOWN
69+ | typeof HookType . CUSTOM
70+ | typeof HookType . PREDICATE
71+ | typeof HookType . UNKNOWN
72+ | typeof HookType . CCTP
6473> ;
6574
6675export const HookTypeToContractNameMap : Record < DeployableHookType , string > = {
@@ -220,6 +229,12 @@ export const CCIPHookSchema = z.object({
220229 destinationChain : z . string ( ) ,
221230} ) ;
222231
232+ export const CctpHookSchema = z . object ( {
233+ type : z . literal ( HookType . CCTP ) ,
234+ address : ZHash ,
235+ } ) ;
236+ export type CctpHookConfig = z . infer < typeof CctpHookSchema > ;
237+
223238export const UnknownHookSchema = z
224239 . object ( {
225240 type : z . literal ( HookType . UNKNOWN ) ,
@@ -282,6 +297,7 @@ export const HookConfigSchema = z.union([
282297 ArbL2ToL1HookSchema ,
283298 MailboxDefaultHookSchema ,
284299 CCIPHookSchema ,
300+ CctpHookSchema ,
285301 UnknownHookSchema ,
286302 PredicateHookSchema ,
287303] ) ;
0 commit comments