import type { Server } from "node:http";
import express, { type NextFunction, type Request, type Response } from "express";
import { z } from "zod";
export interface FileData {
    mimeType: string;
    type: string;
    data: string;
}
export interface ImageData {
    base64: string;
}
declare const startServerOptionsSchema: z.ZodObject<{
    port: z.ZodNumber;
    dbUrl: z.ZodString;
    traceTreeMiddleware: z.ZodOptional<z.ZodArray<z.ZodType<(req: Request, res: Response, next: NextFunction) => void, z.ZodTypeDef, (req: Request, res: Response, next: NextFunction) => void>, "many">>;
    options: z.ZodOptional<z.ZodObject<{
        formatOutputFiles: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
            mimeType: z.ZodString;
            type: z.ZodString;
            data: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            data: string;
            type: string;
            mimeType: string;
        }, {
            data: string;
            type: string;
            mimeType: string;
        }>, "many">], z.ZodUnknown>, z.ZodPromise<z.ZodArray<z.ZodObject<{
            mimeType: z.ZodString;
            type: z.ZodString;
            data: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            data: string;
            type: string;
            mimeType: string;
        }, {
            data: string;
            type: string;
            mimeType: string;
        }>, "many">>>>;
        formatOutputImages: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
            base64: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            base64: string;
        }, {
            base64: string;
        }>, "many">], z.ZodUnknown>, z.ZodPromise<z.ZodArray<z.ZodObject<{
            base64: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            base64: string;
        }, {
            base64: string;
        }>, "many">>>>;
    }, "strip", z.ZodTypeAny, {
        formatOutputFiles?: ((args_0: {
            data: string;
            type: string;
            mimeType: string;
        }[], ...args: unknown[]) => Promise<{
            data: string;
            type: string;
            mimeType: string;
        }[]>) | undefined;
        formatOutputImages?: ((args_0: {
            base64: string;
        }[], ...args: unknown[]) => Promise<{
            base64: string;
        }[]>) | undefined;
    }, {
        formatOutputFiles?: ((args_0: {
            data: string;
            type: string;
            mimeType: string;
        }[], ...args: unknown[]) => Promise<{
            data: string;
            type: string;
            mimeType: string;
        }[]>) | undefined;
        formatOutputImages?: ((args_0: {
            base64: string;
        }[], ...args: unknown[]) => Promise<{
            base64: string;
        }[]>) | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    port: number;
    dbUrl: string;
    options?: {
        formatOutputFiles?: ((args_0: {
            data: string;
            type: string;
            mimeType: string;
        }[], ...args: unknown[]) => Promise<{
            data: string;
            type: string;
            mimeType: string;
        }[]>) | undefined;
        formatOutputImages?: ((args_0: {
            base64: string;
        }[], ...args: unknown[]) => Promise<{
            base64: string;
        }[]>) | undefined;
    } | undefined;
    traceTreeMiddleware?: ((req: Request, res: Response, next: NextFunction) => void)[] | undefined;
}, {
    port: number;
    dbUrl: string;
    options?: {
        formatOutputFiles?: ((args_0: {
            data: string;
            type: string;
            mimeType: string;
        }[], ...args: unknown[]) => Promise<{
            data: string;
            type: string;
            mimeType: string;
        }[]>) | undefined;
        formatOutputImages?: ((args_0: {
            base64: string;
        }[], ...args: unknown[]) => Promise<{
            base64: string;
        }[]>) | undefined;
    } | undefined;
    traceTreeMiddleware?: ((req: Request, res: Response, next: NextFunction) => void)[] | undefined;
}>;
export type StartServerOptions = z.infer<typeof startServerOptionsSchema>;
export declare function startServer(options: StartServerOptions): Promise<{
    app: express.Express;
    server: Server;
}>;
export {};
