/**
 * Transport resolution: map a user-facing channel name to the provider that
 * actually delivers it, using `notify.transports` from agents.yaml.
 *
 * Default is name-identity (`--channel slack` -> `slack` provider) — NOT a
 * fallback to a different transport. Only telegram is dual-homed (rush vs
 * openclaw-telegram); config picks.
 *
 * Two entry points, deliberately: `lookupTransport` *returns* the failure, for
 * long-lived callers (the monitor daemon, the feed-dispatch loop) that must
 * survive a bad channel name; `resolveTransport` `die()`s on it, for the
 * interactive `agents send` / `agents notify` command path where exiting with a
 * loud message is the right answer. Never give a daemon the dying one.
 */
import type { Meta } from '../types.js';
import { type ChannelProvider } from './registry.js';
export interface TransportLookup {
    /** Provider name after applying the `notify.transports` mapping. */
    providerName: string;
    /** Registered provider, or undefined when `providerName` resolves to nothing. */
    provider?: ChannelProvider;
    /** Why resolution failed — set exactly when `provider` is undefined. */
    error?: string;
}
/** Resolve a channel to its provider, returning the failure instead of exiting. */
export declare function lookupTransport(channel: string, meta: Meta): TransportLookup;
/** Interactive-command resolution: an unregistered provider dies loud. */
export declare function resolveTransport(channel: string, meta: Meta): ChannelProvider;
