import { Request, Response, NextFunction } from 'express';
interface MiddlewareOptions {
    userId: string;
    token?: string;
    apiBase?: string;
    mediaApiBase?: string;
}
export declare function ArcstrumMiddleware({ userId, token, apiBase, mediaApiBase }: MiddlewareOptions): (req: Request, res: Response, next: NextFunction) => Promise<void>;
declare global {
    namespace Express {
        interface Request {
            arcstrum: {
                listDatabases: () => Promise<string[]>;
                createDatabase: (dbFile: string) => Promise<void>;
                deleteDatabase: (dbFile: string) => Promise<void>;
                renameDatabase: (oldName: string, newName: string) => Promise<void>;
                getTables: (dbFile: string) => Promise<string[]>;
                queryTable: (dbFile: string, table: string) => Promise<any[]>;
                insertRow: (dbFile: string, table: string, row: Record<string, any>) => Promise<void>;
                deleteRow: (dbFile: string, table: string, row: Record<string, any>) => Promise<void>;
                execSql: (dbFile: string, sql: string) => Promise<void>;
                validateSql: (sql: string) => Promise<{
                    type: string;
                    valid: boolean;
                }>;
                getUsageAnalytics: () => Promise<Record<string, Record<string, number>>>;
                getTableSchema: (dbFile: string, table: string) => Promise<any[]>;
                getDbStats: (dbFile: string) => Promise<{
                    size_bytes: number;
                    last_modified: number;
                }>;
                getPreviewRows: (dbFile: string, table: string, limit?: number) => Promise<any[]>;
                getColumnInfo: (dbFile: string, table: string) => Promise<any[]>;
                searchTable: (dbFile: string, table: string, filters: {
                    column: string;
                    op: string;
                    value: string;
                }[]) => Promise<any[]>;
                getDbMetadata: (dbFile: string) => Promise<Record<string, any>>;
                updateDbMetadata: (dbFile: string, metadata: Record<string, any>) => Promise<void>;
                deleteDbMetadata: (dbFile: string) => Promise<void>;
                query: (dbFile: string, sql: string) => Promise<any[]>;
                uploadMediaFile: (file: File) => Promise<string>;
                listMediaFiles: () => Promise<{
                    filename: string;
                    url: string;
                    uploadedAt?: string;
                }[]>;
                getMediaFileUrl: (filename: string) => string;
                deleteMediaFile: (filename: string) => Promise<void>;
            };
        }
    }
}
export {};
