import type { H3Event } from 'h3'; export interface PageInput { route: string; title: string; description: string; markdown: string; headings: string; keywords: string[]; contentHash?: string; updatedAt: string; isError?: boolean; source?: 'prerender' | 'runtime'; } export interface PageOutput { route: string; title: string; description: string; markdown: string; headings: string; keywords: string[]; contentHash?: string; updatedAt: string; isError: boolean; } export interface PageMetaOutput { route: string; title: string; description: string; headings: string; keywords: string[]; updatedAt: string; isError: boolean; } /** * Insert or update a page */ export declare function upsertPage(event: H3Event | undefined, page: PageInput): Promise; /** * Get all pages */ export declare function getAllPages(event: H3Event | undefined, options?: { includeErrors?: boolean; excludeMarkdown?: boolean; }): Promise; /** * Get a single page by route */ export declare function getPageByRoute(event: H3Event | undefined, route: string): Promise; /** * Get lastmod (updatedAt) for all indexed pages * Returns a Map for O(1) lookup when enriching sitemaps */ export declare function getPageLastmods(event: H3Event | undefined): Promise>; /** * Search pages (uses LIKE for both dialects, FTS5 fallback for SQLite) */ export declare function searchPages(event: H3Event | undefined, query: string, options?: { limit?: number; }): Promise; /** * Count pages */ export declare function countPages(event: H3Event | undefined, options?: { indexed?: boolean; errors?: boolean; }): Promise; /** * Delete a page by route */ export declare function deletePage(event: H3Event | undefined, route: string): Promise; /** * Get pending pages (not yet indexed) */ export declare function getPendingPages(event: H3Event | undefined, limit?: number): Promise<{ route: string; }[]>; /** * Mark page as indexed */ export declare function markPageIndexed(event: H3Event | undefined, route: string): Promise; /** * Mark multiple routes as pending (needing re-index) */ export declare function markRoutesPending(event: H3Event | undefined, routes: string[]): Promise; /** * Get content hashes for all pages */ export declare function getContentHashes(event?: H3Event): Promise>; /** * Get a value from the info table */ export declare function getInfoValue(event: H3Event | undefined, key: string): Promise; /** * Set a value in the info table */ export declare function setInfoValue(event: H3Event | undefined, key: string, value: string): Promise; /** * Delete a value from the info table */ export declare function deleteInfoValue(event: H3Event | undefined, key: string): Promise; /** * Initialize database schema. Rebuilds on SCHEMA_VERSION change or when the * SQLite FTS5 tokenizer differs from the one baked into the existing virtual * table (Postgres has no FTS5; tokenizer comparison is SQLite-only). */ export declare function initSchema(event?: H3Event): Promise; /** * Get pages needing IndexNow sync */ export declare function getPagesNeedingIndexNowSync(event: H3Event | undefined, limit?: number): Promise<{ route: string; }[]>; /** * Count pages needing IndexNow sync */ export declare function countPagesNeedingIndexNowSync(event: H3Event | undefined): Promise; /** * Mark pages as synced to IndexNow */ export declare function markIndexNowSynced(event: H3Event | undefined, routes: string[]): Promise; export interface CronRunOutput { id: number; startedAt: number; finishedAt: number | null; durationMs: number | null; pagesIndexed: number; pagesRemaining: number; indexNowSubmitted: number; indexNowRemaining: number; errors: string[]; status: 'running' | 'success' | 'partial' | 'error'; } /** * Start a cron run */ export declare function startCronRun(event: H3Event | undefined): Promise; /** * Complete a cron run */ export declare function completeCronRun(event: H3Event | undefined, runId: number, result: { pagesIndexed: number; pagesRemaining: number; indexNowSubmitted: number; indexNowRemaining: number; errors: string[]; }): Promise; /** * Get recent cron runs */ export declare function getRecentCronRuns(event: H3Event | undefined, limit?: number): Promise; export interface SitemapOutput { name: string; route: string; lastCrawledAt: number | null; urlCount: number; errorCount: number; lastError: string | null; } /** * Sync sitemaps from config */ export declare function syncSitemaps(event: H3Event | undefined, sitemapList: Array<{ name: string; route: string; }>): Promise<{ added: number; removed: number; }>; /** * Get next sitemap to crawl */ export declare function getNextSitemapToCrawl(event: H3Event | undefined, minIntervalMinutes?: number): Promise; /** * Mark sitemap as crawled */ export declare function markSitemapCrawled(event: H3Event | undefined, name: string, urlCount: number): Promise; /** * Mark sitemap error */ export declare function markSitemapError(event: H3Event | undefined, name: string, error: string): Promise; /** * Get all sitemaps status */ export declare function getSitemapStatus(event: H3Event | undefined): Promise; /** * Reset all sitemap errors (called on build_id change) */ export declare function resetSitemapErrors(event: H3Event | undefined): Promise; /** * Seed routes from sitemap */ export declare function seedRoutes(event: H3Event | undefined, routes: string[]): Promise;