import type { DeliverHookPayload } from "#channel/types.js";
import type { AlsContext } from "#context/container.js";
import type { InstrumentationChannelDeliveryOutcome, InstrumentationHooks } from "#instrumentation/lifecycle.js";
export interface ChannelDeliveryStartInstrumentation {
    readonly agentName?: string;
    readonly ctx: AlsContext;
    readonly delivery: DeliverHookPayload;
    readonly hooks: InstrumentationHooks | undefined;
    readonly policyAgentName: string;
    readonly rootSessionId: string;
    readonly sequence: number;
    readonly sessionId: string;
    readonly turnId: string;
}
export interface ChannelDeliveryTerminalInstrumentation {
    readonly ctx: AlsContext;
    readonly error?: unknown;
    readonly errorCode?: string;
    readonly hooks: InstrumentationHooks | undefined;
    readonly includeTurn: boolean;
    readonly outcome: InstrumentationChannelDeliveryOutcome;
}
export declare function instrumentChannelDelivery(input: ChannelDeliveryStartInstrumentation | ChannelDeliveryTerminalInstrumentation): Promise<void>;
