import { type MomentumResponse } from '@momentumcms/server-core'; import type { MomentumConfig, ResolvedMomentumConfig, UserContext } from '@momentumcms/core'; /** * H3 Event interface (simplified for type compatibility). */ export interface H3Event { method: string; path: string; context: { params?: Record; }; node?: { req: { url?: string; }; }; } /** * Type for readBody function from h3. */ export type ReadBodyFn = (event: H3Event) => Promise>; /** * Type for getQuery function from h3. */ export type GetQueryFn = (event: H3Event) => Record; /** * Type for getRouterParams function from h3. */ export type GetRouterParamsFn = (event: H3Event) => Record; /** * Type for setResponseHeader function from h3. */ export type SetResponseHeaderFn = (event: H3Event, key: string, value: string) => void; /** * Type for readMultipartFormData function from h3. */ export type ReadMultipartFormDataFn = (event: H3Event) => Promise | undefined>; /** * Type for send function from h3. */ export type SendFn = (event: H3Event, data: Buffer | Uint8Array | string, type?: string) => unknown; /** * Extended h3 utilities for comprehensive API handling. */ export interface MomentumH3Utils { readBody(event: H3Event): Promise>; getQuery(event: H3Event): Record; getRouterParams(event: H3Event): Record; setResponseStatus(event: H3Event, status: number): void; setResponseHeader(event: H3Event, key: string, value: string): void; readMultipartFormData(event: H3Event): Promise | undefined>; send(event: H3Event, data: Buffer | Uint8Array | string, type?: string): unknown; } /** * Creates an h3 event handler for Momentum CMS API. * * Usage in Analog.js: * ```typescript * // src/server/routes/api/[...momentum].ts * import { defineEventHandler, readBody, getQuery, getRouterParams } from 'h3'; * import { createMomentumHandler } from '@momentumcms/server-analog'; * import momentumConfig from '../../../momentum.config'; * * const handler = createMomentumHandler(momentumConfig); * * export default defineEventHandler(async (event) => { * return handler(event, { readBody, getQuery, getRouterParams }); * }); * ``` */ export declare function createMomentumHandler(config: MomentumConfig | ResolvedMomentumConfig): (event: H3Event, utils: { readBody: ReadBodyFn; getQuery: GetQueryFn; getRouterParams: GetRouterParamsFn; }) => Promise<{ status: number; body: MomentumResponse; }>; /** * Simplified handler that returns the response directly (for use with defineEventHandler). * This version handles method extraction and body parsing internally. */ export declare function createSimpleMomentumHandler(config: MomentumConfig | ResolvedMomentumConfig): (event: H3Event, utils: { readBody: ReadBodyFn; getQuery: GetQueryFn; getRouterParams: GetRouterParamsFn; setResponseStatus: (event: H3Event, status: number) => void; }) => Promise; /** * Creates a comprehensive h3 event handler that mirrors all Express API routes. * Handles: access control, GraphQL, globals, versioning, publishing, media, * batch operations, search, import/export, custom endpoints, preview, and CRUD. * * Usage in Analog.js: * ```typescript * import { defineEventHandler, readBody, getQuery, getRouterParams, * setResponseStatus, setResponseHeader, readMultipartFormData, send, getHeaders } from 'h3'; * import { createComprehensiveMomentumHandler } from '@momentumcms/server-analog'; * * const handler = createComprehensiveMomentumHandler(momentumConfig); * * export default defineEventHandler(async (event) => { * const user = await resolveSession(event); * return handler(event, { readBody, getQuery, ... }, { user }); * }); * ``` */ export declare function createComprehensiveMomentumHandler(config: MomentumConfig | ResolvedMomentumConfig): (event: H3Event, utils: MomentumH3Utils, context?: { user?: UserContext; }) => Promise;