import { type ConversationRef } from "../infra/outbound/session-binding-service.js"; import type { PluginConversationBinding, PluginConversationBindingResolutionDecision, PluginConversationBindingRequestParams, PluginConversationBindingRequestResult } from "./conversation-binding.types.js"; type PluginBindingApprovalDecision = PluginConversationBindingResolutionDecision; type PluginBindingConversation = { channel: string; accountId: string; conversationId: string; parentConversationId?: string; threadId?: string | number; }; type PendingPluginBindingRequest = { id: string; pluginId: string; pluginName?: string; pluginRoot: string; conversation: PluginBindingConversation; requestedAt: number; requestedBySenderId?: string; summary?: string; detachHint?: string; data?: Record; }; type PluginBindingApprovalAction = { approvalId: string; decision: PluginBindingApprovalDecision; }; type PluginBindingMetadata = { pluginBindingOwner: "plugin"; pluginId: string; pluginName?: string; pluginRoot: string; summary?: string; detachHint?: string; data?: Record; }; type PluginBindingResolveResult = { status: "approved"; binding: PluginConversationBinding; request: PendingPluginBindingRequest; decision: Exclude; } | { status: "denied"; request: PendingPluginBindingRequest; } | { status: "expired"; }; export declare function isPluginOwnedBindingMetadata(metadata: unknown): metadata is PluginBindingMetadata; export declare function isPluginOwnedSessionBindingRecord(record: { metadata?: Record; } | null | undefined): boolean; export declare function toPluginConversationBinding(record: { bindingId: string; conversation: ConversationRef; boundAt: number; metadata?: Record; } | null | undefined): PluginConversationBinding | null; export declare function buildPluginBindingUnavailableText(binding: PluginConversationBinding): string; export declare function buildPluginBindingDeclinedText(binding: PluginConversationBinding): string; export declare function buildPluginBindingErrorText(binding: PluginConversationBinding): string; export declare function hasShownPluginBindingFallbackNotice(bindingId: string): boolean; export declare function markPluginBindingFallbackNoticeShown(bindingId: string): void; export declare function buildPluginBindingApprovalCustomId(approvalId: string, decision: PluginBindingApprovalDecision): string; export declare function parsePluginBindingApprovalCustomId(value: string): PluginBindingApprovalAction | null; export declare function requestPluginConversationBinding(params: { pluginId: string; pluginName?: string; pluginRoot: string; conversation: PluginBindingConversation; requestedBySenderId?: string; binding: PluginConversationBindingRequestParams | undefined; }): Promise; export declare function getCurrentPluginConversationBinding(params: { pluginRoot: string; conversation: PluginBindingConversation; }): Promise; export declare function detachPluginConversationBinding(params: { pluginRoot: string; conversation: PluginBindingConversation; }): Promise<{ removed: boolean; }>; export declare function resolvePluginConversationBindingApproval(params: { approvalId: string; decision: PluginBindingApprovalDecision; senderId?: string; }): Promise; export declare function buildPluginBindingResolvedText(params: PluginBindingResolveResult): string; export declare const __testing: { reset(): void; }; export {};