import { z } from 'zod'; export const envelopeSchema = (data: T) => z.object({ code: z.number().int(), msg: z.string(), data: data.nullable(), request_id: z.string(), details: z.unknown().optional(), stack: z.string().optional(), }); export interface Envelope { code: number; msg: string; data: T | null; request_id: string; details?: unknown; stack?: string; } export function okEnvelope(data: T, requestId: string): Envelope { return { code: 0, msg: 'success', data, request_id: requestId }; } export function errEnvelope( code: number, msg: string, requestId: string, stack?: string, ): Envelope { return { code, msg, data: null, request_id: requestId, stack }; }