import type { ChannelType } from './environment';
/**
 * Defines a custom type UUID representing a universally unique identifier
 */
export type UUID = `${string}-${string}-${string}-${string}-${string}`;
/**
 * Helper function to safely cast a string to strongly typed UUID
 * @param id The string UUID to validate and cast
 * @returns The same UUID with branded type information
 */
export declare function asUUID(id: string): UUID;
/**
 * Represents the content of a memory, message, or other information
 */
export interface Content {
    /** The agent's internal thought process */
    thought?: string;
    /** The main text content visible to users */
    text?: string;
    /** Optional actions to be performed */
    actions?: string[];
    /** Optional providers to use for context generation */
    providers?: string[];
    /** Optional source/origin of the content */
    source?: string;
    /** Optional target/destination for responses */
    target?: string;
    /** URL of the original message/post (e.g. tweet URL, Discord message link) */
    url?: string;
    /** UUID of parent message if this is a reply/thread */
    inReplyTo?: UUID;
    /** Array of media attachments */
    attachments?: Media[];
    /** room type */
    channelType?: ChannelType;
    /** Platform-provided metadata about mentions */
    mentionContext?: MentionContext;
    /**
     * Additional dynamic properties
     * Use specific properties above instead of this when possible
     */
    [key: string]: unknown;
}
/**
  * Platform-provided metadata about mentions.
  * Contains ONLY technical facts from the platform API.
  * This allows bootstrap to make intelligent decisions about responding
  * while keeping platform-specific logic isolated.
  */
export interface MentionContext {
    /** Platform native mention (@Discord, @Telegram, etc.) */
    isMention: boolean;
    /** Reply to agent's message */
    isReply: boolean;
    /** In a thread with agent */
    isThread: boolean;
    /** Platform-specific mention type for debugging/logging */
    mentionType?: 'platform_mention' | 'reply' | 'thread' | 'none';
}
/**
 * Represents a media attachment
 */
export type Media = {
    /** Unique identifier */
    id: string;
    /** Media URL */
    url: string;
    /** Media title */
    title?: string;
    /** Media source */
    source?: string;
    /** Media description */
    description?: string;
    /** Text content */
    text?: string;
    /** Content type */
    contentType?: ContentType;
};
export declare enum ContentType {
    IMAGE = "image",
    VIDEO = "video",
    AUDIO = "audio",
    DOCUMENT = "document",
    LINK = "link"
}
/**
 * A generic type for metadata objects, allowing for arbitrary key-value pairs.
 * This encourages consumers to perform type checking or casting.
 */
export type Metadata = Record<string, unknown>;
//# sourceMappingURL=primitives.d.ts.map