export type CanonSelfContextType = 'cross_session'; export interface CanonSelfContext { id: string; type: CanonSelfContextType; context: string; createdAt?: string | null; updatedAt?: string | null; } export interface SendContextualSelfContextInput { type: CanonSelfContextType; context: string; } export interface SendContextualMessageOptions { sourceConversationId: string; targetConversationId?: string; targetUserId?: string; text: string; selfContext: SendContextualSelfContextInput; sessionConfig?: import('@canonmsg/backend-contracts').VerbSessionConfig | null; sessionSelection?: import('./types.js').DirectSessionSelection; requestMessage?: string | null; messageOptions?: Omit; } export type SendContextualMessageResult = { status: 'messaged'; messageId: string; conversationId: string; selfContextId: string; created?: boolean; reused?: boolean; sessionSelection?: import('./types.js').DirectSessionSelection['mode']; } | { status: 'requested' | 'pending'; requestId: string | null; deferredIntentId?: string | null; } | { status: 'setup_required' | 'blocked' | 'unavailable' | 'no_session'; reason: string; }; export interface SelfContextPromptRenderOptions { maxSelfContexts?: number; } export declare function normalizeSelfContexts(selfContexts?: CanonSelfContext[] | null, options?: SelfContextPromptRenderOptions): CanonSelfContext[]; export declare function resolveMessageActiveSelfContextId(input: { messageId?: string | null; activeSelfContextId?: string | null; activeSelfContextIdByMessageId?: Record | null; }): string | null; export declare function selectActiveSelfContexts(selfContexts?: CanonSelfContext[] | null, activeSelfContextId?: string | null): CanonSelfContext[]; export declare function buildSelfContextPromptLines(selfContexts?: CanonSelfContext[] | null, options?: SelfContextPromptRenderOptions): string[];