/**
 * PostHog product classification for MCP `exec` sub-tools.
 *
 * The PostHog MCP exposes a single `exec` dispatcher whose `call <sub-tool> …`
 * verb invokes a concrete resource tool (e.g. `experiment-list`,
 * `feature-flag-update`, `execute-sql`, `query-trends`). The sub-tool name is
 * `<domain>-<action>` (or `query-<type>`), and the domain identifies which
 * PostHog product the call touched.
 *
 * `classifyPostHogSubTool` turns a sub-tool name into a stable product id so the
 * agent can report, per turn, which products an answer was grounded in. This is
 * the single source of truth for the product id → label set; the renderer maps
 * ids to icons/styling for display.
 */
/** Canonical PostHog products, keyed by stable id with a display label. */
declare const POSTHOG_PRODUCTS: {
    readonly product_analytics: "Product analytics";
    readonly web_analytics: "Web analytics";
    readonly feature_flags: "Feature flags";
    readonly experiments: "Experiments";
    readonly error_tracking: "Error tracking";
    readonly session_replay: "Session replay";
    readonly surveys: "Surveys";
    readonly llm_analytics: "AI observability";
    readonly data_warehouse: "Data warehouse";
    readonly cdp: "Data pipelines";
    readonly logs: "Logs";
    readonly apm: "APM";
    readonly sql: "SQL";
};
type PostHogProductId = keyof typeof POSTHOG_PRODUCTS;
/**
 * Map a HogQL/SQL query to the products whose tables it reads. A query can
 * touch several tables, so this returns 0..n products (deduped). Returns an
 * empty array when no referenced table maps to a known product.
 */
declare function classifyPostHogSqlQuery(sql: string): PostHogProductId[];
/**
 * Classify an executed MCP exec `call` into the products it touched. For
 * `execute-sql` the query text is inspected so the call is attributed to the
 * product whose tables it reads (e.g. Feature flags), falling back to the
 * generic "sql" product only when no table maps. Activity-log reads are
 * attributed by their `scope` argument. All other sub-tools resolve to their
 * single domain product (or none, for admin/meta domains).
 *
 * `commandText` is the raw exec command (which embeds the SQL for execute-sql
 * and the scope JSON for activity-log reads).
 */
declare function classifyPostHogExecCall(subTool: string, commandText?: string): PostHogProductId[];
/**
 * Map a PostHog MCP `call` sub-tool (e.g. `feature-flag-update`, `query-trends`)
 * to a product id. Returns `null` when the name is empty, or when the domain is
 * one we don't surface — either a known admin/meta domain or an unrecognized
 * one (no point in a generic "PostHog" chip inside a PostHog-resources bar).
 */
declare function classifyPostHogSubTool(subTool: string): PostHogProductId | null;
/**
 * True when a `call` sub-tool is a PostHog resource call we don't recognize at
 * all: not a query/execute-sql/activity-log call and matching no known domain,
 * so it surfaces no product chip. Distinct from a domain we deliberately
 * suppress (project, docs-search, …), which is recognized and returns `null` on
 * purpose. Lets callers log genuinely-unknown calls so `DOMAIN_PRODUCT` can be
 * expanded deliberately instead of silently dropping them.
 */
declare function isUnclassifiedPostHogSubTool(subTool: string): boolean;

export { POSTHOG_PRODUCTS, type PostHogProductId, classifyPostHogExecCall, classifyPostHogSqlQuery, classifyPostHogSubTool, isUnclassifiedPostHogSubTool };
