import { type DispatchMiddleware } from "./dispatch-middleware.js";
export interface WithInboundDedupeOptions {
    /**
     * Override the predicate. Defaults to the production
     * `shouldSkipDuplicateInbound`. Tests can supply a fake.
     */
    isDuplicate?: (ctx: import("../templating.js").FinalizedMsgContext) => boolean;
    /**
     * Notification fired when a duplicate is dropped. Useful for telemetry
     * counters; production uses verbose logging.
     */
    onDuplicate?: (info: {
        messageId?: string;
    }) => void;
}
/**
 * Returns a DispatchMiddleware that drops duplicate inbound messages.
 * When `shouldSkipDuplicateInbound(ctx)` is true, returns the "skipped"
 * outcome with `reason: "duplicate"`. Otherwise proceeds.
 */
export declare function withInboundDedupe(opts?: WithInboundDedupeOptions): DispatchMiddleware;
