import type { RemoteClawConfig } from "../../../../src/config/config.js"; import { type ResolvedAgentRoute, type RoutePeer } from "../../../../src/routing/resolve-route.js"; export declare function buildDiscordRoutePeer(params: { isDirectMessage: boolean; isGroupDm: boolean; directUserId?: string | null; conversationId: string; }): RoutePeer; /** * Resolve a Discord conversation route applying the operator `routing.unmatched` * policy. Returns `null` when the policy drops the message (silent drop + * telemetry) so the preflight handler can halt processing cleanly. */ export declare function resolveDiscordConversationRoute(params: { cfg: RemoteClawConfig; accountId?: string | null; guildId?: string | null; memberRoleIds?: string[]; peer: RoutePeer; parentConversationId?: string | null; }): ResolvedAgentRoute | null; /** * Resolve a Discord bound conversation route. Used by slash command handlers * which must always receive a usable route — callers invoke this synchronously * to pick an agent for command execution, and silent-drop is not appropriate * UX for user-initiated commands. Uses the backward-compatible * {@link resolveAgentRoute} which falls back to the first configured agent * when no binding matches and no catch-all is configured. */ export declare function resolveDiscordBoundConversationRoute(params: { cfg: RemoteClawConfig; accountId?: string | null; guildId?: string | null; memberRoleIds?: string[]; isDirectMessage: boolean; isGroupDm: boolean; directUserId?: string | null; conversationId: string; parentConversationId?: string | null; boundSessionKey?: string | null; configuredRoute?: { route: ResolvedAgentRoute; } | null; matchedBy?: ResolvedAgentRoute["matchedBy"]; }): ResolvedAgentRoute; export declare function resolveDiscordEffectiveRoute(params: { route: ResolvedAgentRoute; boundSessionKey?: string | null; configuredRoute?: { route: ResolvedAgentRoute; } | null; matchedBy?: ResolvedAgentRoute["matchedBy"]; }): ResolvedAgentRoute;