import { z } from "zod";

export interface Request<T> {
  service: string;
  subject: string;
  data?: T;
}

export const InternalRequestSchema = z.object({
  from: z.string(),
  data: z.optional(z.any()),
});

export const InternalResponseSchema = z.object({
  data: z.optional(z.any()),
  statusCode: z.number(),
});

export type InternalRequest = z.infer<typeof InternalRequestSchema>;
export type InternalResponse = z.infer<typeof InternalResponseSchema>;

export interface Response<T> {
  data?: T;
  statusCode: number;
}