import type { AgentMessage } from "@gajae-code/agent-core"; export type IrcMessageKind = "incoming" | "autoreply" | "relay"; export type ParsedIrcMessage = { observationId: string; from: string; to: string; text: string; timestamp: number; kind: IrcMessageKind; }; export interface IrcMessageBlock { readonly sender: string; readonly recipient: string; readonly kind: "incoming" | "autoreply" | "outgoing"; readonly time: string; readonly bodyLines: readonly string[]; } export declare function projectIrcText(text: string, maxUtf8Bytes: number): { text: string; truncated: boolean; utf8Bytes: number; }; /** Normalizes and bounds untrusted IRC identity fields without splitting visible graphemes. */ export declare function normalizeIrcIdentity(identity: string): string; /** Formats IRC observations into display-neutral semantic blocks for both IRC surfaces. */ export declare function formatIrcMessageBlock(message: ParsedIrcMessage & { timestamp: number; }): IrcMessageBlock; type IrcCustomMessage = Extract; export declare function isIrcCustomType(customType: string | undefined): customType is `irc:${IrcMessageKind}`; /** * Normalizes every supported IRC custom message into its UI observation shape. * Legacy records have no UUID, so their immutable payload is used as a stable key. */ export declare function parseIrcMessage(message: IrcCustomMessage): ParsedIrcMessage | undefined; export {};