import * as z from "zod";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { OpenAIContentItem, OpenAIContentItem$Outbound } from "./openaicontentitem.js";
import { OpenAIToolCall, OpenAIToolCall$Outbound } from "./openaitoolcall.js";
export declare const OpenAIExtendedMessageType: {
    readonly Openai: "openai";
};
export type OpenAIExtendedMessageType = ClosedEnum<typeof OpenAIExtendedMessageType>;
export declare const Role: {
    readonly System: "system";
    readonly User: "user";
    readonly Assistant: "assistant";
};
export type Role = ClosedEnum<typeof Role>;
export type Content = string | Array<OpenAIContentItem>;
export declare const One: {
    readonly Documentation: "documentation";
    readonly Site: "site";
    readonly DiscoursePost: "discourse_post";
    readonly GithubIssue: "github_issue";
    readonly GithubDiscussion: "github_discussion";
    readonly StackoverflowQuestion: "stackoverflow_question";
    readonly DiscordForumPost: "discord_forum_post";
    readonly DiscordMessage: "discord_message";
    readonly CustomQuestionAnswer: "custom_question_answer";
};
export type One = ClosedEnum<typeof One>;
export type OpenAIExtendedMessageLinksType = One | string;
export type Links = {
    label?: string | null | undefined;
    url: string;
    title?: string | null | undefined;
    description?: string | null | undefined;
    type?: One | string | null | undefined;
    breadcrumbs?: Array<string> | null | undefined;
};
/**
 * A message that includes the OpenAI chat completion details.
 */
