import { type ChannelKind } from "#setup/scaffold/index.js";
import type { DisabledChannelReasons } from "#setup/cli/index.js";
/**
 * Existing authored registrations that affect the scaffolded channel picker
 * or would conflict with a generated channel module.
 */
export interface ExistingChannelRegistrations {
    readonly disabledChannelReasons: DisabledChannelReasons;
    readonly webRouteOwners: readonly string[];
    readonly slackOwners: readonly string[];
    /**
     * Whether the Next.js Web Chat app is already in place (the project depends
     * on `next`). Owning the session route alone (`webRouteOwners`) does not
     * imply the app: every scaffolded agent has `agent/channels/eve.ts` for the
     * dev REPL, while the app only arrives via `--web` or the web scaffold.
     */
    readonly webAppPresent: boolean;
}
/**
 * Inspects compiled authored channels so custom filenames still disable the
 * scaffold option for the channel behavior they register.
 */
export declare function inspectExistingChannelRegistrations(projectRoot: string): Promise<ExistingChannelRegistrations>;
/**
 * Rejects scaffolding when another authored module already owns behavior
 * emitted by the generated channel module.
 */
export declare function assertCanAddSelectedChannels(selectedChannels: readonly ChannelKind[], registrations: ExistingChannelRegistrations): void;
