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<TState = undefined, TReceiveTarget = Record<string, unknown>, TMetadata extends Record<string, unknown> = Record<string, unknown>> {
    readonly __kind: typeof CHANNEL_SENTINEL;
    readonly routes: readonly RouteDefinition<TState>[];
    readonly adapter: ChannelAdapter<any>;
    readonly __metadata?: TMetadata;
    readonly receive?: (input: {
        readonly message: string;
        readonly target: Readonly<TReceiveTarget>;
        readonly auth: SessionAuthContext | null;
    }, args: {
        send: SendFn<TState>;
    }) => Promise<Session>;
}
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;
