import type { Serve, WebSocketHandler } from "bun"; export type PrasiHttpHandler = ( req: Request, opt?: { rewrite?: (arg: { body: Bun.BodyInit; headers: Headers | any; }) => Bun.BodyInit; } ) => Promise; export type PrasiWsHandler = WebSocketHandler<{ url: URL }>; export interface PrasiServer { ws?: PrasiWsHandler; http: (arg: { url: { raw: URL; pathname: string }; req: Request; server: Server; mode: "dev" | "prod"; handle: PrasiHttpHandler; serveStatic?: any; serveAPI?: any; index: { head: string[]; body: string[]; render: () => string }; prasi: { page_id?: string; params?: Record }; }) => Promise; init?: (arg: { port?: number }) => Promise; } export type ServerCtx = { server: Serve; url: { pathname: string; raw: URL; }; req: Request; };