import { z } from "zod"

export const PushPlatformSchema = z.enum(["ANDROID"])
export const PushAppStateSchema = z.enum(["FOREGROUND", "BACKGROUND", "UNKNOWN"])

const terminalIdSchema = z.string().trim().min(1).max(191)
const fcmTokenSchema = z.string().trim().min(1).max(4096)
const appVersionSchema = z.string().trim().min(1).max(64)

export const PushRegisterSchema = z.object({
    terminalId: terminalIdSchema,
    fcmToken: fcmTokenSchema,
    platform: PushPlatformSchema.default("ANDROID"),
    appVersion: appVersionSchema.optional(),
    appState: PushAppStateSchema.default("UNKNOWN"),
})

export const PushHeartbeatSchema = z.object({
    terminalId: terminalIdSchema,
    appState: PushAppStateSchema.optional(),
})

export const PushUnregisterSchema = z.object({
    terminalId: terminalIdSchema,
    reason: z.string().trim().min(1).max(64).optional(),
})

export const PushStatusQuerySchema = z.object({
    terminalId: terminalIdSchema.optional(),
})

export type PushRegisterInput = z.infer<typeof PushRegisterSchema>
export type PushHeartbeatInput = z.infer<typeof PushHeartbeatSchema>
export type PushUnregisterInput = z.infer<typeof PushUnregisterSchema>
export type PushStatusQuery = z.infer<typeof PushStatusQuerySchema>

