/**
 * Static catalog of official and vendor-official Chat SDK adapters.
 *
 * This module imports no adapter packages and no provider SDKs, so it is safe
 * to use from build scripts, setup screens, and onboarding flows that only need
 * package metadata and environment-variable requirements.
 *
 * @example List every cataloged adapter.
 * ```typescript
 * import { ADAPTER_NAMES, getAdapter } from "chat/adapters";
 *
 * for (const slug of ADAPTER_NAMES) {
 *   const adapter = getAdapter(slug);
 *   console.log(adapter.name, adapter.packageName);
 * }
 * ```
 *
 * @example Find secrets for one adapter.
 * ```typescript
 * import { getSecretEnvVars } from "chat/adapters";
 *
 * const keys = getSecretEnvVars("slack").map((envVar) => envVar.key);
 * ```
 */
/**
 * A single environment variable referenced by an adapter.
 */
interface EnvVar {
    /**
     * Alternative variable names accepted for the same value.
     */
    aliases?: readonly string[];
    /**
     * Short description of what the value configures.
     */
    description: string;
    /**
     * Canonical environment variable name.
     */
    key: string;
    /**
     * Whether the value is a credential, token, secret, or password that should
     * be masked in logs and user interfaces.
     */
    secret: boolean;
}
/**
 * One self-contained way to satisfy an adapter's credential requirements.
 *
 * Use {@link AdapterEnvSpec.credentialModes} when an adapter supports multiple
 * mutually exclusive authentication paths.
 */
interface EnvGroup {
    /**
     * Human-readable name for this credential mode.
     */
    label: string;
    /**
     * Variables that together satisfy this mode.
     */
    vars: readonly EnvVar[];
}
/**
 * Environment variables and constructor-only configuration for an adapter.
 */
interface AdapterEnvSpec {
    /**
     * Constructor options that have no environment-variable equivalent.
     */
    config?: readonly string[];
    /**
     * Mutually exclusive credential modes. A caller usually satisfies exactly
     * one group.
     */
    credentialModes?: readonly EnvGroup[];
    /**
     * Additional caveats that do not fit the structured fields.
     */
    notes?: string;
    /**
     * Optional environment variables that tune behavior but are safe to omit.
     */
    optional?: readonly EnvVar[];
    /**
     * Variables needed regardless of credential mode.
     */
    required?: readonly EnvVar[];
}
/**
 * Metadata for one cataloged Chat SDK adapter.
 */
interface CatalogAdapter {
    /**
     * One-line summary of what the adapter connects to.
     */
    description: string;
    /**
     * Environment variables and constructor-only configuration.
     */
    env: AdapterEnvSpec;
    /**
     * Named factory export from {@link CatalogAdapter.packageName}.
     */
    factoryExport: string;
    /**
     * Catalog group used by the docs adapter listing.
     */
    group: "official" | "vendor-official";
    /**
     * Display name.
     */
    name: string;
    /**
     * NPM package that provides the adapter implementation.
     */
    packageName: string;
    /**
     * Runtime packages the adapter expects the consuming app to provide or
     * install alongside it.
     */
    peerDeps: readonly string[];
    /**
     * Stable catalog slug.
     */
    slug: string;
    /**
     * Whether the adapter connects to a messaging platform or stores Chat SDK
     * state.
     */
    type: "platform" | "state";
}
/**
 * Official and vendor-official adapters keyed by slug.
 */
