/**
 * Connection template loading.
 *
 * Connections are pre-built Route templates (JSON files) that ship with
 * the package in the connections/ directory, organized into category
 * subdirectories (ai/, messaging/, social-media/, etc.).
 *
 * At runtime, templates are loaded from disk relative to this module's
 * location, so they work from both src/ (dev via tsx) and dist/ (production).
 */
import type { Route, ConnectionCategory } from './config.js';
/** Metadata about a built-in connection template — used by UIs to render
 *  connection cards, form fields, and badges without parsing raw JSON. */
export interface ConnectionTemplateInfo {
    /** Template alias / filename (e.g., "github", "slack"). */
    alias: string;
    /** Human-readable name (e.g., "GitHub API"). */
    name: string;
    /** Short description of the connection's purpose. */
    description?: string;
    /** Link to API documentation. */
    docsUrl?: string;
    /** URL to an OpenAPI / Swagger spec. */
    openApiUrl?: string;
    /** Stability level: "stable", "beta", or "dev". */
    stability: 'stable' | 'beta' | 'dev';
    /** Category grouping (e.g., "ai", "messaging", "social-media"). */
    category: ConnectionCategory;
    /** Secret names referenced in route headers — these are auto-injected
     *  into every request, so they must always be configured. */
    requiredSecrets: string[];
    /** Secret names defined in the template but NOT referenced in headers.
     *  Used by ingestors, URL placeholders, body templates, etc. */
    optionalSecrets: string[];
    /** Whether this connection has an ingestor for real-time events. */
    hasIngestor: boolean;
    /** Ingestor type, when present. */
    ingestorType?: 'websocket' | 'webhook' | 'poll';
    /** Whether this connection has a pre-configured test request. */
    hasTestConnection: boolean;
    /** Whether this connection's ingestor has a pre-configured test. */
    hasTestIngestor: boolean;
    /** Whether this connection has a listener configuration schema. */
    hasListenerConfig: boolean;
    /** Whether this connection's listener supports multiple concurrent instances
     *  (e.g., watching multiple Trello boards or Reddit subreddits simultaneously). */
    supportsMultiInstance: boolean;
    /** Allowlisted URL patterns (glob). */
    allowedEndpoints: string[];
}
/** Invalidate the cached index. Exported for testing only. */
export declare function _resetConnectionIndex(): void;
/**
 * Load a single connection template by name.
 *
 * @param name — Connection name (e.g., "github", "stripe", "trello").
 *               Must match the filename without the .json extension.
 * @returns The parsed Route object from the template.
 * @throws If the template file does not exist or contains invalid JSON.
 */
export declare function loadConnection(name: string): Route;
/**
 * List all available connection template names.
 *
 * Scans the connections directory (including category subdirectories) for
 * .json files and returns their basenames (without extension), sorted
 * alphabetically.
 */
export declare function listAvailableConnections(): string[];
/**
 * List all available connection templates with structured metadata.
 *
 * For each built-in template, returns its name, description, docs links,
 * secrets (categorized as required vs. optional), ingestor info, and
 * allowed endpoints.
 *
 * Secret categorization:
 *   - **required** — referenced in route `headers` values (auto-injected
 *     into every outgoing request, so they must always be configured).
 *   - **optional** — defined in the template's `secrets` map but not
 *     referenced in headers (used by ingestors, URL placeholders, etc.).
 *
 * Used by:
 *   - callboard's ConnectionManager (local mode, direct import)
 *   - admin_list_connection_templates tool handler (remote mode, Stage 3)
 */
export declare function listConnectionTemplates(): ConnectionTemplateInfo[];
//# sourceMappingURL=connections.d.ts.map