import type { Request, Response, NextFunction, Router } from 'express'; import type { z } from 'zod'; /** * Core IXP Types and Interfaces */ export interface IntentDefinition { name: string; description: string; parameters: { type: 'object'; properties: Record; required?: string[]; }; component: string; version: string; deprecated?: boolean; crawlable?: boolean; } export interface ComponentDefinition { name: string; framework: string; remoteUrl: string; exportName: string; propsSchema: { type: 'object'; properties: Record; required?: string[]; }; version: string; deprecated?: boolean; allowedOrigins: string[]; bundleSize: string; performance: { tti: string; bundleSizeGzipped: string; }; securityPolicy: { allowEval: boolean; maxBundleSize: string; sandboxed: boolean; }; } export interface IntentRequest { name: string; parameters: Record; } export interface IntentResponse { record: { moduleUrl: string; exportName: string; props: Record; }; component: ComponentDefinition; ttl: number; } export interface IXPServerConfig { intents?: string | IntentDefinition[]; components?: string | Record; port?: number; cors?: { origins?: string[]; credentials?: boolean; methods?: string[]; allowedHeaders?: string[]; }; security?: { helmet?: boolean; csp?: Record; rateLimit?: { windowMs?: number; max?: number; }; }; plugins?: IXPPlugin[]; middleware?: IXPMiddleware[]; dataProvider?: DataProvider; logging?: { level?: 'error' | 'warn' | 'info' | 'debug'; format?: 'json' | 'text'; }; metrics?: { enabled?: boolean; endpoint?: string; }; swagger?: { enabled?: boolean; endpoint?: string; title?: string; version?: string; description?: string; }; } export interface IXPPlugin { name: string; version: string; install: (server: IXPServerInstance) => void | Promise; uninstall?: (server: IXPServerInstance) => void | Promise; } export interface IXPMiddleware { name: string; handler: (req: Request, res: Response, next: NextFunction) => void | Promise; priority?: number; routes?: string[]; } export interface DataProvider { getCrawlerContent?: (options: CrawlerContentOptions) => Promise; resolveIntentData?: (intent: IntentRequest, context?: any) => Promise>; } export interface CrawlerContentOptions { cursor?: string; limit?: number; lastUpdated?: string; format?: 'json' | 'ndjson'; type?: string; } export interface CrawlerContentResponse { contents: ContentItem[]; pagination: { nextCursor: string | null; hasMore: boolean; }; lastUpdated: string; } export interface ContentItem { type: string; id: string; title: string; description: string; lastUpdated: string; [key: string]: any; } export interface IXPServerInstance { app: Router; config: IXPServerConfig; intentRegistry: IntentRegistry; componentRegistry: ComponentRegistry; intentResolver: IntentResolver; addPlugin: (plugin: IXPPlugin) => Promise; removePlugin: (name: string) => Promise; addMiddleware: (middleware: IXPMiddleware) => void; listen: (port?: number) => Promise; close: () => Promise; } export interface IntentRegistry { getAll(): IntentDefinition[]; get(name: string): IntentDefinition | undefined; add(intent: IntentDefinition): void; remove(name: string): boolean; reload(): Promise; enableFileWatching(): void; disableFileWatching(): void; findByCriteria(criteria: { crawlable?: boolean; deprecated?: boolean; component?: string; }): IntentDefinition[]; getStats(): { total: number; crawlable: number; deprecated: number; byComponent: Record; }; } export interface ComponentRegistry { getAll(): ComponentDefinition[]; get(name: string): ComponentDefinition | undefined; add(component: ComponentDefinition): void; remove(name: string): boolean; reload(): Promise; enableFileWatching(): void; disableFileWatching(): void; isOriginAllowed(componentName: string, origin: string): boolean; findByCriteria(criteria: { framework?: string; deprecated?: boolean; sandboxed?: boolean; }): ComponentDefinition[]; getStats(): { total: number; byFramework: Record; deprecated: number; sandboxed: number; averageBundleSize: string; }; } export interface IntentResolver { resolveIntent(request: IntentRequest, options?: any): Promise; validateParameters(intent: IntentDefinition, parameters: Record): Promise>; } export interface IXPError extends Error { code: string; statusCode: number; timestamp: string; details?: any; } export interface IXPErrorResponse { error: { code: string; message: string; timestamp: string; details?: any; }; } export type ZodSchema = z.ZodTypeAny; export type ValidationResult = { success: boolean; data?: T; errors?: string[]; }; export interface MetricsData { requests: { total: number; byIntent: Record; byStatus: Record; }; performance: { averageResponseTime: number; p95ResponseTime: number; p99ResponseTime: number; }; errors: { total: number; byType: Record; }; uptime: number; timestamp: string; } export interface HealthCheckResult { status: 'healthy' | 'unhealthy' | 'degraded'; service: string; version: string; timestamp: string; uptime: number; checks: { [key: string]: { status: 'pass' | 'fail' | 'warn'; message?: string; duration?: number; }; }; } export interface CLICommand { name: string; description: string; options?: CLIOption[]; action: (...args: any[]) => void | Promise; } export interface CLIOption { flags: string; description: string; defaultValue?: any; } export interface ProjectTemplate { name: string; description: string; files: TemplateFile[]; dependencies: string[]; devDependencies: string[]; scripts: Record; } export interface TemplateFile { path: string; content: string; executable?: boolean; } //# sourceMappingURL=index.d.ts.map