declare const ADAPTERS: {
    readonly agentphone: {
        readonly description: "Unified SMS, MMS, iMessage, and voice adapter for Chat SDK with HMAC-verified webhooks, iMessage reactions, and voice call transcripts via AgentPhone.";
        readonly env: {
            readonly config: readonly ["apiUrl", "userName"];
            readonly optional: readonly [EnvVar];
            readonly required: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createAgentPhoneAdapter";
        readonly group: "vendor-official";
        readonly name: "AgentPhone";
        readonly packageName: "@agentphone/chat-sdk-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "agentphone";
        readonly type: "platform";
    };
    readonly discord: {
        readonly description: "Create Discord bots with slash commands, threads, and rich embeds.";
        readonly env: {
            readonly optional: readonly [EnvVar, EnvVar];
            readonly required: readonly [EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createDiscordAdapter";
        readonly group: "official";
        readonly name: "Discord";
        readonly packageName: "@chat-adapter/discord";
        readonly peerDeps: readonly ["discord-api-types", "discord-interactions", "discord.js"];
        readonly slug: "discord";
        readonly type: "platform";
    };
    readonly github: {
        readonly description: "Build bots that respond to pull request and issue comment threads.";
        readonly env: {
            readonly credentialModes: readonly [{
                readonly label: "Personal access token";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "GitHub App";
                readonly vars: readonly [EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar];
            readonly required: readonly [EnvVar];
        };
        readonly factoryExport: "createGitHubAdapter";
        readonly group: "official";
        readonly name: "GitHub";
        readonly packageName: "@chat-adapter/github";
        readonly peerDeps: readonly ["@octokit/auth-app", "@octokit/rest"];
        readonly slug: "github";
        readonly type: "platform";
    };
    readonly gchat: {
        readonly description: "Integrate with Google Chat spaces for team collaboration and automated workflows.";
        readonly env: {
            readonly credentialModes: readonly [{
                readonly label: "Service account credentials";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "Application Default Credentials";
                readonly vars: readonly [EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createGoogleChatAdapter";
        readonly group: "official";
        readonly name: "Google Chat";
        readonly packageName: "@chat-adapter/gchat";
        readonly peerDeps: readonly ["@googleapis/chat", "@googleapis/workspaceevents"];
        readonly slug: "gchat";
        readonly type: "platform";
    };
    readonly ioredis: {
        readonly description: "Redis state adapter using ioredis with cluster and sentinel support.";
        readonly env: {
            readonly config: readonly ["url or client", "keyPrefix"];
            readonly notes: "Either a Redis URL or an existing ioredis client is required.";
        };
        readonly factoryExport: "createIoRedisState";
        readonly group: "official";
        readonly name: "ioredis";
        readonly packageName: "@chat-adapter/state-ioredis";
        readonly peerDeps: readonly ["ioredis"];
        readonly slug: "ioredis";
        readonly type: "state";
    };
    readonly kapso: {
        readonly description: "Kapso-first WhatsApp adapter for Chat SDK with signed Kapso webhooks, WhatsApp replies, buttons, media, reactions, and conversation history.";
        readonly env: {
            readonly config: readonly ["client", "verifyWebhookSignatures", "appSecret", "webhookVerifyToken", "historyFields", "cacheSize", "logger", "debug"];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar];
            readonly required: readonly [EnvVar];
        };
        readonly factoryExport: "createKapsoAdapter";
        readonly group: "vendor-official";
        readonly name: "Kapso";
        readonly packageName: "@kapso/chat-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "kapso";
        readonly type: "platform";
    };
    readonly lark: {
        readonly description: "Lark / Feishu adapter for Chat SDK with native cardkit streaming, interactive cards, and reactions.";
        readonly env: {
            readonly optional: readonly [EnvVar];
            readonly required: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createLarkAdapter";
        readonly group: "vendor-official";
        readonly name: "Lark / Feishu";
        readonly packageName: "@larksuite/vercel-chat-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "lark";
        readonly type: "platform";
    };
    readonly linear: {
        readonly description: "Automate Linear issue comment threads with bot responses and workflows.";
        readonly env: {
            readonly credentialModes: readonly [{
                readonly label: "Personal API key";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "Access token";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "Client credentials";
                readonly vars: readonly [EnvVar, EnvVar];
            }, {
                readonly label: "OAuth app";
                readonly vars: readonly [EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar];
            readonly required: readonly [EnvVar];
        };
        readonly factoryExport: "createLinearAdapter";
        readonly group: "official";
        readonly name: "Linear";
        readonly packageName: "@chat-adapter/linear";
        readonly peerDeps: readonly ["@linear/sdk"];
        readonly slug: "linear";
        readonly type: "platform";
    };
    readonly liveblocks: {
        readonly description: "Liveblocks Comments adapter for building conversational bots on top of Liveblocks rooms, threads, and comments.";
        readonly env: {
            readonly config: readonly ["botUserId", "botUserName", "resolveUsers", "resolveGroupsInfo"];
            readonly required: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createLiveblocksAdapter";
        readonly group: "vendor-official";
        readonly name: "Liveblocks";
        readonly packageName: "@liveblocks/chat-sdk-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "liveblocks";
        readonly type: "platform";
    };
    readonly matrix: {
        readonly description: "Matrix adapter for Chat SDK, built and maintained by Beeper.";
        readonly env: {
            readonly config: readonly ["recoveryKey", "commandPrefix", "roomAllowlist", "inviteAutoJoin", "e2ee", "persistence"];
            readonly credentialModes: readonly [{
                readonly label: "Access token";
                readonly vars: readonly [EnvVar, EnvVar];
            }, {
                readonly label: "Username and password";
                readonly vars: readonly [EnvVar, EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createMatrixAdapter";
        readonly group: "vendor-official";
        readonly name: "Beeper Matrix";
        readonly packageName: "@beeper/chat-adapter-matrix";
        readonly peerDeps: readonly [];
        readonly slug: "matrix";
        readonly type: "platform";
    };
    readonly memory: {
        readonly description: "In-memory state adapter for development and testing environments.";
        readonly env: {
            readonly notes: "No environment variables are required. State is kept in the current process.";
        };
        readonly factoryExport: "createMemoryState";
        readonly group: "official";
        readonly name: "Memory";
        readonly packageName: "@chat-adapter/state-memory";
        readonly peerDeps: readonly [];
        readonly slug: "memory";
        readonly type: "state";
    };
    readonly messenger: {
        readonly description: "Build bots for Facebook Messenger with support for templates, buttons, reactions, and postbacks.";
        readonly env: {
            readonly config: readonly ["apiVersion", "userName"];
            readonly required: readonly [EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createMessengerAdapter";
        readonly group: "official";
        readonly name: "Messenger";
        readonly packageName: "@chat-adapter/messenger";
        readonly peerDeps: readonly [];
        readonly slug: "messenger";
        readonly type: "platform";
    };
    readonly postgres: {
        readonly description: "Production state adapter using PostgreSQL for persistence and distributed locking.";
        readonly env: {
            readonly config: readonly ["client", "keyPrefix", "schemaName"];
            readonly credentialModes: readonly [{
                readonly label: "Connection URL";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "Existing client";
                readonly vars: readonly [];
            }];
        };
        readonly factoryExport: "createPostgresState";
        readonly group: "official";
        readonly name: "PostgreSQL";
        readonly packageName: "@chat-adapter/state-pg";
        readonly peerDeps: readonly ["pg"];
        readonly slug: "postgres";
        readonly type: "state";
    };
    readonly redis: {
        readonly description: "Production-ready state adapter using Redis for persistence and distributed locking.";
        readonly env: {
            readonly config: readonly ["client", "keyPrefix"];
            readonly credentialModes: readonly [{
                readonly label: "Connection URL";
                readonly vars: readonly [EnvVar];
            }, {
                readonly label: "Existing client";
                readonly vars: readonly [];
            }];
        };
        readonly factoryExport: "createRedisState";
        readonly group: "official";
        readonly name: "Redis";
        readonly packageName: "@chat-adapter/state-redis";
        readonly peerDeps: readonly ["redis"];
        readonly slug: "redis";
        readonly type: "state";
    };
    readonly resend: {
        readonly description: "Bidirectional email adapter for Chat SDK with threading, rich HTML emails, and attachment support via Resend.";
        readonly env: {
            readonly config: readonly ["fromAddress", "fromName"];
            readonly required: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createResendAdapter";
        readonly group: "vendor-official";
        readonly name: "Resend";
        readonly packageName: "@resend/chat-sdk-adapter";
        readonly peerDeps: readonly ["@chat-adapter/shared"];
        readonly slug: "resend";
        readonly type: "platform";
    };
    readonly sendblue: {
        readonly description: "iMessage, SMS, and RCS adapter for Chat SDK, built and maintained by Sendblue.";
        readonly env: {
            readonly config: readonly ["webhookSecretHeader", "allowedServices"];
            readonly optional: readonly [EnvVar, EnvVar];
            readonly required: readonly [EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createSendblueAdapter";
        readonly group: "vendor-official";
        readonly name: "Sendblue";
        readonly packageName: "chat-adapter-sendblue";
        readonly peerDeps: readonly [];
        readonly slug: "sendblue";
        readonly type: "platform";
    };
    readonly slack: {
        readonly description: "Build bots for Slack workspaces with full support for threads, reactions, and interactive messages.";
        readonly env: {
            readonly credentialModes: readonly [{
                readonly label: "Single workspace bot token";
                readonly vars: readonly [EnvVar, EnvVar];
            }, {
                readonly label: "Multi-workspace OAuth";
                readonly vars: readonly [EnvVar, EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createSlackAdapter";
        readonly group: "official";
        readonly name: "Slack";
        readonly packageName: "@chat-adapter/slack";
        readonly peerDeps: readonly ["@slack/socket-mode", "@slack/web-api"];
        readonly slug: "slack";
        readonly type: "platform";
    };
    readonly teams: {
        readonly description: "Deploy bots to Microsoft Teams with adaptive cards, mentions, and conversation threading.";
        readonly env: {
            readonly credentialModes: readonly [{
                readonly label: "Bot Framework client secret";
                readonly vars: readonly [EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createTeamsAdapter";
        readonly group: "official";
        readonly name: "Microsoft Teams";
        readonly packageName: "@chat-adapter/teams";
        readonly peerDeps: readonly ["@microsoft/teams.api", "@microsoft/teams.apps", "@microsoft/teams.cards", "@microsoft/teams.graph-endpoints"];
        readonly slug: "teams";
        readonly type: "platform";
    };
    readonly telegram: {
        readonly description: "Connect to Telegram with support for groups, channels, and inline keyboards.";
        readonly env: {
            readonly optional: readonly [EnvVar, EnvVar, EnvVar];
            readonly required: readonly [EnvVar];
        };
        readonly factoryExport: "createTelegramAdapter";
        readonly group: "official";
        readonly name: "Telegram";
        readonly packageName: "@chat-adapter/telegram";
        readonly peerDeps: readonly [];
        readonly slug: "telegram";
        readonly type: "platform";
    };
    readonly twilio: {
        readonly description: "Build SMS and MMS bots with Twilio Messaging webhooks and the Messages API.";
        readonly env: {
            readonly config: readonly ["webhookUrl", "webhookVerifier", "statusCallbackUrl", "apiUrl"];
            readonly credentialModes: readonly [{
                readonly label: "Account credentials";
                readonly vars: readonly [EnvVar, EnvVar];
            }];
            readonly optional: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createTwilioAdapter";
        readonly group: "official";
        readonly name: "Twilio";
        readonly packageName: "@chat-adapter/twilio";
        readonly peerDeps: readonly [];
        readonly slug: "twilio";
        readonly type: "platform";
    };
    readonly velt: {
        readonly description: "Velt Comments adapter for building bots that read and respond in Velt comment threads on documents, text editors, and canvases.";
        readonly env: {
            readonly config: readonly ["botUserId", "botUserName", "webhookVersion", "resolveUsers", "selfHostingConfig"];
            readonly optional: readonly [EnvVar, EnvVar];
            readonly required: readonly [EnvVar, EnvVar];
        };
        readonly factoryExport: "createVeltAdapter";
        readonly group: "vendor-official";
        readonly name: "Velt";
        readonly packageName: "@veltdev/chat-sdk-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "velt";
        readonly type: "platform";
    };
    readonly web: {
        readonly description: "Serve a browser chat UI from the same bot using the AI SDK useChat protocol — works out of the box with @ai-sdk/react and ai-elements.";
        readonly env: {
            readonly config: readonly ["userName", "getUser", "persistMessageHistory", "threadIdFor"];
            readonly notes: "The Web adapter delegates browser request authentication to the getUser config function.";
        };
        readonly factoryExport: "createWebAdapter";
        readonly group: "official";
        readonly name: "Web";
        readonly packageName: "@chat-adapter/web";
        readonly peerDeps: readonly [];
        readonly slug: "web";
        readonly type: "platform";
    };
    readonly whatsapp: {
        readonly description: "Connect to WhatsApp Business Cloud for customer messaging and automated conversations.";
        readonly env: {
            readonly optional: readonly [EnvVar, EnvVar];
            readonly required: readonly [EnvVar, EnvVar, EnvVar, EnvVar];
        };
        readonly factoryExport: "createWhatsAppAdapter";
        readonly group: "official";
        readonly name: "WhatsApp Business Cloud";
        readonly packageName: "@chat-adapter/whatsapp";
        readonly peerDeps: readonly [];
        readonly slug: "whatsapp";
        readonly type: "platform";
    };
    readonly zernio: {
        readonly description: "Unified social media DM adapter covering Instagram, Facebook, Telegram, WhatsApp, X/Twitter, Bluesky, and Reddit through a single integration.";
        readonly env: {
            readonly optional: readonly [EnvVar, EnvVar, EnvVar];
            readonly required: readonly [EnvVar];
        };
        readonly factoryExport: "createZernioAdapter";
        readonly group: "vendor-official";
        readonly name: "Zernio";
        readonly packageName: "@zernio/chat-sdk-adapter";
        readonly peerDeps: readonly [];
        readonly slug: "zernio";
        readonly type: "platform";
    };
};
/**
 * Slug for any adapter in the catalog.
 */
type AdapterSlug = keyof typeof ADAPTERS;
/**
 * All cataloged adapter slugs, sorted alphabetically.
 */
declare const ADAPTER_NAMES: AdapterSlug[];
/**
 * Return every cataloged platform adapter sorted by slug.
 *
 * @returns Catalog entries whose {@link CatalogAdapter.type} is `"platform"`.
 */
declare const listPlatformAdapters: () => readonly CatalogAdapter[];
/**
 * Return every cataloged state adapter sorted by slug.
 *
 * @returns Catalog entries whose {@link CatalogAdapter.type} is `"state"`.
 */
declare const listStateAdapters: () => readonly CatalogAdapter[];
/**
 * Check whether a string is a known adapter slug.
 *
 * @param slug - Candidate adapter slug.
 * @returns Whether the slug exists in {@link ADAPTERS}.
 *
 * @example
 * ```typescript
 * if (isAdapterSlug(input)) {
 *   const adapter = getAdapter(input);
 * }
 * ```
 */
declare const isAdapterSlug: (slug: string) => slug is AdapterSlug;
/**
 * Look up a catalog entry by slug.
 *
 * @param slug - Adapter slug to look up.
 * @returns The catalog entry for known slugs, otherwise `undefined`.
 */
declare function getAdapter(slug: AdapterSlug): CatalogAdapter;
declare function getAdapter(slug: string): CatalogAdapter | undefined;
/**
 * Flatten every environment variable referenced by an adapter.
 *
 * Variables are returned in declaration order and de-duplicated by canonical
 * key. Unknown slugs return an empty array.
 *
 * @param slug - Adapter slug to inspect.
 * @returns Environment variables declared by the adapter entry.
 */
declare const listEnvVars: (slug: string) => readonly EnvVar[];
/**
 * Return only secret environment variables for an adapter.
 *
 * @param slug - Adapter slug to inspect.
 * @returns Secret variables declared by the adapter entry.
 */
declare const getSecretEnvVars: (slug: string) => readonly EnvVar[];

export { ADAPTERS, ADAPTER_NAMES, type AdapterEnvSpec, type AdapterSlug, type CatalogAdapter, type EnvGroup, type EnvVar, getAdapter, getSecretEnvVars, isAdapterSlug, listEnvVars, listPlatformAdapters, listStateAdapters };
