import { z } from 'zod'; import { HookConfigSchema, IsmConfigSchema } from '@hyperlane-xyz/sdk'; const BacklogMessageSchema = z.object({ attempts: z.number(), lastAttempt: z.number(), message: z.string(), dispatchTx: z.string(), }); const MessageBacklogSchema = z.array(BacklogMessageSchema); type DerivedHookConfig = z.infer< z.ZodIntersection< z.ZodObject<{ address: z.ZodString }>, typeof HookConfigSchema > >; type DerivedIsmConfig = z.infer< z.ZodIntersection< z.ZodObject<{ address: z.ZodString }>, typeof IsmConfigSchema > >; type MessageBacklog = z.infer; export type RelayerCache = { hook: Record>; ism: Record>; backlog: MessageBacklog; }; export const RelayerCacheSchema: z.ZodType = z.object({ hook: z.record( z.string(), z.record( z.string(), z.object({ address: z.string() }).and(HookConfigSchema), ), ), ism: z.record( z.string(), z.record( z.string(), z.object({ address: z.string() }).and(IsmConfigSchema), ), ), backlog: MessageBacklogSchema, });