/**
 * agent-manifest — Machine-readable description of the CLI surface.
 *
 * Exposed via `amplitude-wizard help --json` so AI coding agents can
 * introspect the available commands, flags, env vars, and exit codes
 * without parsing human help text.
 *
 * Kept hand-maintained (rather than auto-generated from yargs internals)
 * so it stays a stable contract that changes only intentionally.
 */
export interface CommandFlag {
    name: string;
    describe: string;
    type: 'string' | 'boolean' | 'number';
    default?: string | boolean | number;
}
export interface CommandEntry {
    command: string;
    describe: string;
    flags?: CommandFlag[];
    subcommands?: CommandEntry[];
    outputs?: 'human' | 'json' | 'ndjson' | 'both';
}
export interface AgentManifest {
    schemaVersion: 1;
    bin: string;
    /** npm package name, for `npx <package>` invocation. */
    package: string;
    /**
     * Ordered list of ways to invoke the CLI. The first entry is the
     * recommended form — agents should use it unless they know the CLI
     * is globally installed. Each entry is an argv prefix that precedes
     * the verb and flags (e.g. `[...invocation, 'detect', '--json']`).
     */
    invocations: Array<{
        argv: string[];
        describe: string;
        requiresGlobalInstall: boolean;
    }>;
    description: string;
    /**
     * Amplitude's data-model terminology — surfaces the hierarchy so agents
     * reading the manifest know that `org`, `project`, `app`, and
     * `environment` are nested, not synonyms. Without this, agents tend to
     * confuse `--env` (Amplitude environment) with environment variables, or
     * `project` with a directory path. Canonical terms align with the
     * amplitude/amplitude (Python `app_id`, `orgs` table) and
     * amplitude/javascript (`App` GraphQL type, `appId`) monorepos — not
     * Amplitude's UI surface, which sometimes says "Project ID" for app.id.
     * Note: the backend still calls the project-level container a "workspace"
     * internally (GraphQL `workspaces` field, legacy `WorkspaceId` in
     * ampli.json); the manifest uses the user-facing "project" term.
     */
    concepts: {
        hierarchy: string[];
        glossary: Array<{
            term: string;
            describe: string;
        }>;
    };
    globalFlags: CommandFlag[];
    env: Array<{
        name: string;
        describe: string;
    }>;
    exitCodes: Array<{
        code: number;
        name: string;
        describe: string;
    }>;
    commands: CommandEntry[];
    ndjsonSchemaVersion: 1;
}
export declare function getAgentManifest(): AgentManifest;
