import type { ChannelOnboardingAdapter } from "./onboarding-types.js"; import type { ChannelAuthAdapter, ChannelCommandAdapter, ChannelConfigAdapter, ChannelDirectoryAdapter, ChannelResolverAdapter, ChannelElevatedAdapter, ChannelGatewayAdapter, ChannelGroupAdapter, ChannelHeartbeatAdapter, ChannelOutboundAdapter, ChannelPairingAdapter, ChannelSecurityAdapter, ChannelSetupAdapter, ChannelStatusAdapter } from "./types.adapters.js"; import type { ChannelKoiTool, ChannelKoiToolFactory, ChannelCapabilities, ChannelId, ChannelKoiPromptAdapter, ChannelMentionAdapter, ChannelMessageActionAdapter, ChannelMessagingAdapter, ChannelMeta, ChannelStreamingAdapter, ChannelThreadingAdapter } from "./types.core.js"; export type ChannelConfigUiHint = { label?: string; help?: string; advanced?: boolean; sensitive?: boolean; placeholder?: string; itemTemplate?: unknown; }; export type ChannelConfigSchema = { schema: Record; uiHints?: Record; }; export type ChannelPlugin = { id: ChannelId; meta: ChannelMeta; capabilities: ChannelCapabilities; defaults?: { queue?: { debounceMs?: number; }; }; reload?: { configPrefixes: string[]; noopPrefixes?: string[]; }; onboarding?: ChannelOnboardingAdapter; config: ChannelConfigAdapter; configSchema?: ChannelConfigSchema; setup?: ChannelSetupAdapter; pairing?: ChannelPairingAdapter; security?: ChannelSecurityAdapter; groups?: ChannelGroupAdapter; mentions?: ChannelMentionAdapter; outbound?: ChannelOutboundAdapter; status?: ChannelStatusAdapter; gatewayMethods?: string[]; gateway?: ChannelGatewayAdapter; auth?: ChannelAuthAdapter; elevated?: ChannelElevatedAdapter; commands?: ChannelCommandAdapter; streaming?: ChannelStreamingAdapter; threading?: ChannelThreadingAdapter; messaging?: ChannelMessagingAdapter; koiPrompt?: ChannelKoiPromptAdapter; directory?: ChannelDirectoryAdapter; resolver?: ChannelResolverAdapter; actions?: ChannelMessageActionAdapter; heartbeat?: ChannelHeartbeatAdapter; koiTools?: ChannelKoiToolFactory | ChannelKoiTool[]; };