import type { ChannelAdapter } from "#channel/adapter.js"; import type { RouteDefinition, SendFn } from "#channel/routes.js"; import type { Session } from "#channel/session.js"; import type { SessionAuthContext } from "#channel/types.js"; export declare const CHANNEL_SENTINEL: "eve:channel"; export interface CompiledChannel, TMetadata extends Record = Record> { readonly __kind: typeof CHANNEL_SENTINEL; readonly routes: readonly RouteDefinition[]; readonly adapter: ChannelAdapter; readonly __metadata?: TMetadata; readonly receive?: (input: { readonly message: string; readonly target: Readonly; readonly auth: SessionAuthContext | null; }, args: { send: SendFn; }) => Promise; } export declare function isCompiledChannel(value: unknown): value is CompiledChannel; export declare function getChannelInstrumentationKind(value: unknown): string | undefined; export declare function setChannelInstrumentationKind(channel: CompiledChannel, kind: string): void;