import type { SyntaxHighlightTheme, StxOptions } from '../types';
/**
 * Get MIME type for a file extension
 */
export declare function getMimeType(ext: string): string;
/**
 * MIME type mapping
 */
export declare const MIME_TYPES: {
  '.html': 'text/html';
  '.css': 'text/css';
  '.js': 'application/javascript';
  '.mjs': 'application/javascript';
  '.json': 'application/json';
  '.png': 'image/png';
  '.jpg': 'image/jpeg';
  '.jpeg': 'image/jpeg';
  '.gif': 'image/gif';
  '.svg': 'image/svg+xml';
  '.ico': 'image/x-icon';
  '.webp': 'image/webp';
  '.woff': 'font/woff';
  '.woff2': 'font/woff2';
  '.ttf': 'font/ttf';
  '.eot': 'application/vnd.ms-fontobject';
  '.otf': 'font/otf';
  '.mp4': 'video/mp4';
  '.webm': 'video/webm';
  '.mp3': 'audio/mpeg';
  '.wav': 'audio/wav';
  '.pdf': 'application/pdf';
  '.zip': 'application/zip';
  '.xml': 'application/xml';
  '.txt': 'text/plain';
  '.md': 'text/markdown';
  '.stx': 'text/html'
};
/**
 * Default dev server options
 */
export declare const DEFAULT_DEV_OPTIONS: Required<Omit<DevServerOptions, 'stxOptions' | 'markdown'>>;
/**
 * Markdown rendering options
 */
export declare interface MarkdownOptions {
  syntaxHighlighting?: {
    serverSide?: boolean
    enabled?: boolean
    defaultTheme?: SyntaxHighlightTheme
    highlightUnknownLanguages?: boolean
    additionalThemes?: SyntaxHighlightTheme[]
  }
}
/**
 * Dev server configuration options
 */
export declare interface DevServerOptions {
  port?: number
  watch?: boolean
  native?: boolean
  stxOptions?: StxOptions
  markdown?: MarkdownOptions
  cache?: boolean
  hotReload?: boolean
  hmrPort?: number
  profile?: boolean
  debugDirectives?: boolean
}
/**
 * Server instance returned by serve functions
 */
export declare interface ServerInstance {
  stop: () => void
  url: string
  port: number
  hmrPort?: number
}
/**
 * File watcher event types
 */
export type WatchEventType = 'change' | 'rename' | 'delete' | 'add';
/**
 * File watcher callback
 */
// eslint-disable-next-line pickier/no-unused-vars
export type WatchCallback = (eventType: WatchEventType, filename: string) => void;
/**
 * Route handler function
 */
// eslint-disable-next-line pickier/no-unused-vars
export type RouteHandler = (request: Request) => Promise<Response> | Response;
