import { Conversation, Message } from "mongodb-rag-core";
import { ObjectId } from "mongodb-rag-core/mongodb";
import { z } from "zod";
export type ApiMessage = z.infer<typeof ApiMessage>;
export declare const ApiMessage: z.ZodObject<{
    id: z.ZodString;
    role: z.ZodEnum<["system", "assistant", "user", "function"]>;
    content: z.ZodString;
    rating: z.ZodOptional<z.ZodBoolean>;
    createdAt: z.ZodNumber;
    references: z.ZodOptional<z.ZodArray<z.ZodObject<{
        url: z.ZodString;
        title: z.ZodString;
        metadata: z.ZodOptional<z.ZodObject<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">>>;
    }, "strip", z.ZodTypeAny, {
        url: string;
        title: string;
        metadata?: z.objectOutputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough"> | undefined;
    }, {
        url: string;
        title: string;
        metadata?: z.objectInputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough"> | undefined;
    }>, "many">>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    role: "function" | "user" | "assistant" | "system";
    id: string;
    content: string;
    createdAt: number;
    rating?: boolean | undefined;
    metadata?: Record<string, unknown> | undefined;
    references?: {
        url: string;
        title: string;
        metadata?: z.objectOutputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough"> | undefined;
    }[] | undefined;
}, {
    role: "function" | "user" | "assistant" | "system";
    id: string;
    content: string;
    createdAt: number;
    rating?: boolean | undefined;
    metadata?: Record<string, unknown> | undefined;
    references?: {
        url: string;
        title: string;
        metadata?: z.objectInputType<{
            sourceName: z.ZodOptional<z.ZodString>;
            sourceType: z.ZodOptional<z.ZodString>;
            tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough"> | undefined;
    }[] | undefined;
}>;
export type ApiConversation = z.infer<typeof ApiConversation>;
export declare const ApiConversation: z.ZodObject<{
    _id: z.ZodString;
    messages: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        role: z.ZodEnum<["system", "assistant", "user", "function"]>;
        content: z.ZodString;
        rating: z.ZodOptional<z.ZodBoolean>;
        createdAt: z.ZodNumber;
        references: z.ZodOptional<z.ZodArray<z.ZodObject<{
            url: z.ZodString;
            title: z.ZodString;
            metadata: z.ZodOptional<z.ZodObject<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>>;
        }, "strip", z.ZodTypeAny, {
            url: string;
            title: string;
            metadata?: z.objectOutputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }, {
            url: string;
            title: string;
            metadata?: z.objectInputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }>, "many">>;
        metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        role: "function" | "user" | "assistant" | "system";
        id: string;
        content: string;
        createdAt: number;
        rating?: boolean | undefined;
        metadata?: Record<string, unknown> | undefined;
        references?: {
            url: string;
            title: string;
            metadata?: z.objectOutputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }[] | undefined;
    }, {
        role: "function" | "user" | "assistant" | "system";
        id: string;
        content: string;
        createdAt: number;
        rating?: boolean | undefined;
        metadata?: Record<string, unknown> | undefined;
        references?: {
            url: string;
            title: string;
            metadata?: z.objectInputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }[] | undefined;
    }>, "many">;
    createdAt: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    createdAt: number;
    _id: string;
    messages: {
        role: "function" | "user" | "assistant" | "system";
        id: string;
        content: string;
        createdAt: number;
        rating?: boolean | undefined;
        metadata?: Record<string, unknown> | undefined;
        references?: {
            url: string;
            title: string;
            metadata?: z.objectOutputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }[] | undefined;
    }[];
}, {
    createdAt: number;
    _id: string;
    messages: {
        role: "function" | "user" | "assistant" | "system";
        id: string;
        content: string;
        createdAt: number;
        rating?: boolean | undefined;
        metadata?: Record<string, unknown> | undefined;
        references?: {
            url: string;
            title: string;
            metadata?: z.objectInputType<{
                sourceName: z.ZodOptional<z.ZodString>;
                sourceType: z.ZodOptional<z.ZodString>;
                tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough"> | undefined;
        }[] | undefined;
    }[];
}>;
export declare function convertMessageFromDbToApi(message: Message, conversationId?: ObjectId): ApiMessage;
export declare function convertConversationFromDbToApi(conversation: Conversation): ApiConversation;
export declare function isValidIp(ip?: string): boolean;
export declare function areEquivalentIpAddresses(ip1: string, ip2: string): boolean;
export type RequestError = Error & {
    name: "RequestError";
    httpStatus: number;
};
export declare const makeRequestError: ({ message, httpStatus, stack: stackIn, }: Omit<RequestError, "name">) => RequestError;
//# sourceMappingURL=utils.d.ts.map