export type OpenAIExtendedMessage = {
    id: string;
    type: OpenAIExtendedMessageType;
    externalId: string | null;
    externalUrl: string | null;
    conversationId: string;
    createdAt: string;
    updatedAt: string;
    role: Role;
    content: string | Array<OpenAIContentItem>;
    name?: string | null | undefined;
    links?: Array<Links> | null | undefined;
    /**
     * A customizable collection of custom properties or attributes.
     */
    properties?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * A customizable collection of custom properties or attributes.
     */
    userProperties?: {
        [k: string]: any;
    } | null | undefined;
    toolCalls?: Array<OpenAIToolCall> | null | undefined;
};
/** @internal */
export declare const OpenAIExtendedMessageType$inboundSchema: z.ZodNativeEnum<typeof OpenAIExtendedMessageType>;
/** @internal */
export declare const OpenAIExtendedMessageType$outboundSchema: z.ZodNativeEnum<typeof OpenAIExtendedMessageType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OpenAIExtendedMessageType$ {
    /** @deprecated use `OpenAIExtendedMessageType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Openai: "openai";
    }>;
    /** @deprecated use `OpenAIExtendedMessageType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Openai: "openai";
    }>;
}
/** @internal */
export declare const Role$inboundSchema: z.ZodNativeEnum<typeof Role>;
/** @internal */
export declare const Role$outboundSchema: z.ZodNativeEnum<typeof Role>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Role$ {
    /** @deprecated use `Role$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly System: "system";
        readonly User: "user";
        readonly Assistant: "assistant";
    }>;
    /** @deprecated use `Role$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly System: "system";
        readonly User: "user";
        readonly Assistant: "assistant";
    }>;
}
/** @internal */
export declare const Content$inboundSchema: z.ZodType<Content, z.ZodTypeDef, unknown>;
/** @internal */
export type Content$Outbound = string | Array<OpenAIContentItem$Outbound>;
/** @internal */
export declare const Content$outboundSchema: z.ZodType<Content$Outbound, z.ZodTypeDef, Content>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Content$ {
    /** @deprecated use `Content$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Content, z.ZodTypeDef, unknown>;
    /** @deprecated use `Content$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Content$Outbound, z.ZodTypeDef, Content>;
    /** @deprecated use `Content$Outbound` instead. */
    type Outbound = Content$Outbound;
}
export declare function contentToJSON(content: Content): string;
export declare function contentFromJSON(jsonString: string): SafeParseResult<Content, SDKValidationError>;
/** @internal */
export declare const One$inboundSchema: z.ZodNativeEnum<typeof One>;
/** @internal */
export declare const One$outboundSchema: z.ZodNativeEnum<typeof One>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace One$ {
    /** @deprecated use `One$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Documentation: "documentation";
        readonly Site: "site";
        readonly DiscoursePost: "discourse_post";
        readonly GithubIssue: "github_issue";
        readonly GithubDiscussion: "github_discussion";
        readonly StackoverflowQuestion: "stackoverflow_question";
        readonly DiscordForumPost: "discord_forum_post";
        readonly DiscordMessage: "discord_message";
        readonly CustomQuestionAnswer: "custom_question_answer";
    }>;
    /** @deprecated use `One$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Documentation: "documentation";
        readonly Site: "site";
        readonly DiscoursePost: "discourse_post";
        readonly GithubIssue: "github_issue";
        readonly GithubDiscussion: "github_discussion";
        readonly StackoverflowQuestion: "stackoverflow_question";
        readonly DiscordForumPost: "discord_forum_post";
        readonly DiscordMessage: "discord_message";
        readonly CustomQuestionAnswer: "custom_question_answer";
    }>;
}
/** @internal */
export declare const OpenAIExtendedMessageLinksType$inboundSchema: z.ZodType<OpenAIExtendedMessageLinksType, z.ZodTypeDef, unknown>;
/** @internal */
export type OpenAIExtendedMessageLinksType$Outbound = string | string;
/** @internal */
export declare const OpenAIExtendedMessageLinksType$outboundSchema: z.ZodType<OpenAIExtendedMessageLinksType$Outbound, z.ZodTypeDef, OpenAIExtendedMessageLinksType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OpenAIExtendedMessageLinksType$ {
    /** @deprecated use `OpenAIExtendedMessageLinksType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<string, z.ZodTypeDef, unknown>;
    /** @deprecated use `OpenAIExtendedMessageLinksType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<string, z.ZodTypeDef, string>;
    /** @deprecated use `OpenAIExtendedMessageLinksType$Outbound` instead. */
    type Outbound = OpenAIExtendedMessageLinksType$Outbound;
}
export declare function openAIExtendedMessageLinksTypeToJSON(openAIExtendedMessageLinksType: OpenAIExtendedMessageLinksType): string;
export declare function openAIExtendedMessageLinksTypeFromJSON(jsonString: string): SafeParseResult<OpenAIExtendedMessageLinksType, SDKValidationError>;
/** @internal */
export declare const Links$inboundSchema: z.ZodType<Links, z.ZodTypeDef, unknown>;
/** @internal */
export type Links$Outbound = {
    label?: string | null | undefined;
    url: string;
    title?: string | null | undefined;
    description?: string | null | undefined;
    type?: string | string | null | undefined;
    breadcrumbs?: Array<string> | null | undefined;
};
/** @internal */
export declare const Links$outboundSchema: z.ZodType<Links$Outbound, z.ZodTypeDef, Links>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Links$ {
    /** @deprecated use `Links$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Links, z.ZodTypeDef, unknown>;
    /** @deprecated use `Links$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Links$Outbound, z.ZodTypeDef, Links>;
    /** @deprecated use `Links$Outbound` instead. */
    type Outbound = Links$Outbound;
}
export declare function linksToJSON(links: Links): string;
export declare function linksFromJSON(jsonString: string): SafeParseResult<Links, SDKValidationError>;
/** @internal */
export declare const OpenAIExtendedMessage$inboundSchema: z.ZodType<OpenAIExtendedMessage, z.ZodTypeDef, unknown>;
/** @internal */
export type OpenAIExtendedMessage$Outbound = {
    id: string;
    type: string;
    externalId: string | null;
    externalUrl: string | null;
    conversationId: string;
    createdAt: string;
    updatedAt: string;
    role: string;
    content: string | Array<OpenAIContentItem$Outbound>;
    name?: string | null | undefined;
    links?: Array<Links$Outbound> | null | undefined;
    properties?: {
        [k: string]: any;
    } | null | undefined;
    userProperties?: {
        [k: string]: any;
    } | null | undefined;
    tool_calls?: Array<OpenAIToolCall$Outbound> | null | undefined;
};
/** @internal */
export declare const OpenAIExtendedMessage$outboundSchema: z.ZodType<OpenAIExtendedMessage$Outbound, z.ZodTypeDef, OpenAIExtendedMessage>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OpenAIExtendedMessage$ {
    /** @deprecated use `OpenAIExtendedMessage$inboundSchema` instead. */
    const inboundSchema: z.ZodType<OpenAIExtendedMessage, z.ZodTypeDef, unknown>;
    /** @deprecated use `OpenAIExtendedMessage$outboundSchema` instead. */
    const outboundSchema: z.ZodType<OpenAIExtendedMessage$Outbound, z.ZodTypeDef, OpenAIExtendedMessage>;
    /** @deprecated use `OpenAIExtendedMessage$Outbound` instead. */
    type Outbound = OpenAIExtendedMessage$Outbound;
}
export declare function openAIExtendedMessageToJSON(openAIExtendedMessage: OpenAIExtendedMessage): string;
export declare function openAIExtendedMessageFromJSON(jsonString: string): SafeParseResult<OpenAIExtendedMessage, SDKValidationError>;
//# sourceMappingURL=openaiextendedmessage.d.ts